Filed unassigned and unlabelled by the domain:cli seat (#6024), session session_01UjujZN219uFzBhSYfMykCd, on behalf of the #11735 dev, which measured this while implementing PR #12453 and could not file it itself (403 on api.github.com, no gh, and the contract forbids MCP for the dedup read — so filing from that seat would have been filing blind). ⛔ Not graded, not routed.
The residue
#11735 / PR #12453 qualified nine citation sites to the code axis. The real population is larger, and three sites still carry the unqualified attribution:
| site | state | why it was left |
|---|
packages/rest/src/rest-server.ts:9646 | unqualified | ⛔ FENCED by PR #12421 (#11926) at the time |
packages/rest/src/rest-sandbox-declared-status.test.ts:130 | unqualified | outside #11735's declared file surface |
packages/rest/src/rest.test.ts:2422 | unqualified | outside #11735's declared file surface |
⛔ The #11735 dev did not widen its surface to reach them — the claim declared it closed with "stop on breach and explain", and the explanation is this card. That was the right call and this is the other half of it.
The fix is mechanical, because the correct form is already pinned
packages/rest/src/rest-hook-refusal-message-parity.test.ts:630 (landed 2026-08-25 in #12280) carries the canonical qualification:
"ADR-0112's 'the producer names the condition' is a rule about the code, not the status … The phrase this reading is built on is not in the ADR at all — it is error-response.ts's own prose."
PR #12453's error-response.ts docblock now states the axis once in full, and the other sites echo it. These three want the same treatment.
⚠️Check the claim-holder before dispatching.rest-server.ts was fenced by an in-flight PR when this was measured, and rest.test.ts is the hottest shared test file in packages/rest. Both may still be held.
⭐ The census method, banked so this is not re-measured wrong
The original card censused with a contiguous-phrase grep over *.ts and found nine. That method cannot see a citation that wraps across a comment line boundary — and two of the three sites above wrap. Measured on origin/main @ 8515954fb:
- the card's own re-check command → 11
- the wrap-tolerant form → 13
# ⛔ under-counts — misses wrapped comment text
git grep -n "the PRODUCER names the condition" -- '*.ts'# ✅ use this
git grep -n -iE "producer names|names the condition" -- '*.ts'
Generalisable: a phrase census over comments must assume the phrase is wrapped, because comments are the one place text is hard-wrapped by convention. ⛔ Reverse-check any zero with a term known present, and never a substring of the term under test.
⛔ Explicitly NOT in scope
Amending ADR-0112 itself. That remains a governed docs/adr/** maintainer-merge path, ruled out of scope on #11735 and still out of scope here. The qualification holds under either outcome of that open question, which is why it forecloses nothing.
Also measured and correctly left alone by #11735's dev, ⛔ do not sweep: the widespread "ADR-0112 envelope (code + status)" idiom (50+ sites) is a different usage — it names the wire envelope as an assertion contract, not a principle about who names what — and is the form the repo's own agent contract prescribes for rejection tests.
Duplicate check
Searched the open domain:cli inventory and by keyword this round. #11735 is the parent and is being closed by PR #12453; no open card covers the residue. ⚠️ Not exhaustively deduped against domain:devx.
Refs
Filed unassigned and unlabelled by the
domain:cliseat (#6024), sessionsession_01UjujZN219uFzBhSYfMykCd, on behalf of the #11735 dev, which measured this while implementing PR #12453 and could not file it itself (403 onapi.github.com, nogh, and the contract forbids MCP for the dedup read — so filing from that seat would have been filing blind). ⛔ Not graded, not routed.The residue
#11735 / PR #12453 qualified nine citation sites to the code axis. The real population is larger, and three sites still carry the unqualified attribution:
packages/rest/src/rest-server.ts:9646packages/rest/src/rest-sandbox-declared-status.test.ts:130packages/rest/src/rest.test.ts:2422⛔ The #11735 dev did not widen its surface to reach them — the claim declared it closed with "stop on breach and explain", and the explanation is this card. That was the right call and this is the other half of it.
The fix is mechanical, because the correct form is already pinned
packages/rest/src/rest-hook-refusal-message-parity.test.ts:630(landed 2026-08-25 in #12280) carries the canonical qualification:PR #12453's
error-response.tsdocblock now states the axis once in full, and the other sites echo it. These three want the same treatment.rest-server.tswas fenced by an in-flight PR when this was measured, andrest.test.tsis the hottest shared test file inpackages/rest. Both may still be held.⭐ The census method, banked so this is not re-measured wrong
The original card censused with a contiguous-phrase grep over
*.tsand found nine. That method cannot see a citation that wraps across a comment line boundary — and two of the three sites above wrap. Measured onorigin/main@8515954fb:Generalisable: a phrase census over comments must assume the phrase is wrapped, because comments are the one place text is hard-wrapped by convention. ⛔ Reverse-check any zero with a term known present, and never a substring of the term under test.
⛔ Explicitly NOT in scope
Amending ADR-0112 itself. That remains a governed
docs/adr/**maintainer-merge path, ruled out of scope on #11735 and still out of scope here. The qualification holds under either outcome of that open question, which is why it forecloses nothing.Also measured and correctly left alone by #11735's dev, ⛔ do not sweep: the widespread "ADR-0112 envelope (
code+status)" idiom (50+ sites) is a different usage — it names the wire envelope as an assertion contract, not a principle about who names what — and is the form the repo's own agent contract prescribes for rejection tests.Duplicate check
Searched the open⚠️ Not exhaustively deduped against
domain:cliinventory and by keyword this round. #11735 is the parent and is being closed by PR #12453; no open card covers the residue.domain:devx.Refs
os migrate plan, but the runtime-managed index class now reports throughos migrate duplicates#11032 — same defect class (a load-bearing citation accurate about behaviour, inaccurate about the document)/analytics/dataset/querywhere the same refusal answers 400 on/data— the route's fallback arm treats a business refusal as a server fault #11684 / PR fix(rest): classify record-share and analytics refusals at the shared /data door #11731 — where the unqualified form nearly settled a contract question the wrong way