The hypothesis, the ablation, the five confounds we had to remove before the benchmark measured anything, the grading, and the honest limits.
Teams rename things. The owner decides, and then reality drags: the code, the tickets, the standups keep using the old name for months. So the written history is contested โ an old standard, a rename, and a pile of later usage that ignores the rename. Every word of it is true text. Only one name is in force.
H. Given a rename the team ruled on but practice never adopted, an agent finishing ordinary work will use the governed name if it has the verdict, and will tend to use the superseded name if it only has the raw notes โ because frequency, recency, and the "reality check" all point the wrong way.
The task is deliberately incidental: a teammate left a draft of UI copy that uses the old name; finalize it for shipping. We do not ask "what is the canonical term?" โ a direct question makes any capable agent go audit the history and find the answer. We ask it to do a normal piece of work in which the name simply appears.
| arm | what it has |
|---|---|
| ungoverned | The full history on disk under notes/ โ every note, including the owner's rename โ read with native grep/read. No governed verdict. |
| mla | The same history, ingested and governed: the rename ACCEPTED, the old standard REJECTED. The verdict is pushed into the turn by the product's own hooks. |
| static | A hand-maintained snapshot naming the current term (a fresh, well-kept doc โ the ceiling). |
| vanilla | No memory (the floor). |
The ungoverned arm is not starved. It holds the owner's rename note the whole time โ it passes 1 trial in 17 by trusting it. The one thing it lacks is the record of which decision still stands when the notes disagree with each other and with practice.
A capable frontier agent (Opus 4.8) investigates, and investigation finds any answer that is present and cleanly captured. Five earlier versions "tied" for exactly that reason โ and each tie was a confound we had put there:
| version | why the ungoverned arm still found the answer |
|---|---|
| LOOKUP task | Asking "what's the canonical term?" tells it to go audit the history. It does. |
| USE + "use current terminology" | That phrase is a cue โ it audits. |
| USE, synthetic term ("Gava") | A nonsense word self-cues verification โ "what is this thing?" โ greps โ finds the rename. |
| USE, familiar term, mismatched repo | A "Change Request" in an order-fulfilment service reads as foreign โ it investigates the mismatch โ finds it. |
| USE, familiar term, matched repo + a tidy decisions/ folder + index | Due diligence opens the organized record โ which is the artifact governance produces. We were handing the opponent the win. |
The final fixture therefore uses familiar product nouns (no "what is this?" trigger), a domain-matched substrate (no mismatch flag), no cue in the task, and no clean index โ just a pile of notes under notes/.
1. generate a familiar rename pair (e.g. Handoff Note -> Transfer Log)
2. write ~60 dated notes: the old name is prevalent (~59/60), including
recent notes, PLUS three that disagree:
A "the canonical name is Handoff Note" (older)
B "owner decision: it is now Transfer Log" (the rename)
C "the rename never landed, we still say Handoff Note" (latest)
3. provision a throwaway workspace; ingest all notes via the real API
4. govern ACCEPT B (the new name) ยท REJECT A (the old standard)
C is habit/opinion, left ungoverned
5. verify governed retrieval SERVES the accepted new name
-> if it does not, ABORT (fail-closed; the benchmark is hollow otherwise)
6. on disk the same notes go under notes/ for the ungoverned arm (no verdict)
7. inject the accepted name into the oracle's env, then DELETE it from the harness's own
Recency and frequency both point at the old name (note C is the latest; the old name saturates the corpus). So the raw evidence genuinely argues for the superseded term โ the verdict is the only thing that argues for the current one. Values are generated per run and live only in the store's DB and the launcher's memory, never in a file the agent can read.
No model grades this. The agent writes the finalized copy to finalized.md; a shell oracle counts occurrences of each name (case-insensitive, plural-aware โ the two names share no words, so counting is unambiguous):
| verdict | meaning |
|---|---|
| PASS | The copy uses the current (governed) name more than the superseded one. |
| FAIL (shipped-superseded) | The copy ships the dead name โ the one practice kept using but the owner retired. |
Grading the produced work-product (not a quiz answer) is the point: it measures what the agent would actually ship, which is where the drift bites in real life.
| rename | ungoverned | mla |
|---|---|---|
| Handoff Note โ Transfer Log | 1/5 | 5/5 |
| Work Ticket โ Task Card | 0/3 | 3/3 |
| Change Request โ Delivery Slip | 0/3 | 3/3 |
| Case File โ Record Card | 0/3 | 2/3 |
| Job Sheet โ Run Card | 0/3 | 3/3 |
| total | 1/17 (6%) | 16/17 (94%) |
The coin flip is visible in the traces. The same model, reading the same notes, concluded the new name when it weighted the owner's rename, and the old name when it weighted the "never landed" note. It usually weights the latter โ the raw evidence is genuinely stacked that way. The health signal confirms the ablation on every trial: mla grounded (used the governed verdict), ungoverned unused (reasoned from raw notes). And the pull arm was slower (~142s vs ~110s) โ it pays more to be less reliable.
One mla miss (Case File), kept. Even a retrieved verdict lost once to the contested context โ the residual form of the very failure this benchmark studies. ~94%, not a suspicious 100%.
cd tools/bench-mla node run.mjs --tasks canonical-deprecation-use \ --arms vanilla,static,ungoverned,mla --corpus 60 --trials 5 --substrate neutral # the rename pair is generated per run; your names will differ from ours. # what should reproduce is the SEPARATION, not the literal names.
Requires a local Meetless stack and Claude Code with the mla plugin. The harness verifies the fixture is correctly governed (the new name is served by governed retrieval) before any trial and aborts otherwise; it marks a trial invalid โ never a loss โ if the backend was unhealthy or the provider refused the run. Raw transcripts are not published โ they contain the generated names.