Impact

Measured, not claimed

8 bugs were planted in the ShopLite demo repo; IBM Bob worked 8 of them from the customer's report to a failing test, a culprit commit and a verified fix. Every number is computed from the case events and Bob's task log — docs/benchmark.md.

Culprit commit matches the answer key

8/8

  • 2 found by git bisect live, during the run
  • 5 found by git bisect in a follow-up Bob task
  • 1 named by the Historian from git history

Bugs proven

8/8

0 unproven · RED test → fix → all tests green

Median time to a failing test

4m 02s

from the customer's report to a RED reproduction

Fully live run (bug #5), start to proof

7m 44s

culprit by bisect at 4m 01s · 0 human prompts

Bobcoins per fix

2.93

median · range 2.39–5.36

Compared with one-shot models

This compares evidence, not model quality. Bob worked inside the repo, could run its tests and produced a proof anyone can re-run; 7 models (five on IBM watsonx.ai, plus Gemini 3.1 Pro and Claude Opus 4.6) got the source in the prompt and answered each bug once, without running anything. Every answer looked finished, with a fix and a test, yet 18 of 56 did not fix the bug, and only running them showed which. Cimex Fix is that run, automated for every fix. The best model, gpt-oss-120b, got 8/8 fixes with proof, matching Cimex Fix's 8/8, and that is only known because the checks ran. Gemini's and Opus's one miss (#1) changed the behaviour instead of restoring it: an empty coupon field now shows an error instead of meaning “no coupon”. Their own tests passed because they asserted their own fix design, which the Reproducer's symptom-only rule forbids. One script scores every answer, Bob's included, and the answer key's independent probe decides whether a bug is fixed.

All 56 one-shot answers

named a culprit and returned a fix and a test
56/56
fixed the bug (independent probe)
38/56
came with a test that proves the fix
30/56
broke existing tests
5/56
ContenderFixed (independent probe)Nothing brokenOwn test RED→GREENFix with proofCulprit commitCost and time per bug
Cimex Fix (IBM Bob)Bob pipeline: runs tests and git bisect8/88/88/88/88/84/8 during the run2.93 Bobcoins median per bug
13m 45s median to proof
Granite 4 H Smallone answer, cannot run code2/86/81/81/80/87,296 tokens
8.3 s per answer (median)
Llama 3.3 70Bone answer, cannot run code4/88/82/82/86/87,204 tokens
13.05 s per answer (median)
Llama 4 Maverickone answer, cannot run code5/86/83/83/84/87,461 tokens
9 s per answer (median)
Mistral Small 3.1one answer, cannot run code5/87/83/82/85/87,907 tokens
9.9 s per answer (median)
gpt-oss-120bone answer, cannot run code8/88/88/88/86/88,474 tokens
14 s per answer (median)
Gemini 3.1 Pro (High)one answer, cannot run code7/88/88/87/87/846,871 tokens
75.45 s per answer (median)
Claude Opus 4.6 (Thinking)one answer, cannot run code7/88/88/87/87/841,157 tokens
41.2 s per answer (median)
Per bug. Hover a cell for the four checks behind it.
BugCimex FixGranite 4 H SmallLlama 3.3 70BLlama 4 MaverickMistral Small 3.1gpt-oss-120bGemini 3.1 Pro (High)Claude Opus 4.6 (Thinking)
#1 Empty coupon field → total shows ₹NaNfix with proofyesculprityesfix with proofnoculpritnofix with proofnoculpritnofix with proofnoculpritnofix with proofnoculpritnofix with proofyesculpritnofix with proofnoculpritnofix with proofnoculpritno
#2 Totals off by ₹0.01fix with proofyesculprityesfix with proofnoculpritnofix with proofnoculprityesfix with proofnoculpritnofix with proofnoculpritnofix with proofyesculpritnofix with proofyesculprityesfix with proofyesculprityes
#3 Delivery date one day early after 8 PM ISTfix with proofyesculprityesfix with proofnoculpritnofix with proofyesculprityesfix with proofnoculprityesfix with proofyesculprityesfix with proofyesculprityesfix with proofyesculprityesfix with proofyesculprityes
#4 Pagination drops the last productfix with proofyesculprityesfix with proofnoculpritnofix with proofnoculprityesfix with proofyesculprityesfix with proofnoculprityesfix with proofyesculprityesfix with proofyesculprityesfix with proofyesculprityes
#5 Search became case-sensitivefix with proofyesculprityesfix with proofyesculpritnofix with proofyesculprityesfix with proofnoculprityesfix with proofyesculprityesfix with proofyesculprityesfix with proofyesculprityesfix with proofyesculprityes
#6 Negative quantity accepted → negative totalfix with proofyesculprityesfix with proofnoculpritnofix with proofnoculpritnofix with proofyesculprityesfix with proofnoculprityesfix with proofyesculprityesfix with proofyesculprityesfix with proofyesculprityes
#7 Double-click "Place order" → two ordersfix with proofyesculprityesfix with proofnoculpritnofix with proofnoculprityesfix with proofyesculpritnofix with proofnoculpritnofix with proofyesculprityesfix with proofyesculprityesfix with proofyesculprityes
#8 Coupon applies twice → discount over 100%fix with proofyesculprityesfix with proofnoculpritnofix with proofnoculprityesfix with proofnoculpritnofix with proofnoculprityesfix with proofyesculprityesfix with proofyesculprityesfix with proofyesculprityes
  • The models got every file under src/ and the git history up front, but not the tests and no way to run code; Bob started from the report, explored the repo itself and could run its tests. Bob read the screenshots as images; the models got their visible text.
  • One answer per model, asked on 2026-09-26: a single sample, not an average. watsonx.ai models ran at temperature 0 (us-south); Gemini and Claude Opus ran through Google's Antigravity CLI (headless, one fresh session per bug, default temperature, no commands run). Prompts and raw answers are in the repo.
  • Bob's culprit count is the final result, including follow-up bisects; 4/8 were named during the runs.
  • In Cimex Fix, Granite writes the plain-English summaries and powers /triage; it does not write the fixes.
  • Control: every probe fails on the unfixed code.

Time to proof, per bug

In run order. Runs #3 and #8 include time spent waiting on a human while a pipeline bug was being fixed; bug #5 ran after the fixes. Hover or focus a bar for details.

Time to proofFailing (RED) test written
  • #4 Pagination drops the last product
  • #6 Negative quantity accepted → negative total
  • #1 Empty coupon field → total shows ₹NaN
  • #3 Delivery date one day early after 8 PM IST
  • #8 Coupon applies twice → discount over 100%
  • #5 Search became case-sensitive
  • #7 Double-click "Place order" → two orders
  • #2 Totals off by ₹0.01

Every run

BugIntakeRED testProvenHuman promptsBobcoinsCulprit commitAnswer keyHow it was found
#4 Pagination drops the last productissue text6m 09s14m 39s02.84882203d refactor(catalog): compute pagination bounds explicitlyMatchbisect (follow-up Bob task)
#6 Negative quantity accepted → negative totalserver log2m 58s7m 40s02.78c3fb68f refactor(cart): accept numeric strings for quantitiesMatchHistorian (git history)
#1 Empty coupon field → total shows ₹NaNscreenshot6m 19s21m 06s04.91c3f394a refactor(coupons): extract coupon rule parserMatchbisect (follow-up Bob task)
#3 Delivery date one day early after 8 PM ISTPDF (QA report)5m 06s43m 49s32.39b4369d9 perf(delivery): compute IST date without Intl.DateTimeFormatMatchbisect (follow-up Bob task)
#8 Coupon applies twice → discount over 100%screenshot4m 32s34m 01s45.36185f248 feat(cart): allow stacking multiple coupon codesMatchbisect (follow-up Bob task)
#5 Search became case-sensitiveissue text3m 12s7m 44s03.06649b24a perf(catalog): memoize search indexMatchbisect (live, during the run)
#7 Double-click "Place order" → two ordersissue text + log2m 25s8m 02s02.54985e247 refactor(orders): derive duplicate-order check from order historyMatchbisect (follow-up Bob task)
#2 Totals off by ₹0.01issue text3m 32s12m 51s03.0398e2fce feat(cart): sum multiple line items in cart totalsMatchbisect (live, during the run)

How to read these numbers

  • Times run from the moment the Lead opens the case; “proven” is the last publish of the Proof of Fix.
  • Early runs hit a bisect bug: Bob passed the repo path with a lowercase drive letter, so Vitest loaded twice and every commit was skipped. After the fix, a follow-up bisect confirmed those culprits; bug #5 found its culprit live.
  • Human prompts are messages typed after the first one. Bobcoins come from IBM Bob's task log; building the Bob pack cost 4.83 more, and all Bob work so far totals 32.64.
  • There is no manual baseline, so no human-versus-Bob time comparison is claimed.

Generated 2026-09-27 07:35 UTC.