rabadon

overview / benchmarks / review a/b, 17 oct

pre-registered protocol: does stop review lower cost per correct outcome?

Protocol id 2026-10-xx-review-benefit-v1. Freeze this file, task manifest, checkers and gate binary (sha256 each) in the dev diary BEFORE the first paid call. Nothing below changes after the first paid call. A failed or inconclusive result is archived as is; it is never rerun.

the result

armrunsfirst-turn passesfinal passesrun costcost per correct outcome
P, plain Claude Code555$1.2599$0.252
R, with rabadon review555$1.6499$0.330

Credited repairs: 0. Unnecessary interventions: 0. Spent: $2.91. The verdict the frozen script wrote: evidence against at this scale.

From bench/evidence/2026-10-17-claude/review-ab/summary-main.json, written by the script frozen with the protocol below.

1. Question and arms

Does rabadon review (opt-in Stop review, same-agent repair) give more correct outcomes per list dollar than plain Claude Code on fresh long multi-step tasks?

2. Follow-up turn (symmetric, scripted)

After the first process exits (any exit code), run the hidden checker on the work tree.

3. Metrics (primary first; computed by a script frozen with the protocol)

4. Task design rules (each maps to a recorded past failure)

  1. Fresh tasks only. Not rabadon, not contacts-import, not the 0a93e60/652b862 historical defects, not shipping/reproducer/quarantine/merge cases, nothing under bench/. Written by a session that has not seen review_prompt.h or past results, given only this section. (Overfitting to known dev tasks: 4 Oct prompt candidate; 10 Oct "do not rerun known cases".)
  2. Not too easy. 10 Oct: 6/6 first Stops passed, 17 Oct: both arms passed -> nothing to repair. Each prompt has 8-12 numbered explicit requirements across >=3 files: core behaviour,

    =2 edge cases, one preservation constraint (e.g. "do not change the signature of X; existing

    tests must pass unmodified"), named new tests, a README/CHANGELOG change with stated content, a CLI flag or output-format detail, and >=2 requirements placed after the main description. Expected 15-40 tool calls. Natural requests, no traps, no contradictions.

  3. No seeded faults or misleading handoffs. Those are mechanism evidence (25 Sep), not natural work (product-acceptance "Fayda gösterilmiş").
  4. Everything checked is stated in the prompt. No requirement lives only in a repo file. The checker never judges unstated things: no __pycache__/artifacts (17 Oct), no final-message wording, no style. Behavioural checks, not byte equality (25 Sep); extra valid tests/files allowed; hashes only on files the prompt says not to modify.
  5. Checker must be able to go red. Pre-run validation: original repo FAILS; a reference solution PASSES; for every requirement a variant dropping only that one FAILS exactly that group. One assertion group per numbered requirement, per-group output, exit code = verdict (never grep the suite text; never test; echo exit=$?, 25 Sep).
  6. Working harness. Small pinned public repos (permissive licence, 1-5k LOC, Python/JS) whose own suite is green at the pin; deps preinstalled in a local venv/node_modules; the exact test command is in the prompt (R7: system python vs .venv, missing extras, empty task text). Work dirs under a HOME subdir: not /tmp, not a git worktree, no "rabadon" in the path.
  7. Hidden checker lives outside the work tree; grep each stream for its path and flag hits (result still counts).
  8. Frozen product. No change to reviewer prompt, packet (e_files stays first, 4 Oct), caps or thresholds between freeze and analysis. Record CLI version, resolved model ids, gate sha256.
  9. Calibration only on a separate smoke task (not one of the 6), never on test tasks.

5. Execution, cost cap, stop rule

6. Pre-registered verdicts (P_x = final passes /6, CPC_x as defined)

7. Amendments made BEFORE freeze (2026-10-17, before any paid bench call)

commands

rabadon init