/p/2026-09-05 · explainer
Paper explainer · 2609.04167 · He, Wang, Liu et al.

The tests went green.
The reviewer wanted more.

Every agent benchmark you have seen scores one thing: did the patch make the failing test pass. That is not the bar a repository actually applies. This benchmark mines real pull request review comments for the requirements that decide whether a patch gets merged — raise this exception type, not that one; keep the keyword arguments in order; make it safe to run twice — and gives each of 303 repair tasks a second test suite for the requirement alongside the functional one. Across four models, 644 patches passed the functional tests and 221 of them, 34.3%, broke the requirement they had been handed. The strongest model in the set hid a violation in 29.5% of its green runs. If your merge gate is a green test run, that is the share of it you are not checking.

01 · The gap

Two suites on the same patch, and only one of them is ever run

The construction is the whole idea. Each task carries an issue description, a defect injected into a real repository, a functional test that checks the defect is gone, a requirement written in plain language, and a second test that checks the requirement is met. It also ships two reference patches: a gold one that passes both suites, and a non-compliant one that passes the functional suite and fails the requirement — the exact artefact a conventional benchmark would score as a win.

Interactive · step through the four models
0100%
green runs hiding a violation
patches good on both counts

Read the middle bar of each model carefully, because it is the one that does not behave like a capability score. The rate at which a model's already-passing patches also satisfy the requirement sits between 64% and 71% for the three serious backends, and it barely tracks how good the model is at the repair itself. The strongest model resolves nearly twice as many issues as the weakest serious one and complies at almost the same rate. Getting the fix right and getting the fix acceptable are close to separate skills.

All four models pooledevery patch that passed the functional tests

02 · Where the requirement comes from

Ten kinds of thing a reviewer asks for, none of which a test suite asks for

The requirements are not invented. They are extracted from real review comments in two passes: first a decomposition into atomic records — what the reviewer objected to, what they asked for, why — then a filter that throws away anything not machine-checkable. Workflow requests, documentation, formatting: gone. What survives has to be visible in behaviour, supported by the diff that answered the review, additional to functional correctness, and testable by its own separate oracle.

Interactive · step through the requirement categories
0160 instances

The two biggest categories are also the two least visible in a diff. Half the instances turn on error semantics — whether the right exception type comes out of the right branch with the right message — and just under half on schema, metadata and typing. Those are the things a reviewer notices in ten seconds and a functional test, written to check that the bug is gone, never looks at.

03 · Telling the agent

Handing over the requirement helps, and costs you something

The obvious response is to put the requirement in the prompt, and the paper runs exactly that ablation: the same tasks with the requirement described to the agent, and without. Compliance rises everywhere, by 10 to 26 points. But the functional pass rate falls everywhere too, by up to 10 points on one model. A longer specification is a harder task, and the agent spends attention on the requirement that it was previously spending on the bug.

Interactive · put the requirement in the prompt, or leave it out
issue only issue + the requirement
fixed the bug
of those, compliant
good on both counts
issue onlyissue plus the requirement

The trade is worth it on every model — joint success, the only number that means "mergeable", rises by 1.0 to 11.5 points — but it is a trade, not a free win, and the shape of it matters for how you deploy. The largest compliance gain, 25.6 points, belongs to the weakest model, whose functional rate collapses from 15.8% to 9.2% at the same time. Telling a model what "good" means helps most where it can least afford the attention.

04 · What gets missed

The requirements agents drop are the ones that reach outside the bug

Break compliance down by what the reviewer was asking for and a pattern falls out. Agents do best on requirements that live at the point of the fix: distinguishing a missing value from an empty one, preserving argument order, keeping a deprecation path intact. They do worst on requirements that ask them to look up from the defect — generalise the fix beyond the reported case, clean up a resource on every path, get the escaping right for inputs the issue never mentioned.

Interactive · pick a model, watch the categories re-rank
40%85%
best-handled requirement
worst-handled requirement

Scope generalisation is the clearest case, and the most instructive. On the strongest model it has the second-highest functional pass rate in the whole table, 87.1% — the agent fixes the reported bug more reliably here than almost anywhere else — and one of the lowest compliance rates, 63.0%. It solves the case it was shown and stops. That is not a reasoning failure; it is a specification failure, and the specification is missing because the person who would have written it does not read the patch until after your gate has passed it.

05 · For your own product

Write the review rule down where the agent can read it illustrative

The useful reading is not "agents are worse than you thought". Their functional numbers are unchanged; the paper adds a second measurement, and it is a measurement your own pipeline is also not taking. Whatever share of your merge decisions rests on a green test run is a share resting on a check that was never written to answer the question you are asking it.

Interactive · at the paper's rate, on your volumeillustrative · the 34.3% rate is the paper's, the volume is yours
carrying a review violation
at the pooled 34.3% rate across four models
at the strongest model's rate
29.5%, the best of the four backends tested

The fix the paper actually supports is cheap: the requirements it mines are already written down, in your own review history. Pick a request and compare the two setups.

Interactive · pick a change, then switch what the agent was toldillustrative

These scenarios are illustrative — the paper measures a benchmark, not a team's pipeline. What it measures is the premise: across 644 patches that passed the functional tests, 221 broke a requirement that a human had already stated in a review comment, and stating it up front moved compliance by 10 to 26 points.

The numbers

What the paper actually reports

What this does not show

In practice