Built on Broken Assumptions (BOBA): Why Coding Agents Cannot Be Left Alone
Organizations: Amazon
Abstract
Coding agents are autonomous developers. Given a request, they change the code and report back when done. As such, they can handle not only independent requests but whole chains of them, each request built on the last. Agents are known to report wrong work as done, yet benchmarks still test them one request at a time, on human-written code, checked once. We build BOBA-Bench, 280 chains of 20 consecutive requests drawn from 140 real open-source projects, and evaluate ten coding agents on both. All ten do far worse on chains. On average, they complete 95% of requests taken one at a time, but when requests are chained together, they complete 51%. Worse code is not the cause. Once checked, agent code is nearly as good a base for later requests as human code. The cause is the mistakes agents miss. Coding agents declare a request done once their own tests pass, even when those tests miss a mistake. The next request then builds on broken code and fails about twice as often. The mistake is rarely found later. Nor can agents catch such mistakes by reviewing code. Asked whether an implementation is correct, they are right 53% of the time, barely better than a coin flip. Coding agents are therefore heavily dependent on access to verification. A single external ``that's wrong'' after a failed request and one repair round lift chain completion from 51% to 59%, and a repaired mistake no longer hurts the requests that follow. In simpler terms, coding agents are only as reliable as the checks they can reach: without verification, every request that follows is built on broken assumptions.
Figures & tables
| Graded patches | 95% CI | Per task | Task | ||||||
| Benchmark | Granularity | Tasks | Repos | per task | total | ( pp) | spec. words | patch lines | collection |
| Issue resolution | |||||||||
| SWE-bench Verified ( OpenAI, 2024 ) | Commit | 500 | 12 | 1 | 500 | 4.4 | 189 | 14 | Rule-based |
| SWE-bench Pro ( Deng et al., 2025 ) | Commit | 1.9k | 41 | 1 | 1.9k | 2.3 | 462 | 170 | Rule-based |
| CodeThread ( Patel et al., 2026 ) | Commit | 1.4k | 78 | 1 | 1.4k | 2.6 | n/r | n/r | Rule-based |
| Codebase generation | |||||||||
| Chains (%) | Requests | Calls per | ||||||
|---|---|---|---|---|---|---|---|---|
| Model | pass@1 | [95% CI] | single attempt | strict pass@1 | regression rate | pass@8 | completed (%) | chain (median) |
| Claude Opus 5.5 | 66.7 | [61.3, 71.9] | 66.8 | 55.8 | 22.9 | 83.9 | 84.0 | 216 |
| Claude Opus 5 | 61.6 | [56.2, 66.8] | 60.7 | 50.5 | 28.1 | 82.9 | 80.8 | 401 |
| GPT-6 Astra | 53.2 | [46.7, 59.5] | 51.1 | 38.7 | 35.1 | 63.9 | 75.2 | 182 |
| Claude Fable 5 | 51.5 | [45.8, 57.1] | 51.8 | 38.2 | 40.5 | 72.1 | 73.2 | 292 |
| GLM-5.3 | 51.2 | [45.4, 57.1] | 46.4 | 39.8 | 30.1 | 76.1 | 73.0 | 560 |
Appendix figures & tables49 assets
Supplementary material from the paper’s appendix.
Appendix
| p10 | p25 | median | p75 | p90 | max | |
|---|---|---|---|---|---|---|
| GitHub stars | 6 | 14 | 46 | 195 | 603 | 5,835 |
| code LOC at first chain base | 79 | 215 | 424 | 2,146 | 4,914 | 33,731 |
| Python LOC | 76 | 212 | 420 | 1,907 | 4,801 | 33,684 |
| files | 8 | 11 | 18 | 37 | 66 | 325 |
| test LOC | 9 | 29 | 97 | 538 | 1,317 | 11,574 |
| chains per repository | 1 | 2 | 2 | 2 | 3 | 5 |
| p10 | p25 | median | p75 | p90 | max | mean [95% CI] | |
| Reference (gold) patch | |||||||
| files changed | 1 | 2 | 3 | 7 | 13 | 224 | 6.0 [5.3, 6.7] |
| hunks | 2 | 4 | 7 | 15 | 30 | 1,654 | 15.5 [12.4, 19.3] |
| lines added | 6 | 16 | 50 | 146 | 384 | 81,022 | 276.8 [179.8, 404.1] |
| lines removed | 1 | 3 | 14 | 51 | 163 | 44,855 | 134.2 [83.8, 201.1] |
| lines changed (+/ ) | 9 | 24 | 73 | 215 | 596 | 94,155 | 411.1 [267.3, 579.1] |
| p10 | p25 | median | p75 | p90 | max | mean [95% CI] | |
| gold lines added (20 segments) | 781 | 1,246 | 2,177 | 4,274 | 7,013 | 121,416 | 5,536.6 [3,682.0, 8,007.4] |
| gold lines removed | 278 | 442 | 775 | 1,836 | 3,396 | 56,611 | 2,684.6 [1,643.7, 4,033.9] |
| net gold lines | 242 | 499 | 987 | 2,311 | 4,674 | 89,154 | 2,852.0 [1,552.4, 4,631.0] |
| distinct files touched by gold | 11 | 16 | 25 | 45 | 74 | 297 | 38.0 [32.3, 44.7] |
| distinct test files touched | 4 | 6 | 10 | 18 | 30 | 309 | 16.8 [13.2, 21.5] |
| new files created | 2 | 4 | 10 | 24 | 46 | 201 | 19.1 [15.6, 23.4] |
| definition | any earlier | nearest lag (med.) | chain depth med. (IQR) | |
|---|---|---|---|---|
| gold patches share a file | 98.1% [97.2, 98.8] | 89.2% [86.8, 91.5] | 1 | 18 (16–19) |
| references a function/class touched by | 79.3% [75.5, 82.8] | 40.1% [36.7, 43.5] | 1 | 8 (5–11) |
| references a function/class introduced by | 72.3% [68.3, 76.2] | 28.2% [25.6, 31.0] | 2 | 6 (4–8) |
| strict (names chars, non-generic) | 68.2% [64.5, 71.9] | 25.5% [23.1, 28.0] | 2 | 5 (3–7) |
| gold-patch references only | 64.6% [60.7, 68.6] | 24.4% [21.8, 27.0] | 2 | 5 (3–8) |
| test-patch references only | 54.1% [49.8, 58.2] | 15.0% [13.2, 16.9] | 3 | 3 (2–5) |
| BOBA-Bench segment | BOBA-Bench chain (20 seg.) | SWE-bench Verified | SWE-bench Pro | SWE-bench Pro (Py) | |
|---|---|---|---|---|---|
| n=5,600 | n=280 | n=500 | n=731 | n=266 | |
| gold files changed | 3 (2–7) | 25 (16–45) | 1 (1–1) | 4 (2–7) | 3 (2–4) |
| gold hunks | 7 (4–15) | – | 1 (1–2) | 9 (5–16) | 7 (4–12) |
| gold lines added | 50 (16–146) | 2,177 (1,246–4,274) | 4 (2–10) | 63 (33–135) | 46 (30–108) |
| gold lines removed | 14 (3–51) | 775 (442–1,836) | 2 (1–4) | 20 (7–52) | 15 (5–41) |
| gold lines changed | 73 (24–215) | – | 7 (3–13) | 94 (50–207) | 74 (45–142) |
| stratum | bins | n |
|---|---|---|
| gold lines changed (terciles) | small / medium – / large | 1,832 / 1,896 / 1,872 |
| source commits per segment | 1 / 2–4 / | 1,741 / 2,081 / 1,778 |
| P2P protection | empty / non-empty | 223 / 5,377 |
| symbol/import dependency ( ) | none / on / only on | 1,421 / 1,533 / 2,366 |
| position block | 1–5 / 6–10 / 11–15 / 16–20 | 1,400 / 1,400 / 1,400 / 1,400 |
| Fable 5 | GPT-6 Astra | Kimi K3 | GPT-5.6 | GLM-5.2 | |
| Boundaries (repositories) | 311 (124) | 298 (124) | 332 (130) | 283 (121) | 286 (120) |
| Repositories never certified (of 140) | 46 | 55 | 40 | 64 | 63 |
| Success, agent prefix (%) | 92.8 [89.0,96.2] | 94.0 [90.5,97.0] | 94.6 [92.1,96.9] | 94.1 [91.0,96.8] | 89.6 [85.6,93.2] |
| Success, human prefix (%) | 95.1 [92.3,97.4] | 93.2 [89.7,96.2] | 95.1 [93.2,96.7] | 93.7 [91.1,96.0] | 92.2 [88.8,95.1] |
| Gap, agent human (pp) | 2.3 [ 5.2, 0.3] | 0.8 [ 1.9, 3.3] | 0.5 [ 2.7, 1.6] | 0.4 [ 2.2, 2.8] | 2.6 [ 5.2, 0.2] |
| Sign-flip | 0.11 | 0.59 | 0.67 | 0.76 | 0.04 |
| Opus 5.5 | Opus 5 | Opus 4.8 | GPT-6.1 | GLM-5.3 | GLM-5.3-Flash | |
| Boundaries (repositories) | 321 (123) | 294 (118) | 293 (121) | 291 (122) | 328 (131) | 329 (127) |
| Repositories never certified (of 140) | 41 | 52 | 57 | 61 | 43 | 40 |
| Success, agent prefix (%) | 95.9 [93.0,98.3] | 91.2 [87.0,94.8] | 91.3 [87.6,94.6] | 94.0 [90.3,97.2] | 92.8 [89.3,95.8] | 95.0 [93.0,96.7] |
| Success, human prefix (%) | 96.5 [94.3,98.2] | 94.8 [91.7,97.4] | 94.6 [91.5,97.3] | 93.4 [90.0,96.4] | 93.4 [90.7,95.6] | 94.7 [92.9,96.3] |
| Gap, agent human (pp) | 0.6 [ 3.2, 1.7] | 3.6 [ 6.6, 1.1] | 3.3 [ 6.6, 0.1] | 0.6 [ 2.4, 3.5] | 0.6 [ 3.5, 1.9] | 0.3 [ 1.5, 2.2] |
| Sign-flip | 0.69 | 0.01 | 0.05 | 0.70 | 0.67 | 0.77 |
| Fable 5 | GPT-5.6 | GLM-5.2 | Kimi K3 | |
|---|---|---|---|---|
| Paired boundaries (repositories) | 296 (121) | 280 (120) | 230 (104) | 263 (108) |
| Agent arm, visible hidden | 5.4 [ 2.1, 9.3] | 4.0 [ 1.7, 6.9] | 4.1 [ 7.8, 0.2] | 0.4 [ 3.1, 2.4] |
| Human arm, visible hidden | 3.9 [ 1.5, 6.8] | 4.4 [ 2.6, 6.5] | 5.1 [ 8.1, 2.1] | 0.9 [ 3.0, 1.1] |
| Gap, tests visible | 0.4 [ 1.5, 0.6] | 0.2 [ 0.8, 1.2] | 1.3 [ 3.9, 1.0] | 0.4 [ 1.5, 2.6] |
| Gap, tests hidden | 1.9 [ 4.8, 0.7] | 0.5 [ 2.2, 2.9] | 2.3 [ 5.2, 0.3] | 0.0 [ 2.0, 1.8] |
| Gap difference, visible hidden | 1.5 [ 1.1, 4.5] | 0.4 [ 2.7, 2.2] | 0.9 [ 2.1, 4.2] | 0.5 [ 2.1, 3.2] |
| Reviewer | Wrong accepted (%) | Correct rejected (%) | Youden | Pairs discr. (%) | Suites (%) | |
|---|---|---|---|---|---|---|
| Opus 5.5 | 77.0 [73.7,80.0] | 7.8 [5.7,10.1] | 0.15 [ 0.12, 0.19] | 18.8 | 12.8 | 1090 |
| Opus 5 | 88.9 [86.5,91.0] | 2.8 [1.8,4.1] | 0.08 [ 0.06, 0.10] | 9.7 | 6.7 | 1090 |
| Fable 5 | 92.9 [90.9,94.7] | 1.2 [0.5,2.0] | 0.05 [ 0.04, 0.07] | 6.5 | 4.9 | 1086 |
| GLM-5.3-Flash | 90.5 [87.6,92.9] | 1.2 [0.5,2.0] | 0.02 [ 0.05, 0.01] | 3.7 | 1.8 | 1085 |
| GPT-6 Astra | 40.4 [36.2,44.3] | 58.4 [54.0,62.7] | 0.01 [ 0.01, 0.04] | 8.6 | 5.8 | 1090 |
| GPT-6.1 | 41.6 [37.6,45.5] | 57.1 [52.6,61.5] | 0.01 [ 0.01, 0.03] | 8.3 | 6.3 | 1090 |
| Fable 5 | Kimi K3 | GPT-5.6 | GLM-5.2 | |
| Self-authored suites executable (%) | 89.4 | 85.3 | 75.8 | 87.3 |
| Suites passing the correct human implementation (%) | 55.9 [47.9,63.7] | 35.5 [28.7,42.5] | 30.1 [23.4,37.0] | 42.2 [35.0,49.6] |
| Suites failing wrong sibling implementations (%) | 13.0 [1.0,28.9] | 68.5 [42.5,92.7] | 50.8 [23.3,78.3] | 83.5 [67.0,97.5] |
| Repositories with a wrong sibling (sensitivity denominator) | 7 | 8 | 10 | 20 |
| Step | Requests | Repositories |
| Verified changes from the history walk | 25,519 | 1,491 |
| in the primary pool | 14,921 | – |
| in continuity runs of at least 20 | 6,316 | 141 |
| removed by retained-behavior eligibility | 1,178 | – |
| removed with runs below 20 | 240 | 22 |
| remaining primary-pool requests | 4,898 | 119 |
| Outcome | Candidates |
|---|---|
| Solved by Claude Opus 4.8 | 8,695 (58.3%) |
| Opus 0/8, then solved by GPT-5.6-sol | 816 (5.5%) |
| 0/8 by both | 5,145 (34.5%) |
| Incomplete (51 GPT runs, 214 harness E2BIG) | 265 (1.8%) |
| Class | Specifications |
|---|---|
| Solved by Claude Opus 4.8 | 3,183 (72.3%) |
| Solved only by GPT-5.6-sol | 263 (6.0%) |
| Never blind-solved by either | 886 (20.1%) |
| Incomplete campaign runs | 72 (1.6%) |
| Status | Specifications |
|---|---|
| Hard but fair: never solved blind, no specification gap found | 575 |
| Rewritten, then solved in blind pass@4 | 45 |
| Rewritten, blind validation not finished | 68 |
| Step | Specifications |
| In the 439 candidate chains | 6,740 |
| After removing one abnormal request | 6,716 |
| After a provider content filter blocked two chains | 6,688 |
| Accepted unanimously in the first wave | 4,989 (74.6%) |
| Contested after the first wave (8,539 missing-contract findings) | 1,699 |
| Rewrites by GPT-5.6: accepted / targets | 1,389 / 1,459 (95.2%) |
| Reason | Chains |
|---|---|
| Contested specifications, provider-filtered or malformed chains, and re-windowing | 42 |
| Gold-walk, packaging, apply and window-composition failures | 17 |
| Specification hygiene, gold patches on test paths, non-reproducible repaired environments | 27 |
| Environment manipulation ( § D.7 ) | 32 |
| Nondeterminism on an identical digest | 4 |
| Failure at the first two-container gate | 20 |
| Model | Near-verbatim / sampled | Rate (%) | Pre-cutoff (%) | Contrast (pp) |
|---|---|---|---|---|
| Opus 5.5 | 78 / 407 | 19.2 | 13.8 | [ , ] |
| Opus 5 | 38 / 270 | 14.1 | 8.7 | [ , ] |
| Fable 5 | 19 / 126 | 15.1 | 14.5 | [ , ] |
| GLM-5.3-Flash | 3 / 274 | 1.1 | 0.0 | [ , ] |
| GPT-6 Astra | 7 / 407 | 1.7 | 1.7 | [ , ] |
| GPT-6.1 | 6 / 407 | 1.5 | 1.2 | [ , ] |
| Fable 5 | GPT-6 Astra | Kimi K3 | GPT-5.6 | GLM-5.2 | |
| Starting points / control units | 470 / 174 | 130 / 161 | 836 / 595 | 939 / 572 | 1451 / 1594 |
| Control (verified state): own-work failure (%) | 3.8 | 4.3 | 9.6 | 16.9 | 11.9 |
| Arm D: after one untreated miss (%) | 21.8 [18.3,25.8] | 28.5 [21.4,36.7] | 25.0 [22.2,28.1] | 30.4 [27.5,33.4] | 29.3 [27.0,31.7] |
| Multiplier, D / control | 5.8 [2.2,38.0] | 6.6 [2.2,24.1] | 2.6 [1.6,4.8] | 1.8 [1.2,2.9] | 2.5 [1.8,3.4] |
| Difference, D control (pp) | 18.0 [8.3,28.8] | 24.2 [13.1,32.1] | 15.4 [7.3,23.5] | 13.4 [5.4,22.2] | 17.3 [11.5,23.4] |
| Gold state: own-work failure, same requests (%) | 13.1 | 13.5 | 5.6 | — | — |
| Fable 5 | GPT-6 Astra | Kimi K3 | GPT-5.6 | GLM-5.2 | |
| No open defect beneath the request (%) | 8.0 | 8.0 | 12.1 | 12.0 | 10.5 |
| One (%) | 12.7 | 16.2 | 18.1 | 21.5 | 21.7 |
| Two (%) | 36.1 | 29.5 | 38.8 | 28.3 | 32.2 |
| Three (%) | 33.7 | 40.0 | 48.6 | 43.8 | 49.0 |
| Four (%) | 66.1 | 74.1 | 80.1 | 57.3 | 55.0 |
| Five or more (%) | 92.5 | 84.3 | 90.0 | 70.2 | 67.1 |
| Model | Usage / 280 | Mean USD | Median USD |
|---|---|---|---|
| Fable 5 | 273 | 16.68 | 14.60 |
| GPT-6 Astra | 280 | 22.03 | 17.01 |
| Kimi K3 | 280 | 9.88 | 8.12 |
| GPT-5.6 | 279 | 12.34 | 10.19 |
| GLM-5.2 | 266 | 9.03 | 6.43 |
| Label | First | Later | All | Opus 5.5 | Opus 5 | GLM-5.3-Flash | Fable 5 | GPT-6 Astra | GPT-6.1 | GLM-5.3 | GPT-5.6 | Kimi K3 | Opus 4.8 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Regression: pre-existing behavior broken | 44.0 | 19.3 | 27.8 | 31 | 31 | 23 | 39 | 25 | 28 | 22 | 30 | 32 | 22 |
| Missed requirement: part of the specification unimplemented | 10.6 | 15.9 | 14.1 | 9 | 12 | 18 | 17 | 9 | 8 | 13 | 11 | 17 | 21 |
| Wrong logic | 10.6 | 10.6 | 10.6 | 9 | 13 | 12 | 6 | 11 | 10 | 18 | 10 | 10 | 9 |
| Integration error: new code unreachable from the tested path | 5.4 | 7.7 | 6.9 | 4 | 5 | 5 | 5 | 6 | 6 | 10 | 8 | 5 | 11 |
| Other agent-side: wrong file, syntax, unverified assumption, knowledge gap | 3.6 | 4.9 | 4.4 | 4 | 2 | 3 | 3 | 6 | 4 | 3 | 2 | 4 | 10 |
| Benchmark-side, suspected: test stricter than the specification, broken or ambiguous | 24.3 | 38.0 | 33.3 | 40 | 35 | 36 | 25 | 41 | 41 | 33 | 36 | 30 | 24 |
| Model | pass@1 (attempt 1) | [95% CI] | strict pass@1 | [95% CI] | regression rate | [95% CI] | healed | pass@8 | [95% CI] |
|---|---|---|---|---|---|---|---|---|---|
| Claude Opus 5.5 | 187 (66.8) | [60.4, 73.0] | 156 (55.7) | [49.1, 62.2] | 59 (21.1) | [16.1, 26.4] | 36 | 235 (83.9) | [79.2, 88.4] |
| Claude Opus 5 | 170 (60.7) | [54.3, 67.0] | 143 (51.1) | [44.6, 57.4] | 77 (27.5) | [22.0, 33.2] | 30 | 232 (82.9) | [77.5, 88.0] |
| Claude Fable 5 | 145 (51.8) | [45.4, 58.0] | 102 (36.4) | [29.8, 43.0] | 118 (42.1) | [35.7, 48.9] | 44 | 202 (72.1) | [66.3, 77.6] |
| GLM-5.3-Flash | 143 (51.1) | [44.3, 57.8] | 108 (38.6) | [31.8, 45.4] | 87 (31.1) | [24.9, 37.4] | 36 | 217 (77.5) | [71.6, 83.3] |
| GPT-6 Astra | 143 (51.1) | [44.3, 57.8] | 101 (36.1) | [29.6, 42.6] | 98 (35.0) | [28.8, 41.5] | 42 | 179 (63.9) | [57.2, 70.5] |
| GPT-6.1-sol | 137 (48.9) | [42.3, 55.4] | 102 (36.4) | [29.8, 43.2] | 104 (37.1) | [30.9, 43.7] | 36 | 170 (60.7) | [54.1, 67.2] |
| Model | Verifier error | Budget exit | Failed run | pass@1 with a final state |
|---|---|---|---|---|
| Claude Opus 5.5 | 2 | 0 | 0 | 187/278 (67.3) |
| Claude Opus 5 | 5 | 0 | 0 | 170/275 (61.8) |
| Claude Fable 5 | 1 | 0 | 3 | 145/276 (52.5) |
| GLM-5.3-Flash | 2 | 5 | 0 | 143/273 (52.4) |
| GPT-6 Astra | 2 | 0 | 0 | 143/278 (51.4) |
| GPT-6.1-sol | 2 | 0 | 0 | 137/278 (49.3) |
| Clean through request (%) | First-failure hazard by quarter (%) | Request | ||||||||
| Model | 1–5 | 6–10 | 11–15 | 16–20 | completion (%) | |||||
| Claude Opus 5.5 | 90.7 | 75.4 | 66.4 | 55.7 | 1.9 | 3.5 | 2.5 | 3.5 | 84.0 | |
| Claude Opus 5 | 88.2 | 73.9 | 62.1 | 51.1 | 2.5 | 3.2 | 3.4 | 3.8 | 80.8 | |
| Claude Fable 5 | 80.7 | 60.4 | 46.1 | 36.4 | 4.1 | 5.4 | 5.2 | 4.6 | 73.2 | |
| GLM-5.3-Flash | 83.6 | 63.9 | 48.9 | 38.6 | 3.5 | 5.1 | 5.2 | 4.6 | 73.9 | |
| GPT-6 Astra | 84.3 | 67.1 | 51.1 | 36.1 | 3.3 | 4.4 | 5.4 | 6.7 | 75.2 | |
| Study | Population and scope |
|---|---|
| Baseline | 280 chains, 140 repositories; ten models; pass@1 estimated over eight attempts per chain (2,240 per model), single-attempt values alongside; pass@8 over the same attempts. |
| Whole-chain repair | 280 chains, 140 repositories; five models, continuous-conversation first attempts; under the handoff protocol, ten models paired with their Autonomous first attempts ( Appendix K ). |
| Task-size and dependency statistics | 280 chains, 140 repositories. |
| Verified-prefix comparison | Retained boundaries from the 140 repositories; eleven models, model-specific retention. |
| Failed-state continuation | Eligible silent misses from the continuous-conversation first attempts, with model-specific missing outcomes; gold-state control on 120 / 130 / 256 of those states (Fable 5 / GPT-6 Astra / Kimi K3), two attempts each. |
| Blind implementation review | 109 wrong implementations per author from the Autonomous first attempts, each paired with a correct one: 2,180 items per reviewer, ten reviewers, 21,800 reviews. |
| Benchmark | Metric (source) | Unit | Count | |
|---|---|---|---|---|
| SWE-Milestone ( Deng et al., 2026 ) | Resolve Rate (Table 2), 15 agent–model configurations | milestone | 98 | round(rate ), |
| SlopCodeBench ( Orlanski et al., 2026 ) | strict and isolated solve (Table 1; best run per model) | checkpoint | 196 | round(rate ) |
| SWE-Chain ( Lam et al., 2026 ) | Build+Fix resolving (Table 3), single run | chain | 12 | not a count |
| BOBA-Bench | pass@1, attempt 1 | chain | 280 | exact |
| Benchmark | Metric | Models | Spread (%) | All pairs | Adjacent | Top five | Leader vs. runner-up (Wilson 95%) |
| SWE-Milestone | Resolve Rate | 15 | 13.4–1.3 | 9/105 | 0/14 | 0/10 | 13/98 [7.9, 21.4] vs. 12/98 [7.1, 20.2] |
| SlopCodeBench | strict solve | 15 | 14.8–2.0 | 27/105 | 0/14 | 0/10 | 29/196 [10.5, 20.4] vs. 22/196 [7.5, 16.4] |
| SlopCodeBench | isolated solve | 15 | 28.1–4.1 | 46/105 | 0/14 | 0/10 | 55/196 [22.2, 34.7] vs. 51/196 [20.4, 32.6] |
| SWE-Chain | resolving, Build+Fix | 9 | 60.8–20.2 | not testable: single run, means over 12 chains, no dispersion published; a binomial bound with 12 units separates 0/36 | |||
| Model | pass@1 | Wilson 95% |
|---|---|---|
| Opus 5.5 | 187/280 (66.8%) | [61.1, 72.0] |
| Opus 5 | 170/280 (60.7%) | [54.9, 66.2] |
| Fable 5 | 145/280 (51.8%) | [46.0, 57.6] |
| GLM-5.3-Flash | 143/280 (51.1%) | [45.2, 56.9] |
| GPT-6 Astra | 143/280 (51.1%) | [45.2, 56.9] |
| GPT-6.1 | 137/280 (48.9%) | [43.1, 54.8] |
| Diff. (pp) | Discordant | McNemar | Fisher | Bootstrap 95% | ||
|---|---|---|---|---|---|---|
| Opus 5.5 | Opus 5 | 38 / 21 | [ , ] | |||
| Opus 5.5 | Fable 5 | 69 / 27 | [ , ] | |||
| Opus 5.5 | GLM-5.3-Flash | 68 / 24 | [ , ] | |||
| Opus 5.5 | GPT-6 Astra | 59 / 15 | [ , ] | |||
| Opus 5.5 | GPT-6.1 | 66 / 16 | [ , ] | |||
| Opus 5.5 | GLM-5.3 | 75 / 18 | [ , ] |
| First failure | Later failures | |||||||
|---|---|---|---|---|---|---|---|---|
| Own tests only | Earlier tests only | Both | Regression | Earlier request broken | Regression | |||
| Opus 5.5 | 116 | 56.0 | 37.9 | 6.0 | 44.0 | 37.9 | 119 | 17.6 |
| Opus 5 | 130 | 53.8 | 41.5 | 4.6 | 46.2 | 41.5 | 180 | 18.3 |
| GLM-5.3-Flash | 165 | 61.2 | 31.5 | 7.3 | 38.8 | 33.3 | 309 | 17.5 |
| Fable 5 | 170 | 47.6 | 45.9 | 6.5 | 52.4 | 47.6 | 295 | 31.2 |
| GPT-6 Astra | 170 | 55.3 | 39.4 | 5.3 | 44.7 | 37.1 | 300 | 19.3 |
| Graded requests (%) | New failure rate (%) | Tests that fail | Chains | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Clean | New | Carrying | Both | clean repo. | carrying | Recovered (%) | Delay | Healed / broken | |||
| Opus 5.5 | 5574 | 82.9 | 3.1 | 12.9 | 1.1 | 3.6 | 7.7 | 437 | 33.2 | 2 | 36 / 123 |
| Opus 5 | 5549 | 79.9 | 3.6 | 14.5 | 2.0 | 4.3 | 11.9 | 1112 | 14.4 | 1 | 30 / 134 |
| GLM-5.3-Flash | 5528 | 73.0 | 5.2 | 18.5 | 3.3 | 6.7 | 15.3 | 1212 | 22.7 | 1 | 36 / 168 |
| Fable 5 | 5525 | 72.6 | 5.4 | 19.0 | 3.0 | 6.9 | 13.8 | 1333 | 28.5 | 1 | 44 / 174 |
| GPT-6 Astra | 5567 | 73.8 | 4.9 | 17.7 | 3.5 | 6.2 | 16.7 | 1012 | 30.7 | 1 | 42 / 177 |
| Model | Ran tests | Repo suite | Wrote test | Saw failure | Last run green | Claimed success | Green, then claimed |
|---|---|---|---|---|---|---|---|
| Fable 5 | 100.0 / 98.3 | 73.3 / 58.3 | 26.7 / 5.0 | 56.7 / 41.7 | 71.7 / 68.3 | 65.0 / 26.7 | 46.7 / 20.0 |
| GPT-6 Astra | 100.0 / 100.0 | 91.7 / 90.0 | 6.7 / 0.0 | 90.0 / 78.3 | 78.3 / 65.0 | 98.3 / 96.7 | 76.7 / 61.7 |
| Kimi K3 | 98.3 / 98.3 | 85.0 / 83.3 | 25.0 / 15.0 | 75.0 / 65.0 | 66.7 / 65.0 | 96.7 / 98.3 | 66.7 / 65.0 |
| GPT-5.6 | 100.0 / 100.0 | 86.7 / 88.3 | 13.3 / 15.0 | 80.0 / 61.7 | 95.0 / 91.7 | 40.0 / 35.0 | 40.0 / 31.7 |
| GLM-5.2 | 100.0 / 96.7 | 88.3 / 80.0 | 36.7 / 15.0 | 81.7 / 65.0 | 78.3 / 75.0 | 96.7 / 91.7 | 76.7 / 70.0 |
| All (300 / 300) | 99.7 / 98.7 | 85.0 / 80.0 | 21.7 / 10.0 | 76.7 / 62.3 | 78.0 / 73.0 | 79.3 / 69.7 | 61.3 / 49.7 |
| Request 8 | Add @app.command , @app.argument and @app.option ; a lone @app.argument or @app.option registers a command under the function’s name. GPT-5.6’s request-8 code does this, and the request passes. |
|---|---|
| Request 9 | Let the three decorators stack on one function. In a fresh conversation, the agent reads the history, finds the decorators “only just added in the latest commit” and concludes: “There was no earlier decorator contract to preserve”. It makes argument and option store definitions only, checks the stacked form (“all 41 application tests pass”) and submits. |
| Hidden tests | Request 9’s new test passes. Two request-8 tests fail: application.has(...) is False after a lone decorator. Opus 5.5, Opus 5, Fable 5, GLM-5.3 and GLM-5.3-Flash pass request 9 on their first attempts. |
| Reject (once, at the miss) | Gate (every request): completion (%) | |||||
| Repair | Next request fails (%) on a state that is | No | Perfect | |||
| Model | rate (%) | repaired | unrepaired | certified | supervisor | supervisor |
| Fable 5 | 44.6 | 5.7 | 22.7 | 3.8 | 65.7 | 77.5 |
| GPT-6 Astra | 45.4 | 5.1 | 28.2 | 4.3 | 52.1 | 68.2 |
| Kimi K3 | 29.4 | 3.4 | 25.0 | 9.6 | 48.2 | 56.1 † |
| GPT-5.6 | 30.0 | 12.4 | 30.0 | 16.9 | 43.9 | 59.3 |
| GPT-5.6 | Kimi K3 | |
|---|---|---|
| Starting points, Reject / Name / Insist (repositories) | 939 / 939 / 939 (100) | 834 / 827 / 821 (96) |
| Reject, repair rate after one round (%) | 30.0 [27.2, 33.0] | 29.5 [26.5, 32.7] |
| Name, repair rate after one round (%) | 46.4 [43.3, 49.6] | 46.8 [43.4, 50.2] |
| Name Reject, paired (pp) | 16.4 [11.0, 22.0] | 17.1 [11.2, 22.8] |
| Insist, repair rate after round 1, 2, …, 8 (%) | 30.0, 38.1, 44.3, 47.6, 49.8, 52.2, 53.0, 53.9 | 31.1, 42.3, 48.2, 52.6, 54.1, 56.0, 57.6, 58.7 |
| Increment of rounds 2, …, 8 (pp) | 8.1, 6.2, 3.3, 2.2, 2.3, 0.9, 0.9 | 11.2, 6.0, 4.4, 1.5, 2.0, 1.6, 1.1 |
| Fable 5 | GPT-6 Astra | Kimi K3 | GPT-5.6 | GLM-5.2 | |
| No supervisor: first attempts completing 20 (of 280) | 184 | 146 | 135 | 123 | 78 |
| Failed first attempts audited | 96 | 134 | 145 | 157 | 202 |
| Rescued by verification and repair | 33 | 45 | 22 | 43 | 38 |
| Perfect supervisor: completion (%) | 77.5 [72.3, 82.0] | 68.2 [62.5, 73.4] | 56.1 [50.2, 61.8] | 59.3 [53.4, 64.9] | 41.4 [35.8, 47.3] |
| Gain (pp; relative) | 11.8 (18%) | 16.1 (31%) | 7.9 (16%) | 15.4 (35%) | 13.6 (49%) |
| Unresolved continuations (counted as failures) | 0 | 0 | 18 | 0 | 0 |
| GPT-5.6-sol — no supervisor 44 [35, 54]; perfect supervisor 60 [50, 70] | |||||
|---|---|---|---|---|---|
| Completion (%) | 58 [49, 67] | 54 [44, 64] | 46 [37, 56] | 49 [39, 59] | 47 [37, 57] |
| Difference from perfect supervisor, paired (pp) | [ , 5] | [ , 1] | [ , ] | [ , ] | [ , ] |
| Chains ended by a false alarm (%) | 3 | 2 | 8 | 7 | 10 |
| Phantom rounds ( ); broken (%); unchanged (%) | 147; 2.0; 2.0 | 298; 0.7; 1.7 | 416; 1.9; 0.2 | 581; 1.2; 1.2 | 701; 1.4; 2.0 |
| Calls per phantom round, median | 8 | 8 | 7.5 | 8 | 8 |
| pass@1 (%) | Regression rate (%) | Strict (%) | Tests repaired (%) | Calls | |||
|---|---|---|---|---|---|---|---|
| Model | A / V | (pp) | A / V | (pp) | A / V | A / V | A / V |
| Opus 5.5 | 66.8 / 73.9 | [2.5, 12.0] | 21.1 / 25.7 | [0.7, 8.6] | 55.7 / 57.9 | 30 / 60 | 217 / 234 |
| Opus 5 | 60.7 / 69.6 | [3.6, 14.3] | 27.5 / 32.5 | [ , 10.6] | 51.1 / 50.0 | 26 / 43 | 401 / 486 |
| GPT-6 Astra | 51.1 / 53.9 | [ , 8.0] | 35.0 / 42.5 | [3.0, 12.2] | 36.1 / 36.4 | 12 / 39 | 182 / 209 |
| Fable 5 | 51.8 / 63.9 | [6.8, 17.5] | 42.1 / 46.1 | [ , 9.4] | 36.4 / 38.9 | 19 / 38 | 293 / 350 |
| GLM-5.3 | 46.4 / 68.6 | [15.8, 28.4] | 31.8 / 35.0 | [ , 9.8] | 38.2 / 40.7 | 16 / 49 | 560 / 684 |
| Slots | Name, | Reject once, | Name Reject once, | Insist, | Insist rounds | Round broke a test (%), | |
|---|---|---|---|---|---|---|---|
| Model | (Name / Insist) | 1 round (%) | 1 round (%) | paired (pp) | 4 rounds (%) | to match Name | Name / Reject once |
| Claude Opus 5.5 | 517 / 517 | 44.5 | 16.8 | [18.5, 37.3] | 28.8 | 12.0 / 7.2 | |
| Claude Opus 5 | 632 / 632 | – | – | – | – | – | – |
| GPT-6 Astra | 1090 / 1090 | 35.6 | – | – | – | – | 12.2 / – |
| Claude Fable 5 | 875 / 875 | – | – | – | – | – | – |
| GLM-5.3 | 808 / 808 | 27.2 | – | – | – | – | 9.8 / – |
| pass@1 (%) | vs Autonomous | vs | Regression (%) | Phantom rounds | Phantom share | ||
|---|---|---|---|---|---|---|---|
| Model | noisy / Auton. / | (pp) | (pp) | noisy / Auton. / | ( ; broke, %) | of calls (%) | |
| Claude Opus 5.5 | 0.1 | 71 / 69 / 76 | [ , 10] | [ , 2] | 41 / 20 / 28 | 169; 9.5 | 11 |
| 0.5 | 67 / 69 / 76 | [ , 7] | [ , ] | 44 / 20 / 28 | 769; 4.5 | 33 | |
| Claude Opus 5 | 0.1 | – | – | – | – | – | – |
| 0.5 | – | – | – | – | – | – | |
| GPT-6 Astra | 0.1 | 55 / 52 / 53 | [ , 11] | [ , 10] | 48 / 41 / 47 | 143; 3.5 | 6 |
| Model | Harness | pass@1 (of 58) | Paired (pp) | Strict | Regressed | Same verdict |
|---|---|---|---|---|---|---|
| Claude Opus 5.5 | mini-swe-agent | 39 [54.4, 77.9] | — | 29 | 15 | — |
| Codex CLI | 31 [40.8, 65.7] | [ , ] | 27 | 16 | 44 | |
| OpenHands SDK | 34 [45.8, 70.4] | [ , 3.4] | 30 | 17 | 47 | |
| pi | 35 [47.5, 71.9] | [ , 3.6] | 29 | 12 | 48 | |
| GPT-5.6-sol | mini-swe-agent | 32 [42.5, 67.3] | — | 20 | 27 | — |
| Codex CLI | 28 [35.9, 60.8] | [ , 0.0] | 21 | 25 | 52 |
Coding Agents
Coding agents use language models, tools, and feedback to modify software and complete engineering tasks.
See all 147 papers