DeepSWE · October 2026 · 5 tasks

DeepSWE task audit (pilot)

2 of 5 sampled DeepSWE tasks reject a correct solution.

Sample: 4 tasks selected from the lowest model pass rates (3–12%), plus 1 high-pass-rate control task (92%) to check that the reviewer doesn't over-flag. The control came back clean. Rates describe this sample, not the whole benchmark.

Pilot: rubric findings come from one reviewer, not a multi-reviewer vote.

Runs audit-20261006-173219, audit-20261006-174130, audit-pilot-batch2 Generated 2026-10-15T10:36:03+00:00 Judge anthropic/claude-opus-5-5 (medium effort) 5 tasks audited 0 not fully audited

Flagged (critical or major) 2 tasks Critical findings 1 (1 verified) Major findings 1 (1 verified)

  • Verified defect
  • Reviewer finding, not yet verified
  • No blocking findings
  • Not fully audited

Verified by execution

Each of these was reproduced by running a minimally modified reference solution through the task's own verifier. Other findings below have not been verified this way.

obsidian-linter-auto-table-of-contentscriticalVerified

Tests depend on names or interfaces the instruction doesn't specify

Reference solutionUnmodified, as shipped with the task
Verifier reward: 1
Modified reference, still correctReference solution with only the rule's display name changed from 'Auto Table of Contents' to 'Auto TOC'.
Verifier reward: 0
Failing tests and checks
41 of 1172 tests failed:
  - [f2p] Auto Table of Contents No TOC markers present — text is unchanged
  - [f2p] Auto Table of Contents Both markers present with empty TOC region generates TOC
  - [f2p] Auto Table of Contents Only start marker present — inserts TOC and adds end marker
  - [f2p] Auto Table of Contents End marker before start marker is ignored
  - [f2p] Auto Table of Contents Multiple marker pairs — only the first pair is updated
  - [f2p] Auto Table of Contents Updates existing TOC content between markers
  - [f2p] Auto Table of Contents Nested headings produce correct indentation
  - [f2p] Auto Table of Contents Numbered list style uses 1. prefix
  - [f2p] Auto Table of Contents Indent size option controls indentation per level
  - [f2p] Auto Table of Contents Bullet marker option controls the bullet character
  - [f2p] Auto Table of Contents Ordered list style increment uses increasing numbers
  - [f2p] Auto Table of Contents Explicit heading IDs are used as anchors when enabled
  - [f2p] Auto Table of Contents Explicit heading IDs are deduplicated when repeated
  - [f2p] Auto Table of Contents Strip formatting in TOC affects link text but not anchor generation
  - [f2p] Auto Table of Contents Exclude headings option can exclude headings by literal match
  ... and 26 more
41 of the failures are 'missing from report'; 41 of those tests actually ran and PASSED under a different name, so the grader rejected working code only because of the name.
gql-incremental-graphql-deliverymajorVerified

Graded tests check behaviour the instruction doesn't ask for

Reference solutionUnmodified, as shipped with the task
Verifier reward: 1
Modified reference, still correctReference solution that accumulates .data in one dict updated in place (the three copy.deepcopy calls removed).
Verifier reward: 0
Failing tests and checks
1 of 828 tests failed:
  - [f2p] tests.test_incremental_delivery.TestDefer.test_deferred_fragments_arrive_after_initial_and_merge_correctly

Defect types

How many tasks each blocking problem appears in.

Defect and checkTasks
Tests depend on names or interfaces the instruction doesn't specifyrubric:hidden_interface_requirements critical 1
Graded tests check behaviour the instruction doesn't ask forrubric:f2p_tests_match_instruction major 1

Tasks

criticaltask mis-scores agents or cannot runmajorlikely false fail / false passminorquality issueinfonote
obsidian-linter-auto-table-of-contents Add automatic table of contents generation for Obsidian linter · typescriptTests depend on names or interfaces the instruction doesn't specify 1 critical · 0 major verified defect
  • Staticpass19 checks, 0 with findings (0 blocking)
  • Rubricfail15 criteria, 2 failed by a single reviewer: hidden_interface_requirements, test_coverage_gaps (1 minor)
  • Validationpassoracle=1 nop=0
  • Probepass1/1 probe(s) reproduced their finding by execution
critical Verified by execution

Tests depend on names or interfaces the instruction doesn't specify

rubric · hidden_interface_requirements · verifier

Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.

Verified by execution
Reference solution with only the rule's display name changed from 'Auto Table of Contents' to 'Auto TOC'.
Verifier reward: 0
41 of 1172 tests failed:
  - [f2p] Auto Table of Contents No TOC markers present — text is unchanged
  - [f2p] Auto Table of Contents Both markers present with empty TOC region generates TOC
  - [f2p] Auto Table of Contents Only start marker present — inserts TOC and adds end marker
  - [f2p] Auto Table of Contents End marker before start marker is ignored
  - [f2p] Auto Table of Contents Multiple marker pairs — only the first pair is updated
  - [f2p] Auto Table of Contents Updates existing TOC content between markers
  - [f2p] Auto Table of Contents Nested headings produce correct indentation
  - [f2p] Auto Table of Contents Numbered list style uses 1. prefix
  - [f2p] Auto Table of Contents Indent size option controls indentation per level
  - [f2p] Auto Table of Contents Bullet marker option controls the bullet character
  - [f2p] Auto Table of Contents Ordered list style increment uses increasing numbers
  - [f2p] Auto Table of Contents Explicit heading IDs are used as anchors when enabled
  - [f2p] Auto Table of Contents Explicit heading IDs are deduplicated when repeated
  - [f2p] Auto Table of Contents Strip formatting in TOC affects link text but not anchor generation
  - [f2p] Auto Table of Contents Exclude headings option can exclude headings by literal match
  ... and 26 more
41 of the failures are 'missing from report'; 41 of those tests actually ran and PASSED under a different name, so the grader rejected working code only because of the name.
Evidence
[kzYvmAs] - Every f2p test ID depends on a display name that the instruction never states. tests/config.json sets grade.node_id = "name", and every f2p ID starts with "Auto Table of Contents" (e.g. "Auto Table of Contents No TOC markers present — text is unchanged").
- That prefix is not written in the test file. The base repo's __tests__/common.ts ruleTest() does `describe(rule.getName(), ...)`, and getName() resolves the rule's nameKey through the locale.
- The string comes only from the reference solution, which adds `'auto-toc': { 'name': 'Auto Table of Contents', ... }` to src/lang/locale/en.ts.
- instruction.md only says to "Implement a new rule, export default `AutoToc` from `src/rules/auto-toc.ts`, that generates or updates a TOC". It gives no rule name or locale entry.
- Consequence: an agent with perfect behaviour that names the rule "Auto TOC", "Table of Contents" or "Auto-TOC" gets all 41 f2p IDs reported as "missing from report" and scores 0.
minor Reviewer finding, not yet verified

Stated requirements are not tested

rubric · test_coverage_gaps · verifier

Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.

Evidence
[kzYvmAs] - Blank line after the end marker: the instruction says "Ensure blank lines ... after the end marker", but in every test input the end marker is followed by a blank line or end of text. The reference does not add one either: it outputs `${before}\n\n${tocContent}\n\n${after}` with `after` starting at the existing end marker. An implementation that skips this requirement still passes.
- Exclusion matching is only tested on plain literal and regex text. Formatted headings are never tested against excludeHeadings.
- `__bold__` and `_italic_` anchor stripping are never tested.
gql-incremental-graphql-delivery Add GraphQL incremental delivery with @defer and @stream · pythonGraded tests check behaviour the instruction doesn't ask for 0 critical · 1 major verified defect
  • Staticpass19 checks, 0 with findings (0 blocking)
  • Rubricfail15 criteria, 2 failed by a single reviewer: test_coverage_gaps, f2p_tests_match_instruction (1 minor)
  • Validationpassoracle=1 nop=0
  • Probepass1/1 probe(s) reproduced their finding by execution
major Verified by execution

Graded tests check behaviour the instruction doesn't ask for

rubric · f2p_tests_match_instruction · verifier

Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.

Verified by execution
Reference solution that accumulates .data in one dict updated in place (the three copy.deepcopy calls removed).
Verifier reward: 0
1 of 828 tests failed:
  - [f2p] tests.test_incremental_delivery.TestDefer.test_deferred_fragments_arrive_after_initial_and_merge_correctly
Evidence
[VyaUZvQ] - Separate data per result is required but never asked for. test_deferred_fragments_arrive_after_initial_and_merge_correctly collects all results with `results = [r async for r in ...]` and then asserts `"bio" not in results[0].data["user"]`. The instruction only says '.data dict is accumulated across payloads'. A valid implementation that keeps one accumulated dict and updates it in place each time (a common, efficient design) makes results[0].data the same object as the final one, so 'bio' is present and the test fails. The reference passes only because it deep-copies every time (incremental.py `copy.deepcopy`).
- Per-payload (non-accumulated) errors are required but never specified. test_errors_in_deferred_fragments does `errors.extend(r.errors)` for every result and asserts `len(errors) == 2`. The instruction says per-payload only for extensions and accumulation for data, and says nothing about errors. An implementation that accumulates errors the same way as data yields [E1] and then [E1, E2], gets 3, and fails.
- test_parse_result_with_execute_incremental requires execute_incremental to honour Client(parse_results=True) and return datetime objects. The instruction never mentions parse_results or schema-based result parsing; it is an incidental choice of the reference's client.py.
minor Reviewer finding, not yet verified

Stated requirements are not tested

rubric · test_coverage_gaps · verifier

Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.

Evidence
[VyaUZvQ] - Per-payload extensions over WebSocket are unchecked. The instruction says each result 'contains the .extensions from that specific payload', but the reference WebSocket path adds hasNext and incremental into extensions (websockets_protocol.py: `extensions["hasNext"] = payload["hasNext"]`, `extensions["incremental"] = ...`). test_incremental_over_websocket never asserts on extensions, so nothing notices.
- The HTTP negotiation 'boundary=graphql, deferSpec=20220824' is never checked on the request side. The test server ignores the Accept header and always returns multipart.
- '.stream() on list fields' is only exercised on a list field; nothing checks behaviour on non-list fields.
- The WebSocket test covers only the graphql-transport-ws protocol and a single payload shape.
- TestUnsupportedTransport exists in test.patch but is not in f2p_node_ids.
termenv-preserve-ansi-resets Preserve ANSI resets during truncation and styling · go 0 critical · 0 major pass
  • Staticpass19 checks, 0 with findings (0 blocking)
  • Rubricpass15 criteria, 1 failed by a single reviewer: test_coverage_gaps (1 minor)
  • Validationpassoracle=1 nop=0
minor Reviewer finding, not yet verified

Stated requirements are not tested

rubric · test_coverage_gaps · verifier

Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.

Evidence
[uW9Cdxw] - 'no ANSI emitted' under Ascii is only checked with plain input ('abcdef'). The reference Output.Truncate ignores the profile and passes ANSI input straight through, and no test would notice.
- The Truncate/truncate template helpers are never tested under the Ascii profile. In the reference, Ascii TemplateFuncs returns noopTemplateFuncs, so these helpers may not truncate there at all.
- 'Output.TemplateFuncs() propagates the default to all template helpers' is only checked through Bold. Color, Foreground, Background and the other style helpers could skip the propagation and still pass.
- The template Truncate helper is never tested with preserve-resets enabled.
true-myth-iterable-collection-combinators Add iterable collection combinators to true-myth · typescript 0 critical · 0 major pass
  • Staticpass19 checks, 0 with findings (0 blocking)
  • Rubricpass15 criteria, 1 failed by a single reviewer: test_coverage_gaps (1 minor)
  • Validationpassoracle=1 nop=0
minor Reviewer finding, not yet verified

Stated requirements are not tested

rubric · test_coverage_gaps · verifier

Single-reviewer finding: one reviewer agent flagged this; it has not been through a multi-reviewer vote.

Evidence
[na27sjs] - The instruction says that on maybe and result, "sequence and traverse accept any Iterable and stop advancing the iterator immediately after the first failure." Only maybe.sequence is tested with a lazy generator for short-circuiting. result.sequence is tested with a generator only when every element is Ok, so an implementation that does Array.from(iterable) first would pass. maybe.traverse and result.traverse are only ever called with arrays, so non-array Iterable support and iterator laziness for traverse go unchecked (the reference itself types traverse as ReadonlyArray).
- Edge cases such as zip/zipWith when both inputs fail, and task.zipWith when the second input rejects, are untested. These are minor.
bandit-structured-nosec-directives Add structured nosec directives for regions and next line · python 0 critical · 0 major pass
  • Staticpass19 checks, 0 with findings (0 blocking)
  • Rubricpass15 criteria, 0 failed by a single reviewer
  • Validationpassoracle=1 nop=0

No findings.

How tasks were audited

Rubric review: single reviewer per task (pilot). Rubric findings are one reviewer agent's judgement, not a multi-reviewer vote.

  1. Static checks

    Deterministic checks on the task files: required files, task.toml limits, answer leakage into the agent image, Docker build context, verifier network installs, grader config consistency, plus the benchmark's own CI checks where it ships them.

  2. Rubric review

    A reviewer agent reads every task file in a sandbox (`harbor check`) and judges it against a credibility rubric: hidden requirements, false-fail and false-pass risk, reference-solution validity, answer isolation, reproducibility.

    Full description

    A reviewer agent reads every task file in a sandbox (`harbor check`) and judges it against a credibility rubric: hidden requirements, false-fail and false-pass risk, reference-solution validity, answer isolation, reproducibility. When several reviewers are configured, a criterion fails only when enough of them agree.

  3. Oracle / no-op validation

    The task is executed twice through Harbor: with the reference solution (must score 1) and with an agent that does nothing (must score 0).

  4. Execution probes

    Where a finding predicts a false fail, a minimally modified reference solution that embodies the alternative (still correct) implementation is run through the task's own verifier.

    Full description

    Where a finding predicts a false fail, a minimally modified reference solution that embodies the alternative (still correct) implementation is run through the task's own verifier. Findings reproduced this way are marked Verified by execution.

Want this run on your tasks?

The same audit, on your benchmark or training environments.

Book a 20-minute call