Skip to content

Four surfaces state the gate set as three commands; CI now enforces four — one PR must move all four, and three of them are governed #73

Description

@zhuangjianguo

The gap

PR #72 (#67) added pnpm lint:i18n-gate to .github/workflows/ci.yml, so CI now enforces four gates. Four places in this repository still tell a contributor there are three:

where what it says governed?
README.md 47–49 the three-command block under 「Every metadata change is gated」 no
CLAUDE.md 8 ⛔ rule: pnpm validate && pnpm lint && pnpm typecheck must all pass yes
AGENTS.md 30–37 ## Verify your work — a three-command block, then 「Never report a change as done, and never open a PR, until all three pass. Paste the three green tails into the PR body.」 yes
AGENTS.md 129 Delivery process table: | Gates | pnpm validate && pnpm lint && pnpm typecheck. | yes

package.json's verify script has composed all four for some time —

"verify": "pnpm validate && pnpm lint && pnpm typecheck && pnpm lint:i18n-gate"

— so the documents are now the last thing in the repository still saying three.

Why this is one PR and not two

README.md is the only one of the four outside the governed range, so it could be fixed on the normal path today. ⛔ Do not. Fixing the editable surface alone would leave README.md saying four while CLAUDE.md and AGENTS.md say three — trading a uniform understatement, which merely omits, for a genuine contradiction, which misleads. All four move together or none do.

That makes this a governed-surface PR: AGENTS.md leaves CLAUDE.md and AGENTS.md to the maintainer's merge, the same path PR #40 took. The dev authors it, CI runs, the seat reviews and records an ACCEPT, and then it waits — ⛔ the seat does not merge it.

Why it is not a defect

A contributor who copies those three commands is led into an omission, not an error: the three still pass and still mean what they say, and pnpm verify — which the same documents also mention — runs all four anyway. Nothing breaks. This is documentation catching up with an enforcement surface that moved, which is the same shape as #44, #58 and #63 and is worth the same care.

What to change

Make all four state the same four-gate set. Notes per surface:

  • AGENTS.md 30–37 is a rewrite, not a line insert. The count is welded into the prose twice — 「all three pass」 and 「the three green tails」 — so adding a fourth command without touching those two phrases leaves the section contradicting itself in the space of three lines. ⚠️ That is exactly the defect class this card is fixing; do not reproduce it while fixing it.
  • AGENTS.md 129 is a table cell; keep the cell's existing shape.
  • CLAUDE.md 8 is inside a ⛔ rule that is deliberately terse and mirrors a Prime Directive; match its register and ⛔ do not expand it into a paragraph.
  • README.md 47–49 is a fenced block with a trailing comment per line; follow that convention for the fourth.
  • Consider whether any of the four should simply say pnpm verify instead of enumerating — state your reading, do not act on it unasked. Enumeration is what drifted; a single composed command cannot. But README.md's block exists to show a reader what runs, and collapsing it may cost more than it saves. If you recommend it, recommend it in the PR body and leave the enumerations in place.

Constraints

  • ⛔ Documentation only. No .github/, no package.json, no src/.
  • ⛔ Do not change what the gates are or their order — validatelinttypechecklint:i18n-gate, matching verify and ci.yml as merged.
  • Grep for every occurrence before declaring done, not just the four above. This card exists because one statement drifted in four places at once, and the four were found by a grep, not by a list — so run the grep yourself and report what it returns, including "nothing else".
  • ⛔ Do not touch DESIGN.md, LICENSE, CHANGELOG.md or docs/design/**.

Acceptance

Provenance

Found by the dev on #67 while checking whether CLAUDE.md's three-gate rule should become four — it reported all four surfaces, correctly declined to touch the three governed ones, and recommended one PR covering all four rather than a card for the README half alone. The PM seat adopted that recommendation; the reasoning above is the dev's.

Related

#67 / PR #72 (19a8a4c, which made CI enforce four) · PR #40 (the governed-surface path this card follows) · #44 · #58 · #63 (documentation catching up with the tree)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions