Benchmarking AI Agents for Software Bug Detection and Maintenance Tasks

bismuth · Tech · year n/a · source Agentic: yes · promotional bias: med · source-backed · extracted with prompt 0.5.4 (schema v2)

Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.

Problem

Domain: Software-maintenance agent benchmarking

Bismuth needed a benchmark that tests whether coding agents can find, triage, and fix real maintenance bugs, not just solve upfront coding tasks on existing benchmarks.

Constraints:

Architecture

Bismuth built SM-100 from 100 triaged, validated, classified bugs across more than 84 public repositories in Python, TypeScript/JavaScript, and Go. Each bug carries metadata for severity, domain knowledge, discovery difficulty, and implication. The benchmark measures discovery, false positive rate, introduction-time detection, and remediation. To avoid repository-wide search while avoiding hints, repositories are scoped to interrelated subsystems containing the golden changed files, then agents operate over that subsystem.

Diagram confidence: reconstructed (reconstructed from prose).

flowchart LR
  bug-corpus[Bug corpus] --> metadata-annotations[Metadata annotations]
  bug-corpus --> subsystem-scoper[Subsystem scoper]
  subsystem-scoper --> agent-under-test[Agent under test]
  agent-under-test --> bug-report-grader[Bug report grader]
  agent-under-test --> remediation-evaluator[Remediation evaluator]
  metadata-annotations --> benchmark-metrics[Benchmark metrics]
  bug-report-grader --> benchmark-metrics
  remediation-evaluator --> benchmark-metrics
Drag to pan · scroll or use +/− to zoom · reconstructed from the source's described component topology

Components

Component Role Interacts with
Bug corpus 100 real, remediated bugs curated from public repositories. Metadata annotations, Subsystem scoper
Metadata annotations Severity, domain knowledge, difficulty, context, and implication labels for each bug. Bug corpus, Benchmark metrics
Subsystem scoper Narrows repositories to related files around golden changed files without revealing the bug. Bug corpus, Agent under test
Agent under test Coding agent evaluated for discovery, review, and remediation behavior. Subsystem scoper, Bug report grader, Remediation evaluator
Bug report grader Manual/benchmark grading of reported bugs and false positives. Agent under test, Benchmark metrics
Remediation evaluator Checks whether an attempted fix resolves the discovered bug without breaking the codebase. Agent under test, Benchmark metrics
Benchmark metrics Discovery, false-positive, PR-review, and remediation measurements. Metadata annotations, Bug report grader, Remediation evaluator

Data flow

Curators gather remediated real-world bugs, annotate metadata, filter to objective crash/data-loss/security/logical issues, and build subsystem scopes around golden commits. Agents receive those scoped files, report suspected bugs, are manually assessed for false positives and true positives, and then attempt remediations for discovered bugs.

3 supporting quotes
“So, we painstakingly gathered 100 bugs that we triaged, validated, and classified in over 84 public repositories.”transcript, stated
“alluded to earlier, uh we annotated each bug with metadata such as the severity and context where it was defined and called.”transcript, stated
“well we've broken up the repositories into subsystems containing files that are likely all interrelated. So think”transcript, stated

Why this architecture

The benchmark scopes tasks to subsystems so agents are not asked to search entire repositories, but it avoids directly hinting at the bug. It focuses on objective bugs so results are reproducible, and it separates discovery, false-positive rate, introduction-time review, and remediation because an agent that reports many bugs or fixes poorly is not actually useful for maintenance.

3 supporting quotes
“The reason we went for these types of bugs is it removes anything uh that is ambiguous um or harmless in the context”transcript, stated
“This way we're not biasing it in any way, but we're still scoping it down so it doesn't have to look through everything.”transcript, stated
“So we also manually measure the false positive rate of the bugs that come out to get an overall sense of how effective it is broadly.”transcript, stated

Models used: Bismuth · Claude Code · Codex · Devin · Cursor agent · Cosine · Lava Maverick

Scale

Alternatives considered (roads not taken)

Rely on existing coding benchmarks

Rejected because: They do not adequately cover maintenance, bug finding, deployment, or code review tasks.

“there's the code review process which is pretty much unbenchmarked by existing work even though we're seeing more and”transcript, stated
“least though we have software maintenance tasks. So think things like bug fixes, dependency upgrades, migrations, etc.”transcript, stated

Ask agents to search entire repositories

Rejected because: Full-repository search would take too long for a single target bug.

“enough we're exploring all of the code to find the single bug that we're interested in would take way too long.”transcript, stated

Benchmark ambiguous style, optimization, or feature issues

Rejected because: Humans debate those and they reduce reproducibility.

“Um, we explicitly did not include feature requests, optimization, Uh, this is also to reduce ambiguity. Uh, frankly, humans still debate these”transcript, stated
“Uh, this is also to reduce ambiguity. Uh, frankly, humans still debate these to today. There's no actual objective”transcript, stated

Patterns

eval-driven-development (benchmarking)

SM-100 provides a maintenance benchmark that exposes bug-detection and remediation gaps for agents.

“with this benchmark, we can now clearly show as things progress.”transcript, stated

retrieval-ranking (code-understanding)

Subsystem scoping narrows relevant files so agents can inspect likely related code without direct hints.

“feed the list of files in that subsystem”transcript, stated

human-in-the-loop-gate (grading)

False positives and bug validity require human-style/manual grading rather than raw report counts.

“we also manually measure the false positive rate”transcript, stated

Tradeoffs

Scope repositories to subsystems

Chose interrelated file subsets around golden commits over full repository search.

Rationale: This keeps the benchmark tractable without revealing the bug.

“we're still scoping it down so it doesn't have to look through everything.”transcript, stated

Use objective bugs only

Chose security/logical/data-loss/crash defects over feature requests, optimization, or debatable issues.

Rationale: Objective bugs improve reproducibility across evaluations.

“anything an explicit security issue or logical issue that could cause data loss or system crashes.”transcript, stated

Measure false positives as well as discoveries

Chose true-positive and report-volume metrics over rewarding raw bug-report counts.

Rationale: A flood of reports is unusable for engineers even if a real bug is buried inside.

“no engineer is going to look through 70 bugs and be like, "Oh yeah, that one for sure is the right one."”transcript, stated

Gotchas (what bit them)

Basic tool-loop agents report overwhelming false positives.

Root cause: Equipping a model with shell/search/replace/report tools is not enough for bug triage.

Resolution: Bismuth treats false-positive rate as a first-class benchmark metric.

“basic implementations are trivial. Give it a shell tool, sir, replace, think, report bug”transcript, stated
“almost every basic agent that just equipped with these tools”transcript, stated

Agents are too narrow in bug reasoning.

Root cause: Even thinking models inspect files through limited chains and miss alternative bug interpretations.

Resolution: The talk argues for broader thinking chains, deeper selected-chain reasoning, and better context use.

“These agents are very narrow in their thinking.”transcript, stated
“broader thinking chains and deeper thinking along selected chains is going to be required”transcript, stated

Software maintenance is harder than creating new software upfront.

Root cause: Maintenance requires targeted search, cross-file reasoning, bug-pattern recognition, and deployed-system comprehension.

Resolution: SM-100 focuses on the post-deployment maintenance problem explicitly.

“Existing agents are able to create software upfront, but to manage and fix software after it's been deployed will be a major struggle”transcript, stated

Evaluation

The benchmark measures bug discovery without prior knowledge, false positive rate, PR/commit introduction-time detection, and remediation quality, using a curated multilingual corpus and subsystem scoping.

Metrics: 100 bugs over 84+ repositories · four benchmark numbers: discovery, false positives, introduction-time detection, remediation · 97% false positive rate for basic loop agents · Bismuth 10 needles vs next leading 7 · Claude Code 16%, Bismuth 25%, Codex 45% true-positive rate

3 supporting quotes
“there's four numbers to get out of the benchmark.”transcript, stated
“we ask it to fix the bug uh and see if the result does indeed fix the bug without breaking the rest of the codebase.”transcript, stated
“three out of six agents got 10% or less true positives out of a massive number of reports.”transcript, stated

Outcomes

The source gives clear benchmark scale and results: 100 bugs, 84+ repositories, four metrics, 97% false positives for basic agents, and named true-positive/discovery rates.

3 supporting quotes
“we found an unsaturated benchmark to work on uh as we build our product and as other labs build theirs.”transcript, stated
“targeted search, better program comprehension, crossfile reasoning, bug pattern recognition”transcript, stated
“the most frequently used agents today have a high risk of introducing bugs.”transcript, stated