Omnigent · chapter 2 of 4

A pass is a claim about a commit, earned from positive evidence, and unknown is the default grade.

Five rounds of review found the same defect, and each round found it wearing a different symbol kind, because each fix keyed on the kind it had been shown. That sentence sits in the pre-pass’s own documentation, and it is why the fleet’s review stage grades a finding unknown unless the code that produced it holds positive evidence for a definite answer. “No evidence against” is not evidence. “This kind of symbol is usually safe” is not evidence. A pass has to be earned.

The pre-pass computes the facts once

Before any model reads a diff, a deterministic pre-pass renders one block with a section per mechanical lens: contract and compatibility, blast radius, test adequacy. It never raises, because a reviewer is blocked on it and a crashed pre-pass is a stalled review. Each section degrades on its own to a note saying what it could not compute. The work is bounded three ways, a git timeout, a cap on files parsed, a wall-clock budget on the greps, for the same reason: a slow pre-pass is a stalled review.

Lens Answers it can give Only when
Contract and compatibility “N potentially breaking” or “0 potentially breaking” It holds positive evidence for every changed symbol; otherwise unknown
Blast radius “N references outside this diff” or “named in these files” A caller hit counts as a reference only through a probe the module holds for that symbol kind
Test adequacy Which changed paths a selected test reaches The parse finished inside its file cap and wall-clock budget

The reason each lens exists is cost. In July every review lens re-walked the tree on its own, most of its turns shell commands rediscovering the same files, and the pack module records what that cost when it shipped. I don’t publish those numbers; the August read of the live tables is the one I stand behind, and the casting note carries it. Computing the mechanical facts once and handing them to every reviewer is the difference between a review that reasons and a review that re-discovers.

Fig. 01 — What review cost on one July card before the pre-pass: 6 h 59 m and $6.73 of an $11.28 card, with the timeline honest about the stages it could not attribute. — board, July 28, 2026, before the six stage columns

Fig. 01 · pinch or scroll to zoom · drag to pan

A clean round is a pass

Until August 25 a round that found nothing still routed the card into fixing, because the transition had been written for the case where something was found. The fleet now coerces a clean round to a stored pass and asks the verifier to confirm or refute that pass against the head commit rather than review from scratch. On the first 16 cards through, 13 stored a pass as their first verdict, 81% against a seven-day baseline of 13 to 14%, and 12 of 16 never entered the fixing column. The tax was 24 false hand-back rejections on 13 cards while the verifier and the executor learned to agree. Both numbers are in the note that shipped the change, side by side, which is the only way I want a win reported.

The reviewer is a different vendor

For about three weeks one model built and reviewed, and the seams showed: things were accepted and deployed, and the bugs arrived as I validated. The reviewer shared the builder’s blind spots. Now Codex reviews what Claude builds, and when Codex cannot take the review, the review defers rather than falling back to the builder’s vendor. Anthropic’s own multi-agent research names the mechanism: agents on the same model and scaffolding converge on the same behavior, so one bad call spreads instead of staying isolated. The casting note has the vendor split stage by stage.

One real round

On September 12 a card exported bounded per-worker context metrics from the local API. Its first commit landed at 09:58. Two reviewers returned four blocking findings, and the fix commit at 10:28 addressed each.

Finding What the builder could not see from inside its session
Session reads pulled full item lists An 8 MiB response cap was silently discarding exactly the long-running sessions the metric was for
A malformed status was dropped Dropping loses the session; truncating keeps it and marks it
An invalid peak was deduplicated into the ledger A dedupe on bad input hides the bad input
The series cap was checked before ingest The ceiling has to project the size after ingest, or it is not a ceiling

The card merged at 10:55. Six hours and 48 minutes later, the first commit of the card that consumes those metrics landed, naming the metric family this one shipped. On the same day the board merged 200 card branches and eight of them carried a “Fix review findings” commit, one round each. That is the rate of a prefix, not of revision. Two other chains that day carry a corrective second commit that never used it.

What a pass does not prove

A pass is not correctness. It is a claim that the lenses that ran found nothing, at that head commit, with unknown recorded for everything they could not compute. Escaped defects are not yet tracked as a series, so I cannot tell you a false-pass rate, and this note will not invent one. The pre-pass only answers where it holds positive evidence, which means a symbol kind without a probe reads unknown forever until someone writes the probe. And a reviewer that finishes without a verdict gets one request to publish it in the same session; a second incomplete turn routes to a fresh reviewer, and review success still requires a structured verdict.

Underneath

The “same defect five times” account and the unknown-by-default rule are the pre-pass module’s own documentation; the July lens cost is the review-pack module’s own record from July 29, not republished here; the coerce-to-pass numbers are from the note that shipped the change on August 25. The four findings are the fix commit’s own body from September 12, 2026, and the merge and commit times are the repository’s. The card timeline capture is from July 28, before the board’s columns were renamed to the six stages. Anthropic’s multi-agent systems research is the source for same-model convergence, 18 of 30 agents independently naming a branch mvp-game-loop, and Panickssery, Bowman, and Feng show that language-model evaluators recognize and favor their own generations. Those two are why the vendor split is a design rule and not a preference; one code-review vendor’s own study reports the same effect on code, and a 2026 preprint finds it uneven across model pairs, so I treat it as a rule that needs its own measurement, which is the false-pass series I do not yet have.

This project

This project, in order

Start

Tell me what’s stuck

I’ll tell you in about a day whether I’m the right person. The first conversation is fit, not a free architecture review.