Running DeepSeek V4 Flash across all of DeepSWE on one DGX Spark
Complete Updated October 3, 2026 · all 113 of 113 tasks scored
DeepSeek V4 Flash 0731, quantized to EXL3 3-bpw and served on a single 128 GB DGX Spark, ran the entire DeepSWE 1.1 suite — 113 original, contamination-free software-engineering tasks (swe-bench-ultra source) graded by real test suites. Every task ran at max reasoning under the same mini-swe-agent scaffold, one at a time.
The gap between “almost” and “done”
DeepSWE scores 1.0 only if every fail-to-pass test passes — a 54/55 counts the same as a 0. The model passes 89% of target tests on average, and most of the tasks it “fails” miss by only a handful of tests (17 by a single test).
It rarely breaks anything else, either: 106 of 113 tasks caused zero regressions, with just 21 previously-passing tests broken across the whole run. The misses are almost all incomplete features, not broken code.
Fail-to-pass coverage, by task
Each bar is the share of a task’s target tests that passed. Green solved the task outright; amber fell short. Sorted by coverage; the misses cluster near the top.
By language
DeepSWE is an even split across TypeScript, Python and Go, with a small Rust and JavaScript tail.
Every scored task
Per-task detail: tests, one-shot reward, agent steps (model calls), wall-clock minutes, output tokens and decode throughput on the Spark.
| Task | Repo | Lang | Result | Fail→pass | Steps | Min | Out tok | tok/s |
|---|---|---|---|---|---|---|---|---|
| abs-module-cache-flags | abs-lang/abs | go | solved | 20/20 | 142 | 81 | 78,537 | 16.1 |
| abs-stepped-slices | abs-lang/abs | go | solved | 6/6 | 147 | 44 | 73,414 | 28.1 |
| actionlint-action-pinning-lint | rhysd/actionlint | go | miss | 54/55 | 195 | 65 | 108,585 | 27.9 |
| adaptix-name-mapping-aliases | reagento/adaptix | python | solved | 44/44 | 284 | 90 | 149,704 | 27.7 |
| aiomonitor-task-snapshots-diff | aio-libs/aiomonitor | python | miss | 52/53 | 149 | 49 | 89,159 | 30.2 |
| anko-default-function-arguments | mattn/anko | go | solved | 2/2 | 166 | 104 | 159,389 | 25.7 |
| anko-typed-variable-bindings | mattn/anko | go | solved | 9/9 | 156 | 76 | 80,259 | 17.7 |
| arcane-drift-detection-baselines | getarcaneapp/arcane | go | solved | 82/82 | 176 | 73 | 92,125 | 21.1 |
| arktype-json-schema-refs-dependencies | arktypeio/arktype | typescript | miss | 23/25 | 392 | 121 | 178,492 | 24.6 |
| awilix-async-container-initialization | jeffijoe/awilix | typescript | miss | 23/24 | 93 | 48 | 81,293 | 28.0 |
| bandit-incremental-cache-control | PyCQA/bandit | python | miss | 87/88 | 127 | 47 | 79,390 | 28.2 |
| bandit-interprocedural-taint-checks | PyCQA/bandit | python | solved | 66/66 | 194 | 60 | 97,291 | 27.1 |
| bandit-structured-nosec-directives | PyCQA/bandit | python | solved | 69/69 | 147 | 66 | 111,041 | 28.0 |
| boa-hierarchical-evaluation-cancellation | boa-dev/boa | rust | solved | 17/17 | 382 | 105 | 163,598 | 26.0 |
| cattrs-partial-structuring-recovery | python-attrs/cattrs | python | miss | 67/69 | 214 | 82 | 137,362 | 28.0 |
| clack-async-autocomplete-options | bombshell-dev/clack | typescript | miss | 74/82 | 99 | 71 | 119,107 | 28.0 |
| claude-code-by-agents-recursive-delegation | baryhuang/claude-code-by-agents | typescript | miss | 2/7 | 132 | 54 | 90,304 | 27.6 |
| cliffy-config-file-parsing | c4spar/cliffy | typescript | miss | 36/37 | 186 | 68 | 116,915 | 28.8 |
| csstree-shorthand-expansion-compression | csstree/csstree | javascript | miss | 74/79 | 198 | 83 | 145,785 | 29.3 |
| dasel-html-document-format | TomWright/dasel | go | miss | 144/146 | 87 | 49 | 84,316 | 28.8 |
| dateutil-rfc5545-timezone-interop | dateutil/dateutil | python | miss | 65/67 | 180 | 74 | 140,540 | 31.5 |
| drizzle-orm-window-function-builders | drizzle-team/drizzle-orm | typescript | miss | 115/130 | 182 | 57 | 92,028 | 27.1 |
| dynamodb-toolbox-conditional-attribute-requirements | dynamodb-toolbox/dynamodb-toolbox | typescript | solved | 31/31 | 352 | 153 | 178,235 | 19.4 |
| dynamodb-toolbox-lazy-recursive-schemas | dynamodb-toolbox/dynamodb-toolbox | typescript | solved | 37/37 | 352 | 155 | 181,830 | 19.5 |
| effect-sse-httpapi-streaming | Effect-TS/effect | typescript | miss | 43/47 | 349 | 121 | 161,885 | 22.2 |
| eicrud-keyset-pagination-cursor | eicrud/eicrud | typescript | solved | 14/14 | 170 | 61 | 74,526 | 20.3 |
| etree-xml-diff-patch | beevik/etree | go | solved | 52/52 | 110 | 114 | 200,658 | 29.3 |
| expr-try-catch-errors | expr-lang/expr | go | miss | 77/79 | 258 | 140 | 217,269 | 25.9 |
| fastapi-deprecation-response-headers | fastapi/fastapi | python | miss | 136/137 | 228 | 69 | 112,721 | 27.3 |
| fastapi-implicit-head-options | fastapi/fastapi | python | solved | 43/43 | 222 | 79 | 128,486 | 27.0 |
| fd-deterministic-multi-key-sorting | sharkdp/fd | rust | solved | 43/43 | 222 | 66 | 106,529 | 27.0 |
| geo-shapeindex-serialization | golang/geo | go | miss | 14/24 | 116 | 35 | 53,666 | 25.3 |
| go-critic-doc-link-checker | go-critic/go-critic | go | miss | 2/3 | 164 | 77 | 110,012 | 23.7 |
| go-genai-streamed-function-args | googleapis/go-genai | go | solved | 6/6 | 187 | 77 | 111,991 | 24.3 |
| go-git-worktree-merge-conflicts | go-git/go-git | go | solved | 17/17 | 196 | 99 | 141,076 | 23.6 |
| goreleaser-retry-publish-auditing | goreleaser/goreleaser | go | solved | 29/29 | 228 | 97 | 125,461 | 21.6 |
| gql-incremental-graphql-delivery | graphql-python/gql | python | miss | 14/17 | 193 | 53 | 86,242 | 27.3 |
| happy-dom-abort-pending-body-reads | capricorn86/happy-dom | typescript | solved | 14/14 | 184 | 58 | 73,445 | 21.2 |
| happy-dom-deterministic-intersectionobserver | capricorn86/happy-dom | typescript | miss | 13/14 | 187 | 84 | 135,243 | 27.0 |
| helm-array-merge-strategies | helm/helm | go | solved | 47/47 | 191 | 93 | 134,325 | 24.1 |
| helm-unified-manifest-stream | helm/helm | go | solved | 5/5 | 252 | 82 | 91,284 | 18.6 |
| httpx-deterministic-cookie-store | encode/httpx | typescript | miss | 113/115 | 185 | 80 | 144,586 | 30.3 |
| httpx-multipart-response-parsing | encode/httpx | python | solved | 122/122 | 107 | 60 | 99,416 | 27.5 |
| httpx-streaming-json-iteration | encode/httpx | python | solved | 108/108 | 90 | 46 | 78,186 | 28.6 |
| igel-persist-feature-schema | nidhaloff/igel | python | miss | 6/24 | 138 | 42 | 70,865 | 28.0 |
| ink-grid-box-layout | vadimdemedes/ink | typescript | miss | 20/25 | 182 | 82 | 101,060 | 20.6 |
| ipython-session-bundle-replay | ipython/ipython | python | miss | 4/17 | 134 | 67 | 90,461 | 22.4 |
| katex-multicolumn-array-spans | KaTeX/KaTeX | javascript | miss | 92/94 | 286 | 104 | 167,722 | 26.9 |
| kcp-go-multiplexed-kcp-streams | xtaci/kcp-go | go | solved | 30/30 | 99 | 98 | 153,662 | 26.1 |
| kea-atomic-signal-selectors | keajs/kea | typescript | miss | 11/12 | 251 | 177 | 284,165 | 26.8 |
| kgateway-consistent-hash-policy | kgateway-dev/kgateway | go | solved | 2/2 | 234 | 90 | 83,808 | 15.5 |
| kombu-single-active-consumer-priority | celery/kombu | python | miss | 84/85 | 164 | 86 | 121,498 | 23.6 |
| kombu-virtual-queue-dead-lettering | celery/kombu | python | miss | 66/76 | 159 | 64 | 95,388 | 25.0 |
| koota-composite-trait-aspects | pmndrs/koota | typescript | miss | 49/51 | 254 | 106 | 170,880 | 26.8 |
| koota-deferred-mutation-buffer | pmndrs/koota | typescript | miss | 70/71 | 233 | 109 | 172,872 | 26.4 |
| koota-entity-snapshot-rollback | pmndrs/koota | python | solved | 84/84 | 169 | 63 | 101,471 | 26.8 |
| koota-pair-relation-tracking | pmndrs/koota | typescript | solved | 38/38 | 286 | 113 | 173,170 | 25.5 |
| koota-query-predicates | pmndrs/koota | typescript | miss | 39/43 | 266 | 111 | 169,503 | 25.4 |
| kysely-window-grouping-helpers | kysely-org/kysely | typescript | miss | 0/254 | 211 | 56 | 86,823 | 26.0 |
| langchain-request-coalescing | langchain-ai/langchain | python | miss | 44/50 | 195 | 157 | 113,780 | 12.0 |
| mashumaro-flattened-dataclass-fields | Fatal1ty/mashumaro | python | miss | 63/66 | 196 | 79 | 120,842 | 25.6 |
| meriyah-explicit-resource-declarations | meriyah/meriyah | typescript | solved | 49/49 | 255 | 106 | 170,104 | 26.8 |
| mnamer-daemon-watch-lifecycle | jkwill87/mnamer | python | miss | 34/51 | 132 | 58 | 99,319 | 28.4 |
| mobly-grouped-test-barriers | google/mobly | python | solved | 79/79 | 172 | 63 | 111,772 | 29.8 |
| narwhals-rolling-window-suite | narwhals-dev/narwhals | python | solved | 103/103 | 280 | 88 | 138,994 | 26.3 |
| numba-stencil-boundary-modes | numba/numba | python | solved | 29/29 | 266 | 139 | 154,151 | 18.5 |
| obsidian-linter-auto-table-of-contents | platers/obsidian-linter | typescript | miss | 33/41 | 160 | 61 | 102,318 | 27.9 |
| obsidian-linter-link-format-conversion | platers/obsidian-linter | typescript | miss | 59/60 | 163 | 57 | 90,159 | 26.5 |
| obsidian-linter-scoped-ignore-markers | platers/obsidian-linter | typescript | solved | 33/33 | 197 | 91 | 140,537 | 25.8 |
| ofetch-per-origin-circuit-breaker | unjs/ofetch | typescript | solved | 47/47 | 120 | 74 | 120,715 | 27.3 |
| onedump-dump-encryption-pipeline | liweiyi88/onedump | go | miss | 15/82 | 99 | 48 | 69,055 | 24.0 |
| opa-rego-rule-profiling | open-policy-agent/opa | go | solved | 25/25 | 224 | 144 | 142,205 | 16.5 |
| opa-template-string-reconstruction | open-policy-agent/opa | go | miss | 2/5 | 367 | 133 | 162,870 | 20.4 |
| optique-conditional-option-dependencies | dahlia/optique | typescript | solved | 36/36 | 258 | 102 | 154,542 | 25.3 |
| oxvg-structural-selector-preservation | noahbald/oxvg | rust | solved | 6/6 | 405 | 144 | 188,070 | 21.8 |
| participle-grammar-conflict-analysis | alecthomas/participle | go | miss | 89/91 | 143 | 94 | 139,093 | 24.5 |
| pebble-durability-wait-apis | cockroachdb/pebble | go | miss | 58/59 | 235 | 163 | 147,117 | 15.0 |
| pest-character-class-coalescing | pest-parser/pest | rust | miss | 100/104 | 169 | 78 | 102,203 | 21.8 |
| prometheus-transactional-reload-status | prometheus/prometheus | typescript | miss | 15/15 | 194 | 79 | 97,930 | 20.6 |
| prometheus-typed-label-sorting | prometheus/prometheus | go | miss | 16/17 | 122 | 66 | 99,470 | 25.2 |
| psd-tools-blend-range-api | psd-tools/psd-tools | python | solved | 45/45 | 135 | 54 | 91,507 | 28.0 |
| pwntools-tube-multiplexing | Gallopsled/pwntools | python | solved | 73/73 | 134 | 86 | 127,826 | 24.8 |
| python-statemachine-state-data-scoping | fgmacedo/python-statemachine | python | miss | 68/72 | 266 | 74 | 105,692 | 23.8 |
| query-persist-restored-query-state | TanStack/query | typescript | miss | 8/8 | 208 | 73 | 112,882 | 25.8 |
| quill-shared-toolbar-focus | slab/quill | typescript | miss | 11/13 | 199 | 88 | 138,276 | 26.1 |
| returns-validated-error-accumulation | dry-python/returns | python | solved | 159/159 | 215 | 71 | 119,003 | 27.8 |
| scc-bounded-memory-spilling | boyter/scc | go | miss | 28/31 | 129 | 43 | 68,509 | 26.7 |
| scriggo-method-declarations | open2b/scriggo | go | solved | 48/48 | 363 | 116 | 181,684 | 26.0 |
| skrub-duration-encoding | skrub-data/skrub | python | solved | 130/130 | 217 | 70 | 86,527 | 20.6 |
| sql-formatter-bigquery-pipe-formatting | sql-formatter-org/sql-formatter | typescript | solved | 26/26 | 131 | 58 | 92,570 | 26.4 |
| sqlfmt-create-table-ddl-formatting | tconbeer/sqlfmt | python | miss | 28/32 | 247 | 182 | 250,229 | 22.9 |
| sqlite-utils-safe-import-checkpoints | simonw/sqlite-utils | python | solved | 60/60 | 209 | 79 | 144,778 | 30.7 |
| superjson-error-stack-serialization | flightcontrolhq/superjson | typescript | miss | 73/80 | 88 | 57 | 101,670 | 29.6 |
| task-task-graph-export | go-task/task | go | solved | 20/20 | 233 | 100 | 121,597 | 20.3 |
| tengo-callable-instance-isolation | d5/tengo | go | miss | 21/23 | 164 | 77 | 121,498 | 26.4 |
| tengo-destructuring-bindings | d5/tengo | go | miss | 86/91 | 263 | 83 | 119,145 | 24.0 |
| termenv-preserve-ansi-resets | muesli/termenv | go | miss | 28/35 | 74 | 56 | 97,694 | 28.9 |
| testem-bail-on-test-failure | testem/testem | javascript | miss | 55/90 | 284 | 77 | 109,211 | 23.5 |
| testem-per-launcher-reports | testem/testem | javascript | miss | 64/65 | 200 | 84 | 120,657 | 23.8 |
| textual-kitty-key-phases | Textualize/textual | python | miss | 12/23 | 166 | 77 | 117,249 | 25.4 |
| textual-richlog-follow-state | Textualize/textual | python | miss | 14/20 | 240 | 84 | 125,155 | 24.9 |
| tomlkit-toml-table-converters | python-poetry/tomlkit | python | solved | 60/60 | 145 | 78 | 141,832 | 30.3 |
| true-myth-iterable-collection-combinators | true-myth/true-myth | typescript | solved | 96/96 | 168 | 53 | 89,000 | 27.9 |
| ts-pattern-match-each | gvergnaud/ts-pattern | typescript | solved | 85/85 | 125 | 61 | 106,324 | 29.2 |
| updo-policy-alerting | Owloops/updo | go | solved | 17/17 | 98 | 52 | 77,114 | 24.6 |
| valibot-recursive-schema-composition | open-circle/valibot | typescript | miss | 2/10 | 263 | 121 | 188,195 | 25.9 |
| vitest-duration-sharding | vitest-dev/vitest | typescript | solved | 56/56 | 262 | 88 | 111,734 | 21.1 |
| vulture-persistent-analysis-cache | jendrikseipp/vulture | python | solved | 24/24 | 89 | 72 | 103,719 | 23.9 |
| wasmi-trap-coredumps | wasmi-labs/wasmi | rust | miss | 0/22 | 395 | 130 | 180,971 | 23.3 |
| wazero-multi-module-snapshots | wazero/wazero | go | solved | 78/78 | 85 | 54 | 81,060 | 25.0 |
| yaegi-go-embed-directives | traefik/yaegi | go | miss | 0/38 | 306 | 138 | 130,647 | 15.8 |
| yjs-map-conflict-detection | yjs/yjs | javascript | miss | 8/9 | 207 | 99 | 148,013 | 25.0 |
| ytt-jsonpath-query-api | carvel-dev/ytt | go | miss | 102/103 | 139 | 63 | 109,621 | 29.1 |
Method
- Hardware. One NVIDIA DGX Spark (GB10, 128 GB unified LPDDR5X).
- Model. DeepSeek V4 Flash 0731, EXL3 3.0-bpw, REAP-pruned to 216/256 experts, served on vLLM/sparkinfer, ~384K context — following the MiaAI-Lab single-Spark recipe.
- Reasoning. Max, via
chat_template_kwargs: {thinking: true, reasoning_effort: "max"}with--max-model-len 393216. - Harness. mini-swe-agent through the datacurve pier runner, one task per invocation, one concurrent, resumable.
- Re-runs. Tasks that ended on infrastructure errors (a model-server blip, or a quantization-related format abort) were re-run once to give them a complete attempt. Only general, task-agnostic scaffold changes were made — notably raising the format-error tolerance from 3 to 10 — with no per-task hints and no access to the held-out grading tests. On re-run, one such task recovered to a full solve and one confirmed a genuine near-miss.
Cost & energy
- Compute. ~159 GPU-hours across the scored tasks, 13.9M output tokens, ~22,436 model calls (avg 85 min/task at max reasoning).
- Electricity ≈ $2.83. The Spark draws ~120–140 W at the wall under memory-bandwidth-bound decode; ~159 h works out to ~21 kWh, and Florida Power & Light's 2026 residential rate is ~13.7¢/kWh all-in. (Power draw is estimated, so treat this as a rough figure.)
- vs. a frontier API. The 13.9M output tokens alone would run ~$209 at a $15/M-token output rate; counting input context across the model calls, the API-equivalent is several hundred dollars. Run locally, the marginal cost was roughly 1% of that.
- In DeepSWE-leaderboard format (per task). Pass@1 45% · 199 steps · 123k output tokens · $0.03/task in electricity — against the leaderboard's ~$2–4/task on frontier APIs. (Single run, so no confidence interval on Pass@1.)
How it fails
Every non-solve produces a specific signal — a named failing test or a compile error. None return plausible-looking wrong output that slips past the tests.
- Named test failures. 17 tasks missed by a single test, 24 by 2–5, 16 by more, and 3 scored zero. That last one was a single missing method: the TypeScript test suite failed to compile, so no tests ran. One missing API surface zeros the whole suite, where a dynamically-typed language would give partial credit.
- Rarely runs out of room. No task hit the 1000-step budget (the most any used was 405). It finishes and submits rather than hanging — with one exception: a single long, hard task (a large Rust change) wandered ~400 steps, exhausted the model's context window, and was cut off with non-compiling code. So the limit it can hit is context length, not the step budget.
- Overconfident summaries. The agent sometimes overstates its result — one run reported the task solved while scoring zero. The tests are the arbiter, not the agent's summary.
Variance is not characterized here: tasks are scored once, and a single clean re-run moved a near-miss by ~2 tests without changing its pass/fail. Separately, ~56 attempts failed on harness / Docker build-engine stalls — not the model — and were resolved by forcing Docker's legacy builder.
Complete run — all 113 tasks scored. Three tasks scored zero because the patch failed to compile (one TypeScript, two Rust), which zeros the whole suite; regressions count only pass-to-pass tests broken on tasks that built. Steps count model calls, not tool calls. Throughput is per-task mean decode rate on a single request.