← All benchmarks

SWE-bench Verified · 500 instances · one attempt each

413 of 500, at 1.85¢ per task.

← Bug-fix benchmark Technical report SWE-bench GitHub

The full SWE-bench Verified set — 500 real GitHub issues from twelve Python repositories — run end to end through Benzi on DeepSeek V4.1-Flash, graded by the official SWE-bench harness inside its own per-instance Docker images. One attempt per instance.

82.6% 413 of 500 resolved · graded by swebench.harness.run_evaluation
$9.26
total, all 500 instances
$0.0185
per task
97.6%
of input tokens served from cache
13,281
model turns, total
20.5
median turns per instance
8.7M
output tokens

Why cost is the number to look at. SWE-bench's leaderboard ranks on resolve rate alone and publishes nothing about what a run costs. The whole 500-instance run came to $9.26 — under ten dollars for a complete pass at a benchmark where published submissions routinely spend orders of magnitude more.

Versus baseline

We ran the same 500 instances through mini-swe-agent, the SWE-bench team's own minimal reference agent (version 2.4.6, installed from PyPI; source at github.com/SWE-agent/mini-swe-agent), on the same model. It resolved 410 of 500 (82.0%) and read 645,752 lines; Benzi read 326,928, which is 49.4% fewer. Lines read are every line of output from a command that views text (cat, sed -n, head, tail, nl), counted the same way for both agents, plus Benzi's read_source lines. mini-swe-agent run details

How it was run

Grading. Official SWE-bench per-instance Docker images and swebench.harness.run_evaluation (swebench 5.0.2) against the official SWE-bench/SWE-bench_Verified dataset. A patch counts only if every FAIL_TO_PASS test passes and no PASS_TO_PASS test regresses.

No network. GitHub and PyPI hosts resolved to 127.0.0.1 inside every container, so nothing could fetch the fixed version of itself.

Retries were for infrastructure only. Instances hit by Docker, API or other infrastructure failures were re-run. No instance was retried for being wrong; every instance is reported from its one attempt.

30–31 October 2026

October run 2 · by repository

Every instance in the split, grouped by the repository the issue came from.

RepositoryInstancesResolvedRate
flask11100.0%
scikit-learn323196.9%
pytest191789.5%
django23119885.7%
matplotlib342882.4%
xarray221881.8%
sympy755978.7%
sphinx443477.3%
astropy221777.3%
pylint10550.0%
requests8450.0%
seaborn2150.0%

October run 2 · every instance

All 500 runs, including the ones we lose. Click a column to sort.

Instance Repo Result Turns Cost ($)

Cost at DeepSeek V4.1-Flash standard (off-peak) list prices: $0.15/M input, $0.003/M cached input, $0.60/M output.

14 October 2026

October run 1 · by repository

Every instance in the split, grouped by the repository the issue came from.

RepositoryInstancesResolvedRate
seaborn22100.0%
flask11100.0%
pytest191894.7%
scikit-learn323093.8%
requests8787.5%
xarray221986.4%
django23119785.3%
sympy755877.3%
matplotlib342676.5%
sphinx443375.0%
astropy221568.2%
pylint10660.0%

October run 1 · every instance

All 500 runs, including the ones we lose. Click a column to sort.

Instance Repo Result Turns Cost ($)

Cost at DeepSeek V4.1-Flash standard (off-peak) list prices: $0.15/M input, $0.003/M cached input, $0.60/M output.

15–16 August 2026

August run 1 · by repository

Every instance in the split, grouped by the repository the issue came from.

RepositoryInstancesResolvedRate
requests88100.0%
flask11100.0%
pytest191894.7%
scikit-learn322990.6%
django23117977.5%
sympy755877.3%
xarray221777.3%
matplotlib342676.5%
sphinx443170.5%
astropy221568.2%
seaborn2150.0%
pylint10440.0%

August run 1 · every instance

All 500 runs, including the ones we lose. Click a column to sort.

Instance Repo Result Turns Lines read Wall (s) Cost ($)

August run 1 · how it was run

Grading. Official SWE-bench per-instance Docker images and swebench.harness.run_evaluation. A patch counts only if every FAIL_TO_PASS test passes and no PASS_TO_PASS test regresses.

No network. github.com, raw.githubusercontent.com, api.github.com, codeload.github.com, objects.githubusercontent.com, gist.github.com, pypi.org and files.pythonhosted.org all resolved to 127.0.0.1 inside every container. Across the run the agent made 244 egress attempts; none returned remote content.

No timeouts. No wall-clock cap was applied to any instance, so a slow solve is never discarded as a failure.

On the wall times. They should not be read as a measure of how fast the agent is, and they are not comparable with the timings on the 24-bug benchmark — that ran on different hardware entirely. They are also only loosely comparable with each other, because this run was itself split across two different machines, and instances that happened to start at the same moment contended for the same cores. An identical task could therefore take 45 minutes in one slot and 10 in another. None of it touches the result. SWE-bench scores whether the patch makes the tests pass; it is untimed, every instance ran to completion with no cap, and grading used the identical official harness throughout. Turns, tokens, lines read and cost are hardware-independent and comparable everywhere on this page.

Three instances produced no patch. On django-13513, matplotlib-14623 and sympy-23413 the agent investigated and stopped without attempting an edit. They are counted as failures.

Seven instances were generated twice. Each had its first run destroyed by a fault in our harness rather than by the agent — a Docker engine disconnect, a stdout-marker collision, and two dropped API connections. Instances were re-run on the basis of the fault, never on the basis of the result, and every re-run was kept as produced.

Experiments after the submission

Everything run since the 387/500 result above, recorded in full. These are experiments, not submissions: each re-attempts instances the main run already answered, under changed configurations, so none of these rows can be combined with the 387 — SWE-bench scores one attempt per instance per system. They are published for the same reason as everything else on this page: check the working.

Per-run wall/turns/lines are shown where the run records survived; earlier experiment machines were shut down before their logs were archived, so those rows carry verdicts only. Per-run cost was not recomputed for experiments.

1 · DeepSeek v4-pro probe — 18/33 on reachable failures

The failures the main run missed where the leading submission succeeded, re-attempted with the flagship reasoner (two never completed and are excluded). 55% converted — but a later control showed ~30% of failures convert on a plain same-model re-run, so this is an upper bound on the model-tier effect, not a measurement of it.

deepseek v4-pro · 33 instances
instancerepomodelwallturnslines readresolvedcost
astropy-14365astropydeepseek-pro———no—
django-11149djangodeepseek-pro———yes—
django-11239djangodeepseek-pro———yes—
django-11532djangodeepseek-pro———no—
django-11848djangodeepseek-pro———no—
django-11885djangodeepseek-pro———yes—
django-12273djangodeepseek-pro———no—
django-12774djangodeepseek-pro———yes—
django-13297djangodeepseek-pro———yes—
django-13344djangodeepseek-pro———yes—
django-13406djangodeepseek-pro———yes—
django-14376djangodeepseek-pro———no—
django-14534djangodeepseek-pro———no—
django-14559djangodeepseek-pro———yes—
django-15037djangodeepseek-pro———yes—
django-15127djangodeepseek-pro———no—
django-15916djangodeepseek-pro———no—
django-15957djangodeepseek-pro———yes—
django-15973djangodeepseek-pro———yes—
django-15987djangodeepseek-pro———yes—
django-16454djangodeepseek-pro———yes—
matplotlib-14623matplotlibdeepseek-pro———yes—
matplotlib-24870matplotlibdeepseek-pro———no—
xarray-3993xarraydeepseek-pro———yes—
xarray-4687xarraydeepseek-pro———yes—
xarray-6938xarraydeepseek-pro———no—
pytest-10356pytestdeepseek-pro———no—
scikit-learn-14710scikit-learndeepseek-pro———yes—
sphinx-10466sphinxdeepseek-pro———yes—
sphinx-8056sphinxdeepseek-pro———no—
sphinx-8638sphinxdeepseek-pro———no—
sympy-16886sympydeepseek-pro———no—
sympy-20916sympydeepseek-pro———no—

2 · Self-escalation experiment — the control that became a finding

Twenty instances (ten the main run solved, ten it failed) re-run with an upgrade_to_pro tool the agent could call if it judged more reasoning would help. It was offered in the tool list but never announced in the prompt: zero calls in twenty runs. A capability outside the model’s habitual reach behaves as if it does not exist. Four of the ten previously-solved rows failing below are grading flakes: those suites call a live external service that returned 503s that evening.

flash + unannounced escalation tool · 20 instances
instancerepomodelwallturnslines readresolvedcost
astropy-14598astropydeepseek———no—
astropy-7606astropydeepseek———yes—
django-11477djangodeepseek———no—
django-12325djangodeepseek———no—
django-13195djangodeepseek———no—
django-14140djangodeepseek———yes—
django-14170djangodeepseek———no—
requests-1724psfdeepseek———no—
requests-1766psfdeepseek———no—
requests-1921psfdeepseek———no—
requests-2317psfdeepseek———no—
requests-2931psfdeepseek———yes—
requests-5414psfdeepseek———yes—
xarray-4629xarraydeepseek———yes—
pylint-8898pylintdeepseek———yes—
pytest-5809pytestdeepseek———yes—
pytest-7521pytestdeepseek———yes—
pytest-7982pytestdeepseek———yes—
sphinx-9602sphinxdeepseek———no—
sympy-18199sympydeepseek———no—

3 · Full v4-pro run — stopped by choice at 122 instances

The start of a full 500-instance pro run, halted once its two questions were answered: pro converts only ~13% of the hard pile (instances no leading submission solves), and retains only ~90% of the main run’s wins — scaling the model is roughly a wash at several times the price. Rows here exclude the 33 probe instances above, which seeded this run’s ledger.

deepseek v4-pro · 89 instances
instancerepomodelwallturnslines readresolvedcost
astropy-12907astropydeepseek-pro———yes—
astropy-13236astropydeepseek-pro———no—
astropy-13398astropydeepseek-pro———no—
astropy-13453astropydeepseek-pro———yes—
astropy-13579astropydeepseek-pro———yes—
astropy-13977astropydeepseek-pro———no—
astropy-14096astropydeepseek-pro———yes—
astropy-14309astropydeepseek-pro———yes—
astropy-14369astropydeepseek-pro———no—
astropy-14508astropydeepseek-pro———yes—
astropy-14539astropydeepseek-pro———yes—
astropy-14598astropydeepseek-pro———no—
astropy-14995astropydeepseek-pro———yes—
astropy-7166astropydeepseek-pro———yes—
astropy-7336astropydeepseek-pro———yes—
astropy-7606astropydeepseek-pro———yes—
astropy-7671astropydeepseek-pro———yes—
astropy-8707astropydeepseek-pro———yes—
astropy-8872astropydeepseek-pro———yes—
django-10097djangodeepseek-pro———no—
django-10554djangodeepseek-pro———no—
django-10880djangodeepseek-pro———yes—
django-10914djangodeepseek-pro———yes—
django-10973djangodeepseek-pro———no—
django-10999djangodeepseek-pro———no—
django-11066djangodeepseek-pro———yes—
django-11087djangodeepseek-pro———yes—
django-11095djangodeepseek-pro———yes—
django-11099djangodeepseek-pro———yes—
django-11119djangodeepseek-pro———yes—
django-11133djangodeepseek-pro———yes—
django-11138djangodeepseek-pro———yes—
django-11141djangodeepseek-pro———no—
django-11163djangodeepseek-pro———yes—
django-11179djangodeepseek-pro———yes—
django-11206djangodeepseek-pro———yes—
django-11211djangodeepseek-pro———yes—
django-11265djangodeepseek-pro———yes—
django-11276djangodeepseek-pro———yes—
django-11292djangodeepseek-pro———yes—
django-11299djangodeepseek-pro———yes—
django-11333djangodeepseek-pro———yes—
django-11400djangodeepseek-pro———no—
django-11433djangodeepseek-pro———yes—
django-11451djangodeepseek-pro———yes—
django-11477djangodeepseek-pro———yes—
django-11490djangodeepseek-pro———yes—
django-11551djangodeepseek-pro———yes—
django-11555djangodeepseek-pro———yes—
django-11603djangodeepseek-pro———yes—
django-11728djangodeepseek-pro———no—
django-11734djangodeepseek-pro———no—
django-11740djangodeepseek-pro———yes—
django-11749djangodeepseek-pro———yes—
django-11790djangodeepseek-pro———yes—
django-11815djangodeepseek-pro———yes—
django-11820djangodeepseek-pro———no—
django-11880djangodeepseek-pro———yes—
django-11951djangodeepseek-pro———yes—
django-11964djangodeepseek-pro———no—
django-11999djangodeepseek-pro———yes—
django-12039djangodeepseek-pro———yes—
django-12050djangodeepseek-pro———yes—
django-12143djangodeepseek-pro———yes—
django-12155djangodeepseek-pro———yes—
django-12193djangodeepseek-pro———no—
django-12262djangodeepseek-pro———yes—
django-12276djangodeepseek-pro———yes—
django-12308djangodeepseek-pro———no—
django-12325djangodeepseek-pro———no—
django-12406djangodeepseek-pro———no—
django-12708djangodeepseek-pro———yes—
django-12713djangodeepseek-pro———yes—
django-12741djangodeepseek-pro———yes—
django-13195djangodeepseek-pro———no—
django-13212djangodeepseek-pro———no—
django-13794djangodeepseek-pro———no—
django-14011djangodeepseek-pro———no—
django-14034djangodeepseek-pro———no—
django-14140djangodeepseek-pro———yes—
django-14155djangodeepseek-pro———no—
django-14170djangodeepseek-pro———no—
django-14315djangodeepseek-pro———no—
django-15629djangodeepseek-pro———no—
django-15695djangodeepseek-pro———no—
django-16256djangodeepseek-pro———no—
django-16631djangodeepseek-pro———no—
django-16667djangodeepseek-pro———no—
matplotlib-21568matplotlibdeepseek-pro———no—

4 · Scope-cards experiment — a null result, kept

The failure analysis showed the agent never consults its relational tools before editing, so the harness was changed to attach the profile of every edited scope to the first edit and the commit gate. On the 98 failures whose shape that information addresses it converted 13/69 attempted (19%) — under the ~30% a plain re-run converts by variance. The mechanism was removed. Published because a measured null is worth more than a plausible mechanism: information at the right moment was not the binding constraint.

flash + scope cards · 69 failures re-attempted
instancerepomodelwallturnslines readresolvedcost
astropy-13033astropydeepseek1,266s18228no—
astropy-13398astropydeepseek1,713s39822no—
astropy-13977astropydeepseek1,587s46703no—
astropy-14182astropydeepseek1,338s31417yes—
astropy-14365astropydeepseek1,243s19446yes—
astropy-14369astropydeepseek1,574s34970no—
astropy-14598astropydeepseek1,663s38720no—
astropy-7606astropydeepseek1,160s16135yes—
django-10097djangodeepseek1,405s38257no—
django-10554djangodeepseek3,202s811,247no—
django-10973djangodeepseek1,159s15222no—
django-10999djangodeepseek1,027s1042no—
django-11087djangodeepseek1,153s671,198no—
django-11141djangodeepseek655s38323no—
django-11149djangodeepseek560s36647yes—
django-11239djangodeepseek376s22409no—
django-11532djangodeepseek340s23353no—
django-11734djangodeepseek1,099s74618no—
django-11820djangodeepseek270s19245no—
django-11848djangodeepseek197s13156no—
django-11885djangodeepseek1,298s42769no—
django-12273djangodeepseek711s58588no—
django-12325djangodeepseek447s25193no—
django-12406djangodeepseek545s23384yes—
django-12774djangodeepseek292s17156yes—
django-13195djangodeepseek267s20107no—
django-13212djangodeepseek364s30624no—
django-13297djangodeepseek461s23255no—
django-13344djangodeepseek1,066s58718yes—
django-13406djangodeepseek1,103s661,373no—
django-14011djangodeepseek662s44364no—
django-14140djangodeepseek263s19364no—
django-14155djangodeepseek425s27261no—
django-14315djangodeepseek195s23171no—
django-14376djangodeepseek291s24297no—
django-14534djangodeepseek622s34149no—
django-14559djangodeepseek210s15322no—
django-15037djangodeepseek431s34530no—
django-15098djangodeepseek854s51925no—
django-15563djangodeepseek787s43473yes—
django-15629djangodeepseek752s54819no—
django-15695djangodeepseek630s57597no—
django-15916djangodeepseek250s16346no—
django-15957djangodeepseek1,076s60806no—
django-15987djangodeepseek545s33218yes—
django-16256djangodeepseek558s411,698yes—
django-16263djangodeepseek1,646s1301,520no—
django-16454djangodeepseek449s28298no—
django-16502djangodeepseek752s28339no—
django-16631djangodeepseek718s31368no—
django-16667djangodeepseek300s19368no—
matplotlib-21568matplotlibdeepseek1,169s69263no—
matplotlib-23299matplotlibdeepseek530s26555no—
matplotlib-24870matplotlibdeepseek550s45557yes—
matplotlib-26208matplotlibdeepseek911s51621no—
matplotlib-26466matplotlibdeepseek484s40822no—
seaborn-3187seaborndeepseek730s49939no—
xarray-3993xarraydeepseek305s25318yes—
xarray-4687xarraydeepseek389s39958no—
xarray-6938xarraydeepseek347s35601no—
xarray-6992xarraydeepseek198s22274no—
xarray-7229xarraydeepseek600s45840no—
pylint-4551pylintdeepseek851s1011,105no—
pylint-4604pylintdeepseek109s13195no—
pylint-4661pylintdeepseek291s16173no—
pylint-8898pylintdeepseek454s43539no—
pytest-10356pytestdeepseek421s36562no—
sphinx-10466sphinxdeepseek305s33372yes—
sphinx-7462sphinxdeepseek437s24124no—

5 · Retention under re-run — the variance tax, measured

The same configuration re-attempting instances the main run already solved, stopped by choice at 67 graded: 63/67 held (94%). The losses cluster on instances the pro run also lost — original wins that pass roughly one attempt in three. Every re-run of any agent pays this tax; it is the empirical reason the way up is engine work, not re-rolls.

flash + scope cards · 67 previously-solved instances
instancerepomodelwallturnslines readresolvedcost
astropy-12907astropydeepseek435s16493yes—
astropy-13236astropydeepseek666s34277no—
astropy-13453astropydeepseek480s29782yes—
astropy-13579astropydeepseek822s311,078yes—
astropy-14096astropydeepseek673s23142yes—
astropy-14309astropydeepseek389s19208yes—
astropy-14508astropydeepseek643s28232yes—
astropy-14539astropydeepseek481s24202yes—
astropy-14995astropydeepseek330s17331yes—
astropy-7166astropydeepseek597s38193yes—
astropy-7336astropydeepseek354s1265yes—
astropy-7671astropydeepseek409s15105yes—
astropy-8707astropydeepseek529s29597yes—
astropy-8872astropydeepseek501s23262yes—
django-10880djangodeepseek326s22389yes—
django-10914djangodeepseek233s15185yes—
django-11066djangodeepseek106s6134yes—
django-11095djangodeepseek169s1277yes—
django-11099djangodeepseek137s1150yes—
django-11119djangodeepseek180s1866yes—
django-11133djangodeepseek212s21315yes—
django-11138djangodeepseek593s43953yes—
django-11163djangodeepseek223s23124yes—
django-11179djangodeepseek173s975yes—
django-11206djangodeepseek464s22309yes—
django-11211djangodeepseek458s33422yes—
django-11265djangodeepseek502s421,177no—
django-11276djangodeepseek294s22153yes—
django-11292djangodeepseek340s30720yes—
django-11299djangodeepseek234s28211yes—
django-11333djangodeepseek253s18147yes—
django-11400djangodeepseek418s29371no—
django-11433djangodeepseek374s22227yes—
django-11451djangodeepseek165s13196yes—
django-11490djangodeepseek413s32648yes—
django-11551djangodeepseek243s20108yes—
django-11555djangodeepseek630s33369yes—
django-11603djangodeepseek172s13204yes—
django-11728djangodeepseek348s26203yes—
django-11740djangodeepseek378s41421yes—
django-11749djangodeepseek650s41133yes—
django-11790djangodeepseek238s20138yes—
django-11815djangodeepseek467s29163yes—
django-11880djangodeepseek170s21203yes—
django-11951djangodeepseek287s35340yes—
django-11964djangodeepseek579s23606yes—
django-11999djangodeepseek182s1661yes—
django-12039djangodeepseek291s21431yes—
django-12050djangodeepseek210s18153yes—
django-12125djangodeepseek620s31943yes—
django-12143djangodeepseek152s1119yes—
django-12155djangodeepseek164s1376yes—
django-12193djangodeepseek409s35260yes—
django-12262djangodeepseek303s32259yes—
django-12276djangodeepseek174s14294yes—
django-12304djangodeepseek512s30525yes—
django-12308djangodeepseek273s20349no—
django-12419djangodeepseek212s15408yes—
django-12708djangodeepseek406s31321yes—
django-12713djangodeepseek215s18145yes—
django-12741djangodeepseek145s8138yes—
django-12858djangodeepseek490s35493yes—
django-13012djangodeepseek385s24308yes—
django-13023djangodeepseek200s13252yes—
django-13028djangodeepseek498s26216yes—
django-13089djangodeepseek310s21262yes—
django-13109djangodeepseek248s19127yes—

Experiments, round two

The continuation of the section above: multi-agent architectures and deterministic issue analysis, each tried against the instances the main run missed. Same rules -- experiments, not submissions; nothing here combines with the 387; crashes stay in the record as crashes. Rows marked “—” were generated but never graded because the run was cancelled first.

6 · Tester agent — fabricated ground truth anchors the worker

A second agent writes a reproduction test from the issue, in parallel and in isolation; the worker must pass it. Every worker ran the tests heavily and satisfied them — and conversions stayed under re-run variance: the tester, reading the same issue with the same model, encodes the same misreading, and its wrong tests ANCHOR the worker. A mid-run infrastructure failure (a shared writable runtime volume poisoned by an agent shell — since made read-only) crashed 24 rows; they are recorded as crashes. The first 17 clean rows ran a flash tester, the remainder a Sonnet tester after the rebuild.

worker + tester · 158 rows recorded
instancerepoconfigwallturnslines readresolvedcost
pylint-4604pylintflash tester195s1288no—
sphinx-9711sphinxflash tester120s1692no—
pylint-4661pylintflash tester335s33217no—
django-14140djangoflash tester463s30344no—
django-11239djangoflash tester498s31444no—
django-10999djangoflash tester548s2144no—
django-11820djangoflash tester548s23176no—
django-11532djangoflash tester590s3199no—
sphinx-7462sphinxflash tester260s1455no—
django-14315djangoflash tester630s29336yes—
django-14559djangoflash tester742s——crash—
django-14170djangoflash tester816s32461no—
sympy-16886sympyflash tester862s——crash—
django-15127djangoflash tester453s27354no—
django-12774djangoflash tester388s31360yes—
astropy-7606astropyflash tester988s——crash—
django-11477djangoflash tester4s——crash—
astropy-14598astropyflash tester682s36603no—
django-14376djangoflash tester5s——crash—
sphinx-9602sphinxflash tester33s——crash—
sympy-18199sympyflash tester33s——crash—
django-12325djangoflash tester452s36300no—
pylint-8898pylintflash tester18s——crash—
django-15916djangoflash tester18s——crash—
sympy-20916sympyflash tester21s——crash—
django-11848djangoflash tester208s12115no—
django-14155djangoflash tester30s——crash—
django-14034djangoflash tester40s——crash—
astropy-14182astropyflash tester20s——crash—
django-12406djangoflash tester21s——crash—
django-15987djangoflash tester11s——crash—
sphinx-7748sphinxflash tester3s——crash—
django-13195djangoflash tester295s21239no—
sphinx-10466sphinxflash tester21s——crash—
django-13297djangoflash tester22s——crash—
django-11141djangoflash tester20s——crash—
django-14534djangoflash tester22s——crash—
sphinx-8056sphinxflash tester3s——crash—
sphinx-7590sphinxflash tester6s——crash—
sphinx-9461sphinxflash tester6s——crash—
sympy-21930sympyflash tester5s——crash—
astropy-7606astropysonnet tester1s——crash—
django-14559djangosonnet tester3s——crash—
django-14011djangosonnet tester3s——crash—
django-13794djangosonnet tester3s——crash—
django-11149djangosonnet tester3s——crash—
django-14376djangosonnet tester4s——crash—
django-13513djangosonnet tester4s——crash—
xarray-3993xarraysonnet tester4s——crash—
django-11477djangosonnet tester6s——crash—
sympy-18763sympysonnet tester6s——crash—
sphinx-9602sphinxsonnet tester5s——crash—
django-16667djangosonnet tester7s——crash—
sympy-16886sympysonnet tester8s——crash—
django-15916djangosonnet tester5s——crash—
sympy-18199sympysonnet tester5s——crash—
pylint-8898pylintsonnet tester6s——crash—
sympy-20916sympysonnet tester7s——crash—
django-14034djangosonnet tester7s——crash—
django-14155djangosonnet tester7s——crash—
astropy-14182astropysonnet tester5s——crash—
django-12406djangosonnet tester7s——crash—
sphinx-7748sphinxsonnet tester6s——crash—
django-15987djangosonnet tester7s——crash—
sphinx-10466sphinxsonnet tester6s——crash—
django-13297djangosonnet tester7s——crash—
django-14534djangosonnet tester7s——crash—
django-11141djangosonnet tester12s——crash—
sympy-16886sympysonnet tester1s——crash—
django-16667djangosonnet tester3s——crash—
django-14011djangosonnet tester3s——crash—
django-14376djangosonnet tester3s——crash—
django-13794djangosonnet tester4s——crash—
django-14559djangosonnet tester4s——crash—
django-11149djangosonnet tester4s——crash—
astropy-7606astropysonnet tester5s——crash—
xarray-3993xarraysonnet tester5s——crash—
sympy-18763sympysonnet tester5s——crash—
django-11477djangosonnet tester6s——crash—
sympy-18199sympysonnet tester5s——crash—
sphinx-9602sphinxsonnet tester8s——crash—
pylint-8898pylintsonnet tester6s——crash—
django-13513djangosonnet tester11s——crash—
django-15916djangosonnet tester7s——crash—
sympy-20916sympysonnet tester7s——crash—
django-14034djangosonnet tester7s——crash—
django-14155djangosonnet tester7s——crash—
astropy-14182astropysonnet tester6s——crash—
sphinx-7748sphinxsonnet tester5s——crash—
django-12406djangosonnet tester7s——crash—
django-15987djangosonnet tester7s——crash—
sphinx-10466sphinxsonnet tester5s——crash—
django-13297djangosonnet tester6s——crash—
django-14534djangosonnet tester18s——crash—
sphinx-9461sphinxsonnet tester42s——crash—
django-11141djangosonnet tester44s——crash—
sympy-15875sympysonnet tester43s——crash—
django-16454djangosonnet tester42s——crash—
sympy-21930sympysonnet tester42s——crash—
astropy-13033astropysonnet tester43s——crash—
sphinx-7590sphinxsonnet tester43s——crash—
sphinx-8056sphinxsonnet tester43s——crash—
django-12273djangosonnet tester42s——crash—
django-15695djangosonnet tester40s——crash—
xarray-4687xarraysonnet tester28s——crash—
xarray-6938xarraysonnet tester104s——crash—
django-10973djangosonnet tester92s——crash—
xarray-6992xarraysonnet tester66s——crash—
django-14792djangosonnet tester70s——crash—
django-16502djangosonnet tester70s——crash—
django-15252djangosonnet tester70s——crash—
django-13344djangosonnet tester70s——crash—
django-13212djangosonnet tester70s——crash—
django-15037djangosonnet tester70s——crash—
sympy-22080sympysonnet tester42s——crash—
django-16631djangosonnet tester70s——crash—
pytest-10356pytestsonnet tester70s——crash—
django-11477djangosonnet tester294s1990no—
django-14376djangosonnet tester346s24246no—
xarray-3993xarraysonnet tester420s37166no—
django-14559djangosonnet tester440s——crash—
django-16667djangosonnet tester475s22212no—
astropy-7606astropysonnet tester530s1983yes—
django-13513djangosonnet tester556s3264——
django-11149djangosonnet tester581s43540yes—
django-13794djangosonnet tester703s42395no—
sympy-18763sympysonnet tester719s1825no—
sympy-16886sympysonnet tester729s1736yes—
django-15916djangosonnet tester396s27319no—
django-14155djangosonnet tester418s23136no—
sphinx-9602sphinxsonnet tester750s59628no—
django-14034djangosonnet tester637s49478no—
django-14011djangosonnet tester1,225s52538no—
django-12406djangosonnet tester683s38565no—
pylint-8898pylintsonnet tester832s47781no—
django-15987djangosonnet tester566s——crash—
sympy-18199sympysonnet tester956s36170no—
sphinx-10466sphinxsonnet tester402s52296yes—
django-13297djangosonnet tester683s35318no—
sympy-20916sympysonnet tester1,095s40352no—
astropy-14182astropysonnet tester1,094s——crash—
sphinx-8056sphinxsonnet tester683s43958yes—
django-14534djangosonnet tester964s53444no—
sphinx-9461sphinxsonnet tester719s48798no—
sphinx-7590sphinxsonnet tester759s53589no—
django-12273djangosonnet tester629s34236no—
django-16454djangosonnet tester620s32340no—
django-11141djangosonnet tester1,109s——crash—
django-10973djangosonnet tester313s21248no—
django-15695djangosonnet tester644s41575no—
sympy-21930sympysonnet tester1,126s34135no—
django-13212djangosonnet tester552s27645no—
pytest-10356pytestsonnet tester770s59331no—
xarray-6992xarraysonnet tester884s——crash—
sympy-15875sympysonnet tester1,657s83255no—
xarray-4687xarraysonnet tester936s75587yes—
astropy-13033astropysonnet tester1,717s——crash—
django-16631djangosonnet tester612s30344no—

7 · Verifier agent — the rubber stamp

After the worker finishes, a second model reads only the issue and the diff and rules AGREE or REVISE; a REVISE sends one critique back. Measured: the flash verifier revised 1 run in 32; Sonnet, on different weights, about 1 in 8 — both effectively agree with any plausible-looking diff, and outcomes tracked plain re-run variance. Rows through 33 ran the flash verifier, the rest Sonnet.

worker + verifier · 43 rows recorded
instancerepoconfigwallturnslines readresolvedcost
django-14559djangoflash verifier196s959yes—
django-11239djangoflash verifier200s11138no—
django-14315djangoflash verifier283s19333no—
astropy-7606astropyflash verifier309s1480yes—
django-10999djangoflash verifier330s1791no—
pylint-4604pylintflash verifier344s33202no—
sphinx-9711sphinxflash verifier153s18160no—
django-14140djangoflash verifier365s2446no—
pylint-4661pylintflash verifier371s29446no—
django-14170djangoflash verifier416s22476no—
django-11820djangoflash verifier430s21262no—
sphinx-7462sphinxflash verifier201s2090no—
django-15127djangoflash verifier202s12246no—
sympy-16886sympyflash verifier530s1057yes—
django-13513djangoflash verifier221s25172——
xarray-3993xarrayflash verifier264s23228yes—
django-11532djangoflash verifier608s23269no—
django-13195djangoflash verifier222s20130yes—
django-12325djangoflash verifier337s20155no—
django-12774djangoflash verifier372s30328no—
django-16667djangoflash verifier200s1449no—
django-14376djangoflash verifier229s19310no—
django-11477djangoflash verifier267s2079no—
django-13794djangoflash verifier453s32168no—
sphinx-9602sphinxflash verifier309s33691no—
django-11848djangoflash verifier604s29202no—
astropy-14598astropyflash verifier1,041s47989no—
sympy-18199sympyflash verifier643s18184no—
django-15916djangoflash verifier644s36467yes—
django-11149djangoflash verifier935s511,094yes—
django-14155djangoflash verifier516s26341no—
django-14034djangoflash verifier534s21488no—
django-13513djangoflash verifier162s1687——
sphinx-10466sphinxsonnet verifier300s34546yes—
django-11141djangosonnet verifier179s13169no—
django-14534djangosonnet verifier394s30167no—
django-15987djangosonnet verifier428s26250no—
astropy-14182astropysonnet verifier432s29362no—
django-13297djangosonnet verifier513s28473——
django-12406djangosonnet verifier633s25485——
django-14011djangosonnet verifier678s28407——
sphinx-8056sphinxsonnet verifier495s56470——
sympy-18763sympysonnet verifier880s37341——

8 · Symptom map — deterministic issue analysis

No second agent: the issue’s own evidence (traceback frames, quoted code, named symbols) is resolved against the code index mechanically and handed to the worker before it starts, ranked by convergence. It fired on roughly half the instances and resolved real sites — and conversions stayed at re-run variance, because most misses fail AFTER finding the right place: the dominant failure mode is fix precision, not localization. An offline check against the gold patches had already shown the instances that genuinely mislocate are exactly the ones whose issues carry no resolvable evidence at all.

worker + symptom map · 53 rows recorded
instancerepoconfigwallturnslines readresolvedcost
pylint-4604pylintsymptom map152s2695no—
django-14559djangosymptom map153s11312no—
django-11239djangosymptom map179s17217yes—
django-14315djangosymptom map212s15328yes—
django-14140djangosymptom map216s16145no—
pylint-4661pylintsymptom map241s30225no—
sphinx-9711sphinxsymptom map111s1386no—
django-10999djangosymptom map264s13149no—
django-14170djangosymptom map268s23372no—
astropy-7606astropysymptom map280s12125yes—
sphinx-7462sphinxsymptom map107s16132no—
django-11532djangosymptom map393s33312no—
django-11820djangosymptom map400s20273no—
django-15127djangosymptom map212s12244no—
xarray-3993xarraysymptom map257s28281no—
django-12774djangosymptom map250s1364yes—
sympy-16886sympysymptom map511s936yes—
django-12325djangosymptom map263s20198no—
django-13513djangosymptom map286s1589——
django-13195djangosymptom map194s14172no—
django-16667djangosymptom map176s1278no—
django-13794djangosymptom map384s24304yes—
django-11848djangosymptom map290s13135no—
django-11477djangosymptom map256s27317no—
sphinx-9602sphinxsymptom map229s27211no—
astropy-14598astropysymptom map691s37530no—
django-15916djangosymptom map322s22295no—
django-14376djangosymptom map415s30416no—
django-14034djangosymptom map319s23555no—
django-14155djangosymptom map274s20220no—
django-11149djangosymptom map746s511,354yes—
pylint-8898pylintsymptom map495s52516no—
django-15987djangosymptom map205s16282no—
sympy-18763sympysymptom map646s1832yes—
sympy-18199sympysymptom map589s21353no—
astropy-14182astropysymptom map376s21380no—
django-12406djangosymptom map481s32640no—
django-14011djangosymptom map980s44489no—
sphinx-10466sphinxsymptom map256s34577yes—
django-14534djangosymptom map327s26483no—
sphinx-7590sphinxsymptom map296s28369no—
django-13297djangosymptom map408s14316no—
django-11141djangosymptom map409s42321no—
sphinx-7748sphinxsymptom map614s591,275no—
sympy-20916sympysymptom map904s23306——
astropy-13033astropysymptom map420s22245——
django-10973djangosymptom map153s11187——
xarray-6938xarraysymptom map249s31334——
sphinx-8056sphinxsymptom map554s53561——
django-16454djangosymptom map325s19112——
django-12273djangosymptom map432s22137——
sympy-15875sympysymptom map611s1338——
xarray-6992xarraysymptom map199s18357——

21 August 2026

August run 2

A second full pass over all 500 instances with the current engine (worker + scope cards + symptom map + verifier, all on DeepSeek v4-flash), one attempt per instance, graded identically to August run 1. 391 of 500 resolved (78.2%) at a total generation cost of $37.33. Instances whose first attempt died to infrastructure were re-attempted; the table shows each instance’s final attempt.

RepositoryInstancesResolvedRate
flask11100.0%
requests88100.0%
seaborn22100.0%
scikit-learn322990.6%
pytest191684.2%
sympy756181.3%
django23118178.4%
xarray221777.3%
sphinx443272.7%
matplotlib342573.5%
astropy221568.2%
pylint10440.0%
Instance Repo Result Turns Lines read Wall (s) Cost ($)