Skip to content

docs: publish DeepSeek Flash DeepSWE 1.1 comparison - #1848

Open
hqhq1025 wants to merge 3 commits into
apache:mainfrom
hqhq1025:docs/deepswe-1.1-harness-comparison
Open

docs: publish DeepSeek Flash DeepSWE 1.1 comparison#1848
hqhq1025 wants to merge 3 commits into
apache:mainfrom
hqhq1025:docs/deepswe-1.1-harness-comparison

Conversation

@hqhq1025

Copy link
Copy Markdown
Contributor

Summary

Docs-only: English write-up of DeepSWE 1.1 harness A/B run deepseek-v4-flash-maka-vs-opencode-deepswe-full-v1 (Maka vs OpenCode, both on DeepSeek V4 Flash at max reasoning effort), plus the committed per-task outcome and failure-class CSV.

This is the DeepSWE counterpart to #1719 (Terminal-Bench 2.1), and it reaches a different conclusion — which is the main reason it is worth publishing.

Full report:docs/eval/deepswe-1.1-deepseek-v4-flash-maka-vs-opencode.md

Results

MakaOpenCode
Pass@1 (accepted)52/111 (46.85%)40/112 (35.71%)
Paired Pass@1 (110 pairs)52/110 (47.27%)38/110 (34.55%)
Exclusive passes34 Maka-only20 OpenCode-only
Budget-exhausted cells0/111 (0%)0/112 (0%)
Cost per pass (accepted dataset)$0.2358$0.3196

Exact two-sided McNemar over the 54 discordant pairs: p = 0.0759.

The headline is a non-result, and the report says so

p = 0.0759 does not reach the conventional 0.05 threshold. On this suite the pass-rate difference between the two harnesses is not statistically distinguishable from chance. The 12.73 pp point estimate favors Maka and is the best available estimate of the effect, but a 34:20 discordant split arises by chance roughly 8% of the time under the null.

The report states this explicitly rather than leading with the point estimate:

Reporting this as "Maka outperforms OpenCode" would overstate the evidence; reporting it as "no difference" would understate the point estimate. The accurate statement is that the direction favors Maka and the magnitude is not resolved by this sample.

Why the contrast with #1719 matters

Terminal-Bench 2.1DeepSWE 1.1
Discordant pairs2054
Split16:4 (80%)34:20 (63%)
McNemar p0.01180.0759
Budget exhaustion gap10.11 pp0 pp

Sample sizes are comparable; what differs is lopsidedness. Two same-model paired runs on two frozen suites give opposite verdicts on statistical significance — direct evidence for the scope limitation already stated in the Terminal-Bench report ("evidence about the fixed 89-task suite, not proof of a universal advantage on other task distributions").

Also note budget exhaustion was 0% on both arms here, versus 16.85% / 26.97% on Terminal-Bench. On DeepSWE the entire observed difference sits in solution quality, not deadline behavior.

Economics: the clearer signal

Both arms spent nearly identically ($12.26 vs $12.14, 1.0% apart) and cost per attempted task is effectively equal ($0.1115 vs $0.1104), but Maka converted that spend into 30% more passes — so cost per pass differs by 35.5%, driven by effectiveness rather than resource efficiency.

A non-obvious token result is documented: Maka consumed 8.6% fewer total tokens but 71.7% more uncached input tokens. Tool-result pruning rewrites conversation history and invalidates the prompt-cache prefix; since uncached input is priced 50× higher than cache hits, the two effects nearly cancel. The report frames this as an engineering trade-off, not an efficiency ranking.

Coverage disclosure

completed_with_gaps: 226/226 cells attempted, 223 model-scored, 3 unscored infrastructure cells (2 Maka, 1 OpenCode), 0 missing final usage. The paired denominator is 110 rather than 113 as a result. Exactly one Agent admission per cell — no retries, no adjudications.

The report also discloses two known DeepSWE benchmark defects that place an unmeasured floor under both arms' failure counts (#17 unpassable task, #31 wildcard base-test false negatives). They apply symmetrically and should not bias the paired direction.

Verification

  • checked that the committed CSV contains exactly 113 unique tasks and reproduces the final 52/111 and 40/112 counts
  • checked that the Markdown headline, paired denominators, cost-per-pass values, token footprints, and coverage counts agree with the frozen v4 report (16/16 fields)
  • recomputed the exact paired p-value from the 34/20 discordant outcomes: 2 × P[Binomial(54, 0.5) ≤ 20] = 0.075905
  • verified the listed SHA-256 values against the frozen manifest, report, results WAL, attempts WAL, and committed CSV
  • ran git diff --check

Repository code tests were not run because this is a documentation-only change.

Builder added 3 commits August 1, 2026 15:27
English write-up of harness A/B run
deepseek-v4-flash-maka-vs-opencode-deepswe-full-v1 (Maka vs OpenCode,
both on DeepSeek V4 Flash at max reasoning effort), plus the committed
per-task outcome and failure-class CSV.
Headline: Maka 52/111 (46.85%) vs OpenCode 40/112 (35.71%). On the 110
fully paired tasks the delta is 12.73 pp favoring Maka, but the exact
two-sided McNemar test over the 54 discordant pairs gives p = 0.0759 --
it does not reach the 0.05 threshold, so the pass-rate difference is not
statistically distinguishable on this suite. Cost per pass does differ
materially: $0.2358 vs $0.3196 (OpenCode 35.5% higher), driven by
effectiveness rather than resource efficiency.
This contrasts with the Terminal-Bench 2.1 run (16:4 discordant,
p = 0.0118) at comparable sample size, supporting the conclusion that
harness advantage is task-distribution dependent.
Trajectory-level analysis of maka's 59 failures on the DeepSWE 1.1 full
run, from 20,353 tool calls, 18,439 provider steps and 47.5M chars of
final-step prompts.
Three findings that change where effort should go:
1. Secret redaction is corrupting source fed to the model. 2,055
[redacted] spans across 113 prompts; only 20 (0.9%) are real
credentials. The rest hit lexer 'Token:', hash-map 'Key:' and git
SHAs. Three one-line rule fixes remove ~92% of the false positives.
2. Failures have no behavioural separator from passes -- steps, test
invocations, edits and re-reads are statistically identical, and
failures spend MORE reasoning. All 59 end self-declared complete,
zero give-ups. This is a spec-comprehension gap, not a loop-control
gap, so investment belongs in what the model sees.
3. The two harnesses fail isomorphically: normalised failure-class
distributions nearly overlap and several tasks fail on the identical
assertion in both arms. maka's 12-task lead comes from solving more,
not from failing better.
Also documents three refuted hypotheses (history-reasoning replay,
pruning-induced context loss, over-editing), the measured cache cost of
pruning (10.8 prefix breaks/task, 100% prune-caused, ~30k tokens), and
the verifier fail-closed rule behind 59% of failed f2p tests never
running.
Re-ran the duplicate-read analysis against the real trajectory.json
schema (tool calls use function_name/arguments, not toolName/args --
the earlier attempt matched nothing and was discarded).
Keying reads by (path, line-range) instead of path alone collapses the
figure by 11x:
by path 3,208 dups 28.6/task 49.4% of reads
by path+range 285 dups 2.5/task 4.4% of reads
91.1% of what looked like re-reading is sed window-scrolling through a
large file -- normal behaviour, not waste. The 'read short-circuit'
improvement is downgraded from 'potentially 10-20% of steps' to
negligible.
Tool-call census from this pass (Bash 13,921 / Edit 3,575 / Read 2,053 /
Write 613 / Grep 149 / Glob 42) matches the independent count in the
behaviour section exactly, confirming the schema parse is correct.

@Astro-HanAstro-Han left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1. The reported cost-per-pass does not match the numbers beside it. The MD gives OpenCode total $12.1438, "40 passes", and $0.319574/pass, but $12.1438 ÷ 40 = $0.3036, and $0.319574 is what you get dividing by 38 (the paired-pass count). Either the pass count is wrong or the denominator is a different cohort; whichever it is, state the cost-per-pass denominator (accepted dataset vs paired) and keep it consistent across the two files and the "35.5% higher" claim (28.75% by the $0.3036 reading).

P2. The delta signs are inverted in the tables. Under the Candidate − baseline header (deepswe-1.1-deepseek-v4-flash-maka-vs-opencode.md:29-30,48) the rows read −11.13 and −12.73 pp, while Maka is higher on every row and the TL;DR says "in Maka's favor". The sibling Terminal-Bench report uses +13.48 / +9.84 pp for the leading arm. Flip the three signs.

P2. Failure cohorts drift across the analysis. The CSV is 52 passed / 59 failed / 2 unscored, but the zh file uses 59 failures at one point, 60 at three others, 61 in the later tables, then 59 again; OpenCode similarly switches between 71, 72, and 73. Declare each denominator (scored failures, non-passes, trajectory-available) in the methodology section and label the tables accordingly; do not count unscored cells as failures.

P2. The cross-benchmark conclusion is stronger than the statistics allow. "Harness advantage is task-distribution dependent" is drawn from two independent p-values (DeepSWE p=0.0759, Terminal-Bench p=0.0118); significance in one suite and not the other is not itself a significant difference. Either add a direct heterogeneity/interaction check or reword to a descriptive statement.

P2. The CSV is committed with CRLF endings, the only non-LF text file in the repo (all 2412 other tracked text files are LF, including both sibling eval CSVs). Shell pipelines and exact-match checks see verification_failed\r in the last column, and the declared SHA-256 (caeb18c7…) reproduces only from the CRLF blob. Re-commit as LF and update the hash.

P2. The zh file is a live working document, not a frozen report. It contains an open TODO section titled 未完成项 and a prioritized product-change backlog with code locations, and its line-pinned citations are already drifting (active-tool-result-prune.ts:115 is at :125 on current main). docs/README.md puts implementation plans and time-sensitive TODOs in issues, not docs/. Move the backlog and TODO list into a GitHub issue, keep the frozen-run analysis, and pin citations to a commit SHA instead of line numbers.

P3. The two files disagree on numbers for the same run: output tokens 11,629,019 / 12,791,831 (MD:73) vs 11,931,438 / 13,254,334 (zh:33), mean steps 165 / 152 (MD:76) vs 166.9 / 151.7 (zh §3.5). Reconcile or state the different measurement (telemetry-summed vs accepted final usage).

P3. A tool-surface asymmetry is disclosed only in the zh file: the Maka arm ran with MAKA_AGENT_TOOLS=false (no todowrite/webfetch) while OpenCode made 263 + 173 such calls. Benign here (allow_internet=false makes webfetch inert), but the English Frozen setup table should state it too.

@Astro-Han

Copy link
Copy Markdown
Contributor

/agentic_review

@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0)📘 Rule violations (0)📎 Requirement gaps (0)

Grey Divider

Great, no issues found!

Qodo reviewed your code and found no material issues that require review

Grey Divider

Tip of the day
💡 Did you know, you can keep summaries lean with Finding overflow, which tucks the rest behind 'View more'

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

@github-actionsgithub-actionsBot added the effort/XL Over 1000 readable lines label Aug 27, 2026

@Astro-HanAstro-Han left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for publishing the experiment artifacts and methodology in a reviewable form. I reviewed exact head 8442cc41e9351c5b33237902cb454d7129720c12 against the current main integration boundary and left two additional suggestions that are separate from the existing statistical/content review. The historical exact-head checks predate one current gate, and the current e2e check is also failing, so this is not an approval. Please do push back if these documents are intentionally frozen against an older repository policy or if the remediation table is explicitly non-authoritative.

中文摘要

感谢把实验产物和方法公开成可审查文档。对照当前 main,我补充两条与既有统计/内容意见不同的建议:一条是现行 ASF header gate,另一条是脱敏修复建议的安全边界。历史绿色检查早于该 gate,当前 e2e 也失败,因此不是批准。若文档刻意冻结在旧 policy,或修复表明确不具备指导性,也欢迎直接说明。

AI-assisted review disclosure: Codex ran an independent analysis lane; Astro-Han independently verified the exact head, production path, and severity, and owns this review.

@@ -0,0 +1,182 @@
# DeepSWE 1.1 — DeepSeek V4 Flash: Maka vs OpenCode

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P1] Suggestion (category ① — normal integration into current main): could both new Markdown reports carry the canonical ASF source header before the title? Current scripts/asf-license-headers.mjs covers .md files and only excludes docs/eval/*.csv; current CI runs check:asf-headers unconditionally before affected tests. This file and deepswe-1.1-maka-failure-analysis.zh.md both begin directly with #, so rebasing this exact content onto main will deterministically fail the source-header gate even though this branch’s older test run predates that policy. Please add the canonical HTML-comment header to both files and rerun the current exact-head gate. If eval reports are intended to be a reviewed exclusion, please push back and point to that policy rather than adding an ad-hoc exception.


| 优先级 | 改动 | 实测依据 | 工作量 | 风险 | 代码位置 |
|---|---|---|---|---|---|
| **P0-1** | `[a-f0-9]{40,}` 排除 40/64 位纯 hex | 消除 957 处(46.6%) | 1 行 | 低 | `redaction.ts:41` |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] Suggestion (category ① — a maintainer following the published remediation table): could these recommendations preserve the credential-safety invariant instead of presenting three broad deletions as one-line, low-risk fixes? Current redaction tests intentionally cover ordinary 40/64-character hex values and JSON key/token fields because those shapes can be real credentials, not only Git hashes or lexer identifiers. Removing the patterns/suffix wholesale would improve this benchmark by exposing values that production currently treats as secrets. The examples in this report also show that some “qualified key” hits are source variable assignments, so the table does not establish that the remaining 20 are true credentials. I suggest framing these as evidence for a context-aware classifier, keeping positive credential regressions, and labeling the benchmark sample/review method; please push back if a separate threat model proves these shapes are never secrets in supported transcripts.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

effort/XLOver 1000 readable lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@hqhq1025@Astro-Han