All posts
    Engineering

    The Verifier's Blind Spot

    AltSlate LabsSeptember 4, 20268 min read

    A "self-improving" model cascade is supposed to cost less every round: answer most queries with a cheap model, escalate the hard ones to an expensive verifier, then fine-tune the cheap model on whatever the verifier rejected so it escalates less next time. We built that loop and measured it on real language models. It got quietly worse — and every dashboard we had said it was fine.

    0.12 → 0.55
    The verifier's blind spot grows as the cheap model improves
    peaks at 14B, then eases
    46% vs 39%
    Escalation rate against true error once you fix the blind spot
    the saving is gone
    3% → 32%
    Flat dashboard while true delivered error swung to a third
    blind by construction

    01 — the free lunch that isn't

    The loop everyone reaches for

    The standard move for cutting inference cost: answer most queries with a cheap student, escalate the hard ones to an expensive frontier verifier, then close the loop — retrain the student on the cases the verifier rejected so it needs the expensive model less each round.

    Cheaper over time, same quality. It looks like a free lunch, and it borrows its intuition from speculative decoding, where a small model drafts and a large one verifies losslessly. But semantic verification isn't lossless. The verifier is a judge, and judges are wrong in both directions. The moment you train a student to satisfy an imperfect verifier, you are optimising against a proxy — the classic setup for Goodhart's law.

    Blind spot: wrong answers acceptedQueryCheap studenttuned each roundanswerVerifierfrontier, expensiveacceptDeliverrejectTeacherfine-tune the student on rejects
    The self-improving cascade. Rejected answers earn a correction and retrain the student (violet). But the answers the verifier wrongly accepts ship unflagged and never enter training — the blind spot. The loop only ever learns from errors the verifier can already see.

    02 — finding one

    The blind spot is worst where you save money

    Hold the verifier fixed and make the student better. The blind spot — the share of the student's wrong answers the verifier waves through — doesn't shrink. It grows.

    A stronger student makes subtler, more convincing mistakes, and a fixed verifier catches fewer of them. In our runs the blind-spot rate climbed from 0.12 at 0.5B to a peak of 0.55 at 14B, easing only slightly at 32B. This is a capability-gap effect — not a model preferring its own text — and it carries a sharp warning: the problem gets worse as your cheap model improves, not better.

    0.60.40.20.0.12.27.36.52.55.450.5B1.5B3B7B14B32Bstudent size — a better cheap model →
    Blind-spot rate β vs student size (GSM8K, fixed gpt-4o-mini verifier). More capability, bigger blind spot; the rise saturates across the largest three. The cheap-student, cheap-verifier corner — the whole point of a cascade — is the danger zone.

    03 — finding two

    Buying it away gives the cost back

    "Fine — use a better verifier." It works: a frontier verifier crushes the blind spot to ≈0.05. But look at what it costs.

    On hard MATH, that strong verifier escalates 46% of queries against a 39% true error rate — it buys its recall by over-rejecting correct answers too, paying the frontier price on nearly half of all traffic. That is the exact cost the cascade existed to avoid. Low blind spot and low cost are not simultaneously available from a fixed verifier.

    0.60.40.20.0true error 0.39escalates 46%β .42.05.09gpt-4o-minigpt-4.1gpt-5-miniblind spot βescalation rate (what you pay)
    Hard MATH (levels 4–5), fixed 7B student. As the verifier strengthens, β collapses — but escalation climbs to meet, then exceed, the true error rate. A strong verifier suppresses the blind spot by over-escalating, handing the cost back.

    04 — findings three and four

    The loop degraded — and the dashboard never saw it

    We ran the actual self-improving loop. Naive fine-tuning on the verifier-rejected tail didn't improve our small students. It degraded them, and eventually collapsed them — with every teacher we tried, cross-family and same-family.

    The rejected tail is the hardest, most style-shifted slice of the data; training a small model only on that destabilises it. But here is the part that should worry anyone shipping one of these systems: none of it showed up on the dashboard. Every in-loop metric is computed through the verifier. Ours held flat near 3% while the true, gold-checked error of the delivered answers climbed to 32%. The system was blind to its own decay, by construction.

    35%25%15%0%true errordashboard ≈3%hidden harmround 0round 2round 5verifier dashboard (what you watch)true delivered error
    The scissors. Qwen2.5-7B student, gpt-4o-mini verifier, GSM8K. The dashboard holds near 3% while true error swings to 32%. The shaded gap is harm no in-loop metric reports — the cost dashboard and the quality dashboard are the same compromised instrument.

    05 — why it happens

    A conservation law for blind spots

    The mechanism is structural. Split the student's errors into two piles: the ones the verifier can see, and the ones it can't.

    The loop trains only on the detectable pile, so that mass drains towards zero. The blind pile gets no training signal — it is conserved. User-facing error doesn't vanish; it settles at the confidently-wrong-and-accepted mass it started with, a floor of roughly q₀·β₀. And because every in-loop metric lives on the detectable side, the dashboard keeps improving while true quality stalls. In a synthetic study — where the loop provably does improve the student — the same two populations appear, which is what lets us call the floor a property of the mechanism rather than an artefact of one run.

    start of loopdetectableblindrounds of trainingafter the loopdrainedblind — conserved
    Two populations. Training drains the detectable errors (teal). The blind mass (coral) receives no signal and survives — a floor on delivered error that the dashboard, living entirely on the detectable side, cannot register.

    06 — what to do about it

    Measure outside the verifier

    None of this is an argument against cascades — they are the most direct cost lever we have. It is an argument about measurement.

    You cannot read the reliability of a self-improving cascade from any metric computed through its own verifier. A system optimised against a proxy will satisfy the proxy — so the proxy stops being evidence.

    The fix is an independent audit channel: a small, periodic, gold-labelled sample that never touches routing or training. It is the one instrument that can see the blind spot, because it doesn't share the verifier's eyes. Two more design rules fall out of the findings — decorrelate the verifier from the student (shared failure modes share blind spots), and treat feeding accepted answers back as labels as a safety decision, not a free data source: it turns a passive blind spot into an actively reinforced one.

    We built the loop we set out to build, watched it fail in an instructive way, and measured exactly how. The honest version of "self-improving" comes with a gold-labelled audit stapled to the side. The full paper is on arXiv, and the experimental harness and the committed measurements behind every figure are open at github.com/AltSlate-Labs/cascade-blindspot.