Can a cheaper model review code like Fable?

Nine reviewers replayed four changes on which Fable caught a real bug. Round one 29 October 2026, round two 30 October.

Updated 30 October. Round two re-ran the two bugs almost every reviewer missed, with a better review prompt and the subscription reviewers added. Every reviewer went from mostly missing the old-shell bug to catching it every time. The deadlock still split them. Skip to round two: give the reviewer the facts first.

Two AI reviewers, by the numbers counted seven weeks of every change in the lab reviewed by two Claude models. Fable is the more expensive of the two, at about $2.50 a review at list price. This asks whether something cheaper can do the same work, and in particular whether the largest open-weight models, the kind a 512 GB Mac Studio can hold, are good enough to be worth running at home.

The test

I took four changes on which Fable's live review raised a HIGH, a finding meant to block the merge, and that I had confirmed was a real bug. Each reviewer then reviewed each change again:

The four bugs, described by what they would have done:

  1. Unsafe file paths, two bugs in one plan. A tool holding credentials would write files wherever a third-party service's reply told it to, including outside the project. The same plan also required a test that another plan forbids.
  2. Keychain guard. A guard meant to stop agents reading saved passwords could be bypassed by adding a comment to the command.
  3. Status deadlock. A status check that waits for a review would also stop that review from running, so the change would wait forever.
  4. Old-shell build. A build step used a shell feature that the build machine's older shell doesn't have, so it would fail on every run.

Round one: the results

A grid of nine reviewers against four bugs. Fable 5.1 and GLM-5.3 each caught the file-path and keychain bugs and missed the deadlock and old-shell bugs. Opus caught the file-path bugs and rated the keychain bug lower. The other open models missed every bug they were run on or timed out, except gemma4 31B, which caught the keychain bug and one of the two file-path bugs.
A change counts as caught when every bug on it was found at HIGH. Cost per review is the list-price equivalent of the tokens each review used. "Local" ran on my own Mac, so it cost electricity.

What it shows

What I took from round one

Round two: give the reviewer the facts first

Two bugs got past nearly everyone in round one, Fable included: the status deadlock and the old-shell build. On the old-shell bug most reviewers read the line, named it, and rated it minor, because nothing in the repository says how old the build machine's shell is. Catching the deadlock means reading two design decisions the change cites and noticing that they contradict each other.

So round two kept the models and changed the question. The review prompt gained three things:

Each reviewer then ran each of the two changes four times on the old prompt and four times on the new one. The subscription reviewers, OpenAI's Codex, Google's Gemini and Meta's Muse, joined in this round.

Each cell counts runs that rated the bug HIGH, out of the runs made: old prompt on the left, new prompt on the right.

ReviewerStatus deadlockOld-shell build
Opus 5.5
subscription, with repo access
0/4→4/41/4→4/4
Gemini 4 Argon High
subscription, diff only
0/4→3/40/4→4/4
Codex gpt-6-astra
subscription, diff only
0/4→2/40/4→4/4
GLM-5.3
rented, open weights, diff only
1/4→0/43/4→4/4
Muse Spark Open
rented, open weights, diff only
0/1→0/40/1→4/4
Muse Wonder 1.0
subscription, diff only
0/4→0/40/4→4/4
Fable 5.1
for reference: old prompt only
2/4→not run2/4→not run

Green: every run caught it. Amber: some did. Red: none did. Every new-prompt run was judged by a Sonnet model against the original finding. None raised a HIGH the judge called wrong.

What round two shows

What I take from it now

Round two: method and limits

Not a held-out test. The new prompt was written after studying these two bugs, so this shows it can work, not that it generalises. The next round uses changes the prompt never saw.

Not isolated. The new prompt added host facts, cited decisions and a contract check together. Which of them moved which result is my interpretation, not a measurement.

Access differed. Opus reviewed with read access to the repository. The others got the change and the gathered context, and no tools. That favours Opus on the deadlock. Muse Spark Open's old-prompt cell is a single run.

Costs. The subscription reviewers cost nothing per review beyond the plan. The rented open models cost cents a review at their provider's rates.

Round one: method and limits

The sample. Four changes, all chosen because Fable caught something, so Fable's replay is being scored against its own earlier result. One run per reviewer per change. Fable and Opus repeated their keychain result in a second run, Fable at HIGH both times and Opus lower both times. The others ran once.

The gaps. "Not run" cells are models I tried on one change first, to decide whether to go further. "Timed out" means the review did not finish within 30 minutes on my Mac.

The harness. Every model ran inside the same Claude-based review tool. A model that is good in its own vendor's tool may do worse here, so a miss is a miss in this harness. In this round the open models had the same file access as the Claude reviewers. Future runs give a third-party model the change and nothing else.

Judging. The Sonnet judge's calls were not hand-checked against the code, unlike the earlier article's.

Costs. Fable and Opus at Anthropic's API list prices, computed from each review's own token counts. The reviews actually ran on a subscription. The open models are at their provider's per-token rates. The rented GLM-5.3 was served at 4-bit precision.

The aggregate this follows: Two AI reviewers, by the numbers.
The review loop itself: Nine rounds with a machine reviewer.