feat(gate): a design artifact must name its consumer, prior art and twins - #1288
Merged
Conversation
…wins Maintainer decision, from a lessons review of a ten-PR session in which every design proposal sent to review was overturned. Each was missing exactly one cheap check that would have killed it, each one command away — so the reviewer was doing the proposer's falsification. That works only while the error is in something a reviewer re-derives; a census presented as fact gets CONFIRMED instead, which is how #1252's false "every QSY frame is signed" claim survived a dedicated review for months. The tempting fix was falsified first, and that is the more useful half. My diagnosis was that the rules already exist (measurement-integrity bans grep-censuses and reading an absence from a filter; second-opinion says read the consumer before proposing) and that the fix was their TRIGGER, since the skills had not loaded. Tested against the transcript: 92 GATE: lines, 81 cargo verdicts and 20 gh pr create since 2026-09-02, with ZERO loads of measurement-integrity. A wrong-trigger hypothesis predicts loads during the activities the trigger does name; they did not happen. Three rules were also violated the same day they were written. Adding or re-scoping text was the one intervention the evidence ruled out. So: check-review.sh now requires ## Consumer, ## Prior art and ## Twins in a design artifact, each non-empty, each either an answer with its command or the literal UNCHECKED. UNCHECKED is legal deliberately — the goal is to convert an omission into a written claim, as `Review: none` already does at tier 1. A field that may say UNCHECKED bans a construct; "consider the consumer" is an exhortation that cannot fail. Five new self-test probes: each field missing is rejected by name, an EMPTY section is rejected (a checker that only greps the heading turns the requirement into a formatting rule the omission can wear), and UNCHECKED is accepted. The positive-control fixture now carries the fields, so "fixing" it by deleting them would silently un-require them — the fixture is part of the check. Results: REVIEW-LINT-SELF-TEST: PASS, 13 probes including two positive controls. Review: none — the maintainer specified this shape Verification-objective: a design proposal must not be able to omit its consumer, prior art or twins without writing down that it did. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0188ATCj6DZ9aRVQ2vSirua6
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Maintainer decision, from a lessons review of a ten-PR session.
Why
Every design proposal I sent to review in that session was overturned, and each was missing exactly
one cheap check that would have killed it — each one command away:
GetConfigruns on a task holding no engine, so the design would have paid none of the debt it claimedNOT-GRANDFATHERED,trace.py)So the reviewer was doing the proposer's falsification. That works only while the error is in
something a reviewer re-derives. A census presented as a fact is the shape that gets confirmed
instead — which is how #1252's false "every QSY frame is Ed25519-signed" claim survived a dedicated
code review for months.
The tempting fix was falsified first, and that is the more useful half
My diagnosis was that the rules already exist —
measurement-integritybans grep-censuses andreading an absence out of a filter;
second-opinionsays read the consumer before proposing — andthat the fix was their trigger, since those skills had not loaded.
Tested against the session transcript: since 2026-09-02 there are 92
GATE:lines, 81 cargoverdicts and 20
gh pr create, with zero loads ofmeasurement-integrity. A wrong-triggerhypothesis predicts loads during the activities the trigger does name; they did not happen. Three
rules were also violated the same day they were written — the "grep the skill before adding a
rule" line went into global
CLAUDE.mdat 09:06 and #1268 broke it at 12:29.Adding or re-scoping text was the one intervention the evidence ruled out. Hence a mechanical
check rather than another paragraph.
What this does
scripts/check-review.shnow requires a design artifact to carry## Consumer,## Prior artand## Twins, each non-empty, each either an answer with the command that produced it or theliteral
UNCHECKED.UNCHECKEDis legal on purpose. The goal is to turn an omission into a written claim, exactly astier 1's
Review: none — <reason>already does. A field that may not be empty but may sayUNCHECKEDbans a construct; "consider the consumer" would be an exhortation that cannot fail andis indistinguishable from compliance.
Tests
Five new probes, and the third is the one that matters:
into a formatting rule the omission can wear;
UNCHECKEDis accepted, so the escape hatch is real rather than nominal.The positive-control fixture now carries the three fields, which means "fixing" that fixture by
deleting them would silently un-require them for everyone. The fixture is part of the check.
This PR classifies as ordinary (it touches
scripts/, not a decision-recording site), so its owntrailer is
Review: none — the maintainer specified this shape, which is the honest answer.Already earning it
The first design proposal after this landed (#1263, PTT nesting) was written with the three fields
filled. The Consumer field is what surfaced that the manual
PttAssertpath holds no ownershiptoken at all; the Prior art sweep still missed an existing marker (ARDOP's
manual_keyed) becauseI grepped for the words I expected the mechanism to be called rather than reading the struct — so the
field is not a cure, but the omission is now written down where the next reader can see it.
Review: none — the maintainer specified this shape
🤖 Generated with Claude Code
https://claude.ai/code/session_0188ATCj6DZ9aRVQ2vSirua6