Blolabel
← Notes
event 8 min read

GOLD beats SHAM by up to 25.9 points on a provenance audit; phoneshell's one answer-reading check was built to dodge exactly that confound

A paper posted 27 July 2026 names a confound most agent benchmarks never check for: a correct answer can mean the agent read the right value, or it can mean the agent already had a value and the environment happened to agree. Swapping in a matched wrong value instead of the right one, while changing nothing else about the task, moves success by 19.1 to 25.9 percentage points in the authors' own test. phoneshell's single check that ever grades what a model said, rather than what the phone shows, was restricted on purpose to the one case where this confound cannot arise: a ground truth the task itself fixes on a page it hosts.

Jingkun Luo and Da-Tian Peng's "Success Is Not Self-Explanatory: Auditing Success Provenance in Agent Evaluation" (arXiv:2607.24054, submitted 27 July 2026) argues that outcome correctness is not the same claim as "the agent's reasoning used the information it was supposed to use." An agent can produce the right final answer by actually finding and reading the target value, or by already carrying a plausible guess that happens to match, or by exploiting some other artifact of the evaluation surface that has nothing to do with the task's intended information flow. Ordinary benchmarks cannot tell these apart because they only ever present the correct value. The paper's fix is a three-way substitution: a CLEAN condition that keeps only what the benchmark itself authorizes, a GOLD condition that makes the true target value available, and a SHAM condition that keeps the identical source structure and the identical exposure opportunity but swaps in a matched, incorrect value. If an agent's success rate depends on whether the value it was exposed to was actually correct, GOLD must outperform SHAM. If it does not, outcome correctness was never tracking what the benchmark assumed it was tracking.

Abstract technical illustration on a dark grid: two parallel identical pipelines run left to right, one labelled with a green token carrying a correct value into a result node, one labelled with an amber token carrying a visually identical but incorrect value into an equivalent result node; a measurement bracket spans the gap between the two result nodes, representing the measured difference between them, cool blues and slate greys with green and amber accents, no icons or text, no readable words

What success provenance measures, and what D0 found

The authors call the thing a correctness-only score fails to capture success provenance: whether success depended on an acquired target at all, as opposed to following from something the agent already had or from a leak in how the surface is constructed. Their first experiment, D0, runs this GOLD-versus-SHAM substitution across four standardized evaluation surfaces and reports that GOLD exceeds SHAM by 19.1 to 25.9 percentage points. That range is itself the headline: on a benchmark where this test has never been run, a reported success rate could, in principle, already be sitting on contamination from either end of that gap, and nothing in a plain pass/fail score would show it. The paper's recommendation is not a new scoring formula bolted onto existing benchmarks; it asks that agent evaluations report success alongside whether the evaluated information state actually supported it, so a reader can separate "the agent used the right information" from "the agent happened to land on the right string."

Condition (Luo & Peng, D0)What the agent is exposed toWhat a high success rate there would mean
CLEANonly what the benchmark itself authorizesthe benchmark's intended baseline
GOLDthe correct target value is made availablesuccess can track correctness, if it moves
SHAMsame source structure, same exposure opportunity, a matched wrong valuea high score here means success was never about the value at all
GOLD minus SHAM—19.1 to 25.9 percentage points, per the paper's D0 result

Source: Jingkun Luo and Da-Tian Peng, "Success Is Not Self-Explanatory: Auditing Success Provenance in Agent Evaluation," arXiv:2607.24054, submitted 27 July 2026, read 31 October 2026.

Why phoneshell's answer-reading check cannot have this problem

phoneshell's house rule, stated in bench/verify.py's own docstring, is that every check reads the phone directly rather than believing the agent's account of itself: "an agent that says 'I have enabled Do Not Disturb' and an agent that enabled Do Not Disturb are different things, and only the second one passes." There is exactly one exception, the answer_contains check, and its own comment names the reason it exists and the limit placed on it in the same breath: it is "the ONLY check that grades what the model said rather than what the phone shows, and it exists for one narrow case: a task whose deliverable is information, not a state change." The comment continues: "ground truth has to be fixed and known in advance, which is why these tasks run against a page we host rather than against content that can change."

That restriction is, without the paper's vocabulary, a working answer to the exact confound D0 measures. A GOLD/SHAM substitution test asks whether an agent's success tracks the true target or merely a plausible value it could have produced some other way. phoneshell's design removes the ambiguity at the source rather than auditing for it after the fact: the only tasks that ever use answer_contains point the agent at a page phoneshell itself hosts, with one value in it, so there is no live content that could change, no second plausible value the agent could already be carrying, and no SHAM condition to even construct. The check works because the environment that produces the "GOLD" value and the environment the task actually runs against are, by construction, the same four walls.

A test that needs two values to compare, against a check with only one Success Is Not Self-Explanatory, D0 same source structure, same exposure GOLD: the true target value is present SHAM: a matched WRONG value instead GOLD minus SHAM = 19.1 to 25.9 points a high SHAM score means success never tracked the value at all phoneshell, answer_contains one value, on a page phoneshell hosts fixed and known in advance (bench/verify.py) no live content that could change no second plausible value exists to swap in used ONLY for information deliverables, never for a state-change task The paper's test varies which value is exposed and watches success move. phoneshell's design removes the variation before the task runs, so there is nothing for a GOLD/SHAM swap to act on in the first place. Sources: arxiv.org/abs/2607.24054; phoneshell/bench/verify.py, read 31 October 2026. answer_contains, the one check that never reads the phone hosted page one value, fixed and known before the task even runs agent's final "said" result text from the model's own reply, lower-cased substring test want in got: the hosted value's text must appear in the said text pass/fail, no screen read at all Every other check kind in bench/verify.py dispatches to the live phone. This is the only one that never does, and it is restricted to this one shape of task. Source: phoneshell/bench/verify.py, lines 31-46, read 31 October 2026.

What this means for anyone writing an information-deliverable check

Check it yourself

# the one check that grades what the model said, and why it is restricted this way
grep -n "answer_contains" -A 14 phoneshell/bench/verify.py

# every other check kind dispatches against the live phone instead
sed -n '47,150p' phoneshell/bench/verify.py

# the paper itself
open "https://arxiv.org/abs/2607.24054"

# the D0 result as quoted in this piece
# "GOLD exceeds SHAM by 19.1 to 25.9 percentage points"

What would prove this wrong

We claim the paper's D0 experiment reports a GOLD-minus-SHAM gap of 19.1 to 25.9 percentage points across four standardized surfaces; that is checkable against the arXiv page itself and would be false if a later revision changes that range. We also claim phoneshell's answer_contains check is used only against pages phoneshell hosts with a single fixed value, which is checkable by reading every task file in environments/ that uses that check kind. This piece will need revisiting if phoneshell ever adds an answer_contains task against live, agent-browsable content, which would reopen exactly the confound this design currently avoids, or if the paper's D0 range is revised in a later arXiv version, by 30 April 2027.

Sources