Verification

July 27, 2026 · View on GitHub

Fundamentals, page 5. The gate argues that a loop is only as trustworthy as the check it can't talk its way past. This page ranks the checks: a ladder from "the model said so" to "a human watched it run," so you can name where a given piece of evidence actually sits before you call something verified. Closes out the layers this series maps; it builds on the same discipline as the thesis and the five moves.

In one minute

"It works" is not one claim, it's several different claims wearing the same sentence. The model saying it works, a green checkmark, a test that ran, a second reviewer confirming it, and a human watching it run in production are five different amounts of evidence — and they get quoted interchangeably, which is how a green checkmark ends up carrying the weight of a human watching it run. The fix is naming which rung you're actually standing on before you call something verified, and refusing to round up.

The ladder

This ladder is compass's own synthesis, not a cited finding — grade it E3, argued, and apply the same skepticism to it that the layers asks you to apply to any unmeasured claim.

LevelWhat it takes to reachWhat it still fails to catch
L1 — Toldthe model (or a person) says the change workswishful thinking, hallucinated success, the author's own chain of self-persuasion
L2 — Assertedassertions or tests passa test that never exercises the changed path; behavior mocked away instead of run
L3 — Executedthe test actually runs the real behavior, and the output is read, not skimmeda test that's stale against the new requirement; only the happy path is covered
L4 — Reviewedan independent, fresh-context reviewer — ideally a different model — confirms ita reviewer that reads the diff instead of running it; shared blind spots between close-kin models
L5 — Observedthe artifact runs in a real environment and a human watches the outcomerare or slow-to-surface failures; anything outside the scenario a human thought to watch

Each rung subsumes the ones below it in confidence but not in cost — L5 is the strongest evidence and the most expensive to get, which is exactly why most verification quietly settles for L2 and calls it done. The discipline is refusing to let L1 or L2 stand in for L4 or L5 just because they're cheaper to produce.

A five-level spec on paper — read honestly

A July 2026 preprint (Sandeco Macedo, arXiv:2607.00038, https://arxiv.org/abs/2607.00038) proposes formalizing a "loop" as a five-field spec — trigger, goal, verification, stopping rule, memory — and independently proposes its own five-level verification ladder, tested against a corpus of 50 loops, reporting that 70% verify autonomously and 74% name a terminal state.

Honesty check, read before you quote this. Only the abstract was verified for this page — the full paper was not read. Treat the 70%/74% figures, the exact ladder levels, and the 50-loop corpus's composition as E2, unverified-in-full — a named, dated, linked source, not something reproduced here.

The structural parallel to the five moves is a genuinely interesting echo — trigger ~ discovery, goal ~ the stop condition, verification ~ the evaluator, stopping rule ~ the round cap, memory ~ persistence — two independent efforts converging on a similar shape. But that comparison is this page's own observation, not the paper's claim, so grade the comparison E3 too. Read the source before you build config on the numbers.

Verification debt: the cost with no alarm

The five moves names four silent costs a self-running loop runs up, and the first is the one this page is about: verification debt — unverified output piling up in the gap between "it ran" and "it's right." No alarm sounds while it accumulates, because nothing failed loudly; a loop that stops at L1 or L2 looks exactly like one that reached L4 until something breaks downstream.

It compounds because it feeds the other three costs: unverified output erodes your mental model of the codebase (comprehension rot), which makes you more likely to wave the next change through without reading it (cognitive surrender), which removes the one check that would have caught a loop spinning on a task it can't actually finish (token blowout). The practical gauge compass ships for the human side of this is compass digest — it tracks a ledger of merged, agent-authored changes you haven't yet explained back to yourself, and the size of that unreviewed pile is a direct read on how much verification debt is sitting unpaid.

The delegation rule: a claim is not proof

Never report a check as clean or passing unless you ran it and watched it pass — no "should work" standing in for "I saw it work." That rule doesn't relax for delegated work; it tightens. A subagent, or a Builder in the SDLC pipeline, reporting success is a claim about its own output, made by the same generator whose self-persuasion the gate exists to route around. It is not proof, for the same structural reason a model can't credibly review its own diff.

compass enforces this as a role, not a courtesy: the Reviewer role is told explicitly to assume the change is broken until proven otherwise, and to run the tests and paste the real output rather than read the Builder's summary of them. When a loop needs a stop condition stronger than a round cap, the goal-judge role decides MET/UNMET by executing the check itself, not by reading the diff — a fresh, usually cheaper model, deciding on evidence the worker didn't hand it pre-chewed. The delegator re-runs the gate; it does not inherit the delegate's verdict.

In practice

Move a claim up the ladder with the primitives compass actually ships:

# L2 -> L3: these don't just assert, they execute the policy function against a
# labeled, versioned corpus and score precision/recall for real.
compass bench --guardrail
compass redteam --eval
# L4: a fresh, cheaper model decides the stop condition by running the check,
# not by reading the diff.
SDLC_CONVERGE=1 SDLC_GOAL="all tests in test/auth pass and the lint step is clean" \
  ~/compass/sdlc/orchestrate.sh "harden the auth flow"

09-sdlc.md reaches the strongest form of L4 by construction: Claude builds, and Codex and Gemini audit the same PR as independent, cross-tool second opinions — a different vendor, not just a different context.

The closest thing compass ships to L5 is sdlc/taskbench/: five seeded-bug tasks, each with its own check.sh oracle that is independent of the model that fixes the bug. sdlc/taskbench/validate.sh runs in CI and proves the oracle actually fails before the fix (so the benchmark isn't measuring a bug that was never real) — that part is deterministic and token-free. Running the fix itself (bash sdlc/taskbench/run.sh) spends real tokens and produces a live pass/fail a human can read in results.tsv; see the task-success section of 18-benchmark.md for what that number does and doesn't claim. The permanent human-merge gate is what turns any of the above into an actual L5 — a human watching the real outcome before it ships.

Honest limits

This ladder is a naming tool, not a measured instrument — E3, built for this page, not validated against a corpus of its own. The Macedo preprint's numbers are cited, not reproduced; treat them as a pointer to go read, not a fact to repeat. Reaching L4 in compass today usually means a fresh context and often a cheaper model, not reliably a different vendor, except where the SDLC pipeline's cross-tool audit specifically applies — see the same caveat in 25-the-gate.md. And L3-level corpus scores (100% precision/recall on a labeled set) prove the policy is correct on cases someone thought to write down; 18-benchmark.md is explicit that this is not a real-world catch rate. No rung on this ladder replaces a human reading the diff for the thing no test was written to catch.

The takeaway

Every level of this ladder is real evidence — L1 included, a model saying it works is not nothing — but each is only worth what its rung is worth, and the whole discipline of verification is refusing to spend an L1 claim as if it were an L4. Know which rung you're standing on before you call something done.


See also: the gate · the thesis · the five moves · the layers · the SDLC loop · benchmark.