Summary / The 27 components
14 Iterative repair
Using a failed attempt as information for a better next one instead of starting over.
Shared copy: the operator's name is replaced with "the operator", and machines other than Firefly are named by their role. Nothing else is changed.
What is built now
Built 10-10 (harness 0.7.3). repair.py 1.0.0 is a deterministic retry loop: a failure signature (class, message template, site) hashed into an append-only ledger, a cap of 3 attempts per signature and a ceiling of 35, and each round seeded with the prior diff, the failing output, a diagnosis and a must-not-break boundary. Components 12 and 13 are stubs behind interfaces. Arm h14 (parent hg) makes one ordinary draw; if its verifier test fails, the failed workspace is forked and the loop repairs it with the seeded_repair_v1 prompt. Pre-registered before launch; 33 unit tests pass. 10-10 late, 0.7.4 (staged, not run): the pytest parser strips colour codes (every arm), and arm h14b verifies with the repository's own tests nearest the edit, run on the unpatched tree first, starting the loop only on a regression the patch caused; it never reads the gold lists. Pre-registered as PREREG-h14b against h0b (= h0) over all 64 cells, same night. Run 10-11 01:03–07:54 by Piper, both arms together. 10-12, Claude took over component 14 from Piper (at the operator's request). New verifier, tested in pieces before any A/B: a worker writes a reproduction script from the issue text alone on an untouched tree (it never sees a patch or a graded list); the loop starts only when that script fails on the draw, and then gets one repair round with the script's output. Scripts in tools/c14/, own database, Piper's results never written.
What is missing
Failures to work on. On the tasks Firefly can run inside 30 minutes, deepseek-v4-flash already resolves nearly every first draw, so the new trigger had nothing to fire on (10-12). The harder tier does not change that: on 10-14, single first draws on 6 SWE-bench Verified tasks rated "1-4 hours" (never run before) resolved 5 of 6 (17% failures, against the ~40% needed before repair is worth testing), $0.08. Parked 10-14 at the operator's call: mechanism kept on file (tools/c14/), nothing installed; reopen only with a task source this model fails. It is also blind to a draw with no patch at all, and to hidden tests that ask for more than the issue says. Not wired into the driver: no h14c arm. The real diagnosis (13) is still a stub.
Reviewer Claude, 2026-10-04
Reviewer's read: Parked (10-14): the repro trigger works, but this model fails too few SWE-bench tasks to test repair (5 of 6 "1-4 hours" tasks solved first try)
The code is clean, and it matches the spec's stages. The first comparison (10-10) does not measure it. Piper reported 90% against 65% on 19 dev tasks, but 41 of the 57 baseline cells are 09-08 rows from the previous model. On the 21 cells both arms ran that night, h0 resolved 21 and h14 19, at 3.3 times the cost, so the pre-registered keep rule (+3 cells) is not met. The loop started in 18 of 62 cells: 9 times on a test that had passed (the parser bug), 6 on a matplotlib environment warning, and only 3 on a real failure. Seeded retry is still untested, neither kept nor dropped. The parser, base-commit and gold-list problems are fixed in 0.7.4 and handed back to Piper (10-10 23:48) to review and run. Prediction before the run: a near tie (±2 cells), because h0 is at 21/21. The valid re-run (10-11, h0b against h14b, same night and model): dev, on 51 shared cells, h0b 41 and h14b 46 (+5, eight wins and three losses), which clears +3. Regression set: h0b 7 of 7, h14b 5 of 7 (−2, the rule allows −1). So the pre-registered rule says not kept. Neither the gain nor the loss comes from repair, though: the loop started in 1 of 68 cells (scikit-learn-25102, regression set, fixed in one round, a cell h0b also resolved). All eight dev wins and all five losses were single first draws with no loop, so the gap between the arms is draw-to-draw variance plus the stated confound that h14b runs with the hg sandbox gates while h0b runs with gates open. Cost per dev cell $0.0154 against $0.0132 (+17%), wall 114 s against 103 s. Six h14b dev cells are missing (Docker clean-up timeouts and one locked database) and are excluded, as pre-registered. Seeded repair is still effectively unmeasured: the verifier almost never fires. 10-12 takeover. Pre-flight, no A/B: on the six h0b/h14b tasks that had real failures, the reproduction-script trigger caught 3 of 10 failed draws with 1 false fire in 11, and one repair round fixed all 3 it caught, with no damage. But that set resolves 87% on the first draw, so an A/B there could gain about 1.5 cells, too little to decide. A broader script prompt, which also tries sizes, variants and neighbouring cases beyond the issue's own examples, then caught 6 of 10 with 0 false fires. A harder set was needed. The history had almost none: of 54 other tasks ever graded, 51 resolve 85% or more. So the set became 3 middling history tasks plus 14 never-graded tasks rated 15 minutes or harder. Paired run (pre-registered, one first draw per cell, then trigger, then one repair round): 8 of 9 graded first draws resolved. The only failure was a session that timed out with no patch, which repair cannot touch. Two matplotlib cells hit the 30-minute cap during grading. The trigger did not fire falsely once (0 of 8; 0 of 19 counting the pre-flight), and every script failed on the untouched tree and passed on the real fix. The stop rule ended it after 11 cells: inconclusive, $0.43, about two hours. The mechanism looks sound where failures exist; this model leaves almost none on these tasks.
How it is measured parked (10-14); no headroom on SWE-bench Verified
PREREG-h14b: h0b and h14b on the same night and model over all 64 cells, keep rule +3 shared cells with regression no worse than −1, plus a mechanism report (loop starts by reason, genuine failures by spot-check, resolve by attempt, cost and wall per cell). After that, against h1 at matched cost. Before comparing with older rows, check which ones the parser fix changes. Next: a verifier that fires on unresolved issues, not only on regressions (the worker's own reproduction test, run before and after), and a fix for the base battery that is unusable in half the cells; then re-run. Separately, the +5 on dev with no loop suggests the sandbox gates (hg against open) may matter by themselves; that is a different A/B. Next (10-12): find failures before paying for repair. Run first draws only on harder tasks (SWE-bench Verified "1-4 hours" or longer, pulled images), and run trigger and repair only if about 40% or more fail.
Adoption rules shared by every arm: How the tests work.
Research & attempts
- Iterative repair, attempt 1: h14 seeded retry (review + h14b fixes) Attempt 1 · review 2026-10-10
- The Failed Attempt Is the Asset: Iterative Repair as the Minimal-Delta Repair Loop of a Weak-Model Coding Harness Paper 2026-09-06
- Build Spec 14 — Iterative Repair (the ≈80% fraction) Spec 2026-09-05
Score history
No scores yet. The first entry is the baseline for suite v1.
Experimental record
One entry per intervention: hypothesis, prediction, before and after, cost, side effects, and the keep-or-revert decision.
No interventions recorded yet.