/p/2026-08-04 · explainer
Paper explainer · 2607.28871 · Xu & Wu

Green is not
evidence.

When a repair agent runs a check and sees it pass, everybody treats that as evidence the reported bug is fixed. This paper makes that testable: capture every validation the agent runs, strip it to a test-only patch, and replay it against the original broken code, the agent's candidate, and the developer's real fix. Across 3,730 validation events in 643 runs, 46.0% of passing checks carry no information about the bug at all — they pass on the broken code too. And 23.8% of runs submit a patch whose entire positive evidence base is that kind of check.

01 · The problem

The agent watched it turn green. That told it nothing.

An agent fixing a bug runs commands and reads outcomes. A passing command feels like progress, and the agent's own summary will describe it as confirmation. But a check only says something about the bug if it would have failed before the fix. If it passes on the broken code as well, the agent has learned that nothing is on fire — not that anything is repaired. Step through three checks an agent actually ran and compare what it concluded with what a replay shows.

Interactive · what the agent saw against what the replay showstap a check

      

Every one of these is a green result the agent counted toward closing the task. The difference between them is invisible in the transcript, invisible in the summary, and invisible in CI. It becomes visible only when you re-run the same check against code you already know is broken.

02 · The mechanism

Replay the same check on three versions of the code

The method is mechanical and, once you see it, obvious. Intercept every command the agent runs after its first real edit. Split the working tree into the production change and the test-only change. Then take the test-only part and replay it, deterministically, against three states: B, the original buggy code; S, whatever the agent has now; and G, the developer's actual fix. B and G together decide what the check was worth. Flip the two outcomes below and watch the role change.

Interactive · set the two replay outcomesS is fixed — the agent already saw it pass
B · the original buggy code
would this check have failed before anything was fixed?
G · the developer's real fix
does this check hold for the repair we know is correct?
evidence role

Only one of the four cells is what everyone assumes they are getting. B fails, G passes means the check detects something present in the broken code and absent from both the candidate and the real fix — that is evidence. B passes, G passes means the check was green before the bug was ever touched, so it is a regression guard wearing a fix's clothes. The rarest cell, B passes and G fails, is actively wrong: a property the buggy code satisfies and the correct repair does not.

03 · The distribution

Where 3,730 checks actually landed

Run that classification over every validation event in the study and the shape is stark. Of the 2,548 events that both passed and could be compared, 1,171 — 46.0% — were regression-only or outright misleading. That is not a tail. That is nearly half of everything the agents were treating as confirmation. Toggle between the full event population and the passing-and-comparable subset the headline is computed over.

Interactive · the evidence-role distribution3,730 events · 643 rollouts · 110 tasks
02040%
46.0%
passing checks that prove nothing about the bug
Regression-only plus misleading, out of the 2,548 events that passed and could be replayed on both B and G.
23.8%
runs that close on nothing but those
Baseline rollouts submitting a patch whose entire positive evidence base is non-discriminating. Another 48.1% of patch-submitting runs mix both kinds.

The encouraging half of the picture: 72.9% of baseline runs do contain at least one genuinely bug-discriminating event. The agents are not blind. The problem is that they cannot tell which of their green results was the useful one, so they stop as readily on the hollow ones.

04 · The intervention

Tell the agent the check also passed on the broken code

Knowing the failure exists is not the same as fixing it, so the authors ran a pre-registered three-arm experiment. One arm is the plain agent. One is an attention-matched nudge — a message after every passing check asking it to reconsider, carrying no new information. The third replays the check on the broken code in real time and injects the actual outcome. The third arm is the one that isolates whether the information matters or just the interruption.

Interactive · step through the three arms660 planned cells · 643 observed
0612 pts

The honest part is the ceiling the authors drew themselves. They pre-registered 10 points as the smallest effect they would call practically meaningful, and both headline estimates land under it: −7.8 and +7.4. The effects are real by the statistics and undersized by their own standard. Roughly a third of the improvement comes from the bare reminder, and across two replications — a different scaffold, then a different model — the extra information on top of the reminder only showed up in one configuration.

05 · In your pipeline

What this looks like on your merge queue illustrative

The measurement rig here is expensive — deterministic replay against a known-good fix you would not have in production. But the cheap half generalises. You do not need the developer's gold patch to run the single most valuable replay: take the test that just went green, check it out against the pre-fix commit, and confirm it fails. That one command converts a hollow check into a discriminating one. Point the paper's rates at your own volume.

Interactive · your rates against the paper'srates measured · the multiplication is illustrative
merged on hollow evidence alone
36
at the measured 23.8% of runs that close with no bug-discriminating check at all
recovered by the replay nudge
16
at the 10.5-point total reduction the feedback arm produced against baseline

Two things to take away for your own agent loop. First, the check is worth more than the transcript: an agent's own account of why it is confident is not a signal you can grade, but "did this test fail before the patch" is a shell command. Second, note where the intervention plateaued — the authors could only move this so far by telling the agent, which is the same lesson as the harness papers. If you want the guarantee, put the pre-fix replay in the pipeline rather than in the prompt.

The numbers

What the paper actually reports

What this does not show

In practice