Thesis

Measured end-to-end on a real 13-MR backlog: the legacy advisor published one review. Five MRs were paid for. The other four paid reviews were discarded after the model had already run, and every failure posted a note that reads like a review.

This is the blunt cause behind the epic's 0 dispositions out of 937, and it sits upstream of the two causes carded so far (invisible finding ids, non-convergent --dispositions). You cannot disposition findings that were never published.

The run

Manual trigger, systemctl --user start corpus-gitlab-advisor-recovery.service, 2026-08-08 11:12–12:08Z:

tick done — 17 repo(s), 13 MR(s), 1 reviewed, 0 skipped, 0 empty,
10 stale, 2 failed, 0 capped, 3 notes posted, $0.4923 spent today

State after save: 5 accounted attempts, 3 entries (!23 published; !19 and !24 completed, so they retry under MAX_PAID_ATTEMPTS_PER_DIFF = 3). doering.ai !62 and corpus !158 were paid but got no entry at all.

Five failure modes, none of them "found nothing"

#outcomeMRspaidcarded
1stale — no matching merge_request_event pipeline at headwikiparse !28 !26 !22 !21 !17noMEMY-1144
2stale — branch moved during the reviewdoering.ai !62, corpus !158yeshere
3indeterminate — reconcile parse_errorwikiparse !24yeshere
4indeterminate — quorum unmet (transient provider cooldown)wikiparse !19yeshere
5diff-refs-invalid — refs failed the 40-hex checkwikiparse !18 !14nohere

Mode 2 loses the review, and — corrected — does not run up an unbounded bill. A first draft of this card claimed it "bills forever"; that was inferred from the absence of a state entry, on a single observed dispatch each, and it overstated the evidence. Reading the attempt receipts settles it:

doering.ai/62   attempt phase=returned  accounted $0.003788  — no *.review.json, no *.report.json
libs/corpus/158 attempt phase=returned  accounted $0.007877  — no *.review.json, no *.report.json

So the cost was recorded (the spend cap and the attempt ceiling both see it), but no replayable record was written — the review content itself is gone. What that means concretely:

I observed one dispatch each, not a repeat. The re-dispatch is certain (no replayable record exists); whether it re-pays depends on whether the head moved again. Stated as measured, not as projected.

Mode 3 is a merge-only stage failing the whole review. advisor.py:434 does obj = raw if isinstance(raw, dict) else _extract_json(raw) — JSON scraped out of the reconcile model's prose. Miss it, and finish_reason='parse_error' forces unreviewed and discards three successful lens calls.

Mode 4 is infrastructural, not model quality. Two of three lenses hit RateLimitError: No deployments available for selected model (a LiteLLM cooldown); the 2-of-3 quorum then discarded the lens that had succeeded. A direct probe of the same alias seconds later returned OK in 5.8 s. num_retries: 0 on this route is deliberate — the worker owns replay — so a momentary hiccup costs the review outright.

The note is the worst part

Every failure above still posts:

advisor review — unreviewed (status: failed)

From the MR page that is indistinguishable from a review that ran and found nothing. This is the MEMY-799 signature recurring — a green svcstat showed all four advisor units healthy throughout. Reviews are not expensive (!23: 2 critical / 6 major / 19 minor, 28 threads, $0.0101); the failures are what cost.

Decision this forces

corpus/critic/ + corpus/gitlab_critic/ are slated for retirement in APPS-93 W7, and the successor removes modes 3 and 4 by construction (typed submit_findings tool call, no JSON mined from prose; no lens quorum).

State the rate with its denominator — the two available numbers mean different things and only one of them is about the reviewer:

denominatorratewhat it measures
per paid dispatch (1 of 5)20%the reviewer's own reliability — modes 2, 3, 4
per MR found (1 of 13)8%end-to-end fleet experience, including MRs the reviewer never saw

The 8% figure charges the reviewer for seven MRs it was never given (five refused for want of a CI pipeline, two for malformed diff refs). It is the honest number for "what does an agent waiting on a review actually get", and the wrong number for "how good is the reviewer". Quote both or neither.

So the question is not "fix these five" but how long the fleet runs at a 20% per-dispatch publish rate. Either accelerate W7, or fix mode 4 (a transient cooldown should not discard successful lens work) and mode 3 (a merge-only stage should not be able to fail the whole review) — those are the two that waste a completed review. Mode 2 wastes cents, not dollars; it is a correctness annoyance, not a spend problem.

Cheapest independent win, and it is not a rewrite: stop posting an unreviewed note. Silence is more honest than a note that reads like a review.

Acceptance criteria