Benchmark Review

DeepSWE v1.1

Reviewed: Sep. 7, 2026

Benchmark creator: Datacurve

Verdict: Flawed

DeepSWE is a software engineering benchmark. Its tasks were written from scratch and span 91 repositories. We found issues in at least 23 out of 113 tasks (over 20.3%), leading us to designate the benchmark as Flawed.

Methodology

We ran a sweep using Opus 5 and Sol 5.6 to analyze all 113 tasks and a subset of trajectories to detect errors. We audited and confirmed each error by hand. We started by looking only at false negatives, and after identifying 23 instances we had surpassed the threshold of evidence for marking the benchmark as Flawed, and therefore did not review other error types.

Of the 23 observed instances of false negatives, 18 (78%) were due to an error that we believe could affect any task. In these cases, the models edited the existing tests. Editing the existing tests and adding new tests can break the grader, but the models have no way to know this and are not instructed to avoid doing so.1

Representative Errors

To grade a submission, the verifier applies the agent’s submitted changes in a fresh container. It also adds the hidden tests and updates any existing tests that would be rendered obsolete by the task. Before doing so, the verifier discards any changes the agent made to these files. This verification system can cause the grading process to fail, mainly in the following ways:

  • Duplicated symbol definitions: The agent defines a symbol, usually a test function, that the verifier’s tests also define in the same package. Example: While solving the onedump-dump-encryption-pipeline task, Fable 5 modifies encryption/config_test.go, defining TestLoadKeyFromEnv, TestLoadKeyFromFile, and TestLoadKeyFromLiteral inside the encryption package. The verifier defines hidden tests with the same names in the same package, producing redeclaration errors.
  • Agent tests depend on symbols that the verifier removes: The agent defines a symbol in a file that the verifier restores, but references it from another file the verifier leaves unchanged. Example: While solving the actionlint-action-pinning-lint task, Sol 5.6 max defines a helper function, actionPinningWorkflow, inside rule_action_pinning_test.go, and calls it from other test files. The verifier adds a test file with the same name, removing the agent’s function definition and causing undefined errors.

Errors

TaskError TypeNotesAffected Datacurve trials
actionlint-action-pinning-lintFalse negativeThe verifier deletes rule_action_pinning_test.go, but command_test.go and linter_test.go still call its actionPinningWorkflow helper. The test package then fails to compile.Sol 5.6 max
anko-typed-variable-bindingsFalse negativeThe model’s vm/vmTypedBindings_test.go and hidden vm/typed_bindings_test.go both define TestTypedBindingsDeclarations, so the test package fails to compile.Opus 5 max
eicrud-keyset-pagination-cursorFalse negativeThe model adds the CURSOR_* errors to shared/CrudErrors.ts, but the verifier runs Jest against the old generated shared/CrudErrors.js without rebuilding it. The new errors are therefore undefined.Opus 5 max
Kimi K3 max
etree-xml-diff-patchFalse negativeThe verifier deletes diff_test.go, but diff_edge_test.go still calls its mustDoc and docWrite helpers. The P2P test package then fails to compile.Qwen3 8 Max xhigh
geo-shapeindex-serializationFalse negativeModel shapeindex_coder_test.go, shapeindex_coding_test.go, or shapeindex_encode_decode_test.go and hidden shapeindex_encode_test.go define the same encodeDecodeIndex helper. The test package then fails to compile.Opus 4.8 max
Opus 4.8 max
Qwen3 8 Max xhigh
Opus 4.8 xhigh
go-critic-doc-link-checkerFalse negativeThe hidden patch changes linttest.go’s stripDirectives to remove every /*! marker, invalidating the surviving position_tests.go and uppercase_alias_tests.go fixtures. Those fixtures make TestCheckers fail.Sol 5.6 max
ink-grid-box-layoutFalse negativeThe placement algorithm is not specified in the instructions. Some models pick a “sparse” algorithm (the CSS default), while the hidden tests require “dense” placement.Opus 5 max
Opus 5 high
Fable 5 max
Fable 5 max
Fable 5 max
Fable 5 high
Fable 5 high
Gemini 3 7 Flash medium
Gemini 3 7 Flash medium
Fable 5 medium
Luna 5.6 xhigh
Sol 5.6 low
kcp-go-multiplexed-kcp-streamsFalse negativeThe verifier deletes mux_test.go, but mux_edge_test.go, mux_extra_test.go, or mux_kcp_test.go still call its muxPair, pipeSessions, or waitFor helpers. The test package then fails to compile.Deepseek V4 Pro max
Opus 4.8 xhigh
Opus 4.8 high
Opus 4.8 medium
obsidian-linter-auto-table-of-contentsFalse negativeThe test IDs are generated from the English name of the new plugin. Some models name it “Auto TOC”, while the verifier expects “Auto Table of Contents”.Sol 5.6 max
Fable 5 max
Sol 5.6 high
onedump-dump-encryption-pipelineFalse negativeModel-authored test files and hidden test files both define one or more of the same package-level test functions: TestConfigValidateCaseInsensitiveSource, TestDecryptReaderLazyInit, or TestJobEncrypted. The affected package then fails to compile.Opus 5 xhigh
Opus 5 high
Sol 5.6 max
Fable 5 xhigh
Fable 5 max
Terra 5.6 max
Kimi K3 max
Grok 4 6 medium
Grok 4 6 xhigh
Gemini 3 7 Flash high
Grok 4 6 high
GPT 5.5 high
Deepseek V4 Pro max
Sol 5.6 medium
Opus 4.8 max
Qwen3 8 Max xhigh
Sonnet 5 max
Glm 5 2 max
Sonnet 5 medium
Sonnet 4.6 high
opa-template-string-reconstructionFalse negativeModel cmd/eval_test.go and hidden cmd/eval_partial_template_string_test.go both define TestEvalPartialSourceReconstructsTemplateStrings, so the CLI test package fails to compile.Sol 5.6 high
Grok 4 6 medium
Grok 4 6 xhigh
Grok 4 6 xhigh
Grok 4 6 high
participle-grammar-conflict-analysisFalse negativeModel analysis_test.go and hidden analyze_test.go both define TestAnalyzeFirstFirstConflict, TestAnalyzeFirstFollowThroughEmbedding, and TestAnalyzeUnreachableAlternative. The test package then fails to compile.Fable 5 xhigh
prometheus-transactional-reload-statusFalse negativeModel transactional_reload_integration_test.go and hidden reload_state_test.go define different getReloadStatus helpers with the same package-level name, so the test package fails to compile.Deepseek V4 Pro max
returns-validated-error-accumulationFalse negativeThe hidden patch adds tests/test_validated/__init__.py, causing pytest to import it and tests/test_validated/test_validated_functions/test_validated.py under the same test_validated name. Test collection then aborts.Grok 4 6 xhigh
skrub-duration-encodingFalse negativeThe model adds _get_durations_dataframe in the middle of the test_auto_cast and test_cleaner_dtypes parameter lists in skrub/tests/test_table_vectorizer.py. Pytest’s positional expected_types IDs shift, so the grader marks the old IDs missing.GPT 5.4 xhigh
sqlfmt-create-table-ddl-formattingFalse negativecreate table name( satisfies the stated requirement that the opening parenthesis follow the table name on the same line and is consistent with the prompt’s other no-space parenthesis rules. The hidden fixtures require instead a space between the table name and the opening parenthesis create table name (.Sol 5.6 max
Sol 5.6 xhigh
Sol 5.6 high
task-task-graph-exportFalse negativeIn one run, graph_feature_test.go and hidden graph_test.go both define tests named TestGraphCycle, TestGraphReverse, TestGraphDefaultTask, and TestGraphWildcard. In another, replacing graph_test.go removes GraphTest and GraphTestOption still used by task_test.go. Both test packages fail to compile.Opus 5 high
Glm 5 2 max
tengo-destructuring-bindingsFalse negativeModel destructuring_ext_test.go and hidden destructuring_test.go both define runDestructuring and expectDestructuringError, so the test package fails to compile.Opus 5 high
testem-bail-on-test-failureFalse negativeThe hidden test accepts the warning only if its text contains the word “invalid”, a requirement not stated in the instructions.Qwen3 8 Max xhigh
updo-policy-alertingFalse negativeModel-authored tests and hidden tests independently define the same package-level test names: TestLoadConfigAlertPolicyDefaults, TestHandleWebhookDecisionWithHeaders, TestTrackerSSLAndCooldown, or TestHandleWebhookDecision. The affected package fails to compile, but the verifier reports the tests as missing.Kimi K3 max
vulture-persistent-analysis-cacheFalse negativeAdding the requested cache settings to DEFAULTS changes auto-generated pytest IDs. The verifier thinks those tests are missing and fails the submission.Sol 5.6 max
Sol 5.6 max
Sol 5.6 max
Sol 5.6 xhigh
Sol 5.6 xhigh
Sol 5.6 xhigh
Fable 5 xhigh
Fable 5 xhigh
Fable 5 xhigh
Fable 5 xhigh
Fable 5 max
Fable 5 max
Fable 5 max
Sol 5.6 high
Sol 5.6 high
Fable 5 high
Fable 5 high
Fable 5 high
Fable 5 high
yaegi-go-embed-directivesFalse negativeModel interp/interp_embed_test.go and hidden interp/embed_test.go both define tests named TestEmbedString, TestEmbedBytes, and other TestEmbed* names. The test package then fails to compile.Opus 5 xhigh
Qwen3 8 Max xhigh
ytt-jsonpath-query-apiFalse negativeModel pkg/orderedmap/query_test.go and hidden jsonpath_test.go both define m; model pkg/yttlibrary/jsonpath_test.go and hidden jsonpath_starlark_test.go both define TestJSONPathStarlarkQueryOne. The affected package then fails to compile.Gemini 3 7 Flash medium
Grok 4 6 low

Rubric

1. Reviewability

LevelMeaningStatus
FullAll tasks and scoring logic inspectable*, and harness/API settings used for each model (reasoning effort, token/time limits, tool access, system prompts) are fully disclosed [proceed to 2]
PartialA representative sample of tasks and scoring logic inspectable, with full harness/API settings disclosed [proceed to 2]
InadequateLimited, biased, or no inspectable tasks or scoring logic, harness/API settings undisclosed [stop → NEI]

* Either publicly or privately to reviewers.

2. Scoring

This is the minimum standard required to be Verified; failing any of these items results in a Flawed verdict.

Scoring
Examples
  • Essentially impossible to correctly answer as written (e.g. underspecified task, hidden requirement, missing file/tool)
  • False Negative (e.g. overly strict scorer, stale/incorrect ground truth, dependent on live external state that can drift, sandbox failure independent of the agent)
  • False Positive (e.g. lax scorer, reward-hackable environment, stated skill can be bypassed via a shortcut such as exploiting an error in the scoring logic or retrieving the answer from the harness/web)
  • Task egregiously doesn’t measure the claimed capability
Default threshold for Flawed≥20% of inspected sample† contains errors or there is an issue that corrupts grading at scale
Status
Pass Flag [stop → Flawed] Not reviewed
Notes
Benchmark Consistency
Examples
  • Scorer, instructions, or ground truth changed without a version bump
Default threshold for FlawedLeaderboard has incomparable results from different versions
Status
Pass Flag [stop → Flawed] Not reviewed
Notes
Elicitation
Examples

Model elicitation is extremely constraining and is not the focus of the benchmark:

  • Under-resourced relative to task size (token/turn/time limit, sandbox resources)
  • Poor context management
  • Lack of agentic environment where it would be natural to provide one
  • Excessive non-voluntary termination for agentic benchmarks
Default threshold for FlawedSubstantially reduced performance compared to reasonable alternatives for the tasks
Status
Pass Flag [stop → Flawed] Not reviewed
Notes
Bias in Evaluation Setup
Examples
  • Uneven compute/token budgets
  • Unfair scaffold choice (e.g. only a subset of models optimized)
Default threshold for FlawedMaterial model-specific advantage found
Status
Pass Flag [stop → Flawed] Not reviewed
Notes

† For benchmarks with >50 available tasks, we will sample a random set of 50 (stratified by category, when present). If the observed error rate is 15–25%, we will expand the sample to 100. For benchmarks with ≤50 available tasks, all available tasks will be assessed.

3. Evaluation Quality

This is the standard we would like all benchmarks to meet, but it is not necessarily disqualifying to omit or fail these items.

QuestionStatusNotes
Elicitation and resource adequacy: Are the resources given to models (reasoning token/turn budget, tool access, etc.) sufficient for them to perform near their ceiling?
Sufficient Constraining Unreasonably constraining Unknown Not reviewed
Scaffold fairness: What scaffold does the leaderboard report?
Shared common scaffold Mix of model-specific and common scaffolds Model-specific scaffolds Not reviewed
Is there evidence/risk of contamination?
Not reviewed
Has human completability been assessed?
All tasks Representative set of tasks Poor implementation (Unrepresentative set of tasks, unreasonable set of participants) Not established Not reviewed
Score range (if possible to estimate)
— floor, — ceiling Not reviewed
Statistical adequacy: how many runs/model (≥ 5 recommended for error bars)
— runs/model Unknown Not reviewed
Construct Validity
Measures stated capabilities Partially measures stated capabilities Does not measure stated capabilities Not reviewed

Disclaimer

This is a partial review. We stopped inspecting once we discovered errors that exceeded our published threshold for a flawed benchmark.

We attempted to reach out to the benchmark developer prior to launch, and if they write a response to this review we will link it here. If you’re the benchmark developer, please email us at reviews@epoch.ai with a link to your response if you would like us to include it here.

Notes
  1. DeepSWE - Measuring frontier coding agents Return

About Benchmark Reviews

Epoch AI’s Benchmark Reviews are independent reviews of external AI benchmarks. Our documentation describes the rubric behind this verdict, how we choose which benchmarks to review, and answers frequently asked questions.

View benchmarkRead the documentation and FAQs