Skip to content

The two surfaces that merely restate the gate set should name pnpm verify instead of enumerating it — a restatement of a definition cannot be allowed to drift #78

Description

@zhuangjianguo

Why this exists

package.json:21 defines the gate set:

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

Five places in the repository restated that list, and all five drifted at once when CI gained a fourth gate — fixed in one pass by #73 / PR #77. Correcting five copies leaves five copies. This card removes two of them from the drift surface permanently.

The split, and why it is not "collapse them all"

The five are not the same kind of statement:

surface what it is this card
AGENTS.md Gates cell (delivery-process table) a restatement: names the set only to say "this is the bar" → pnpm verify
docs/backlog/README.md acceptance floor a restatement: same, for every dispatched card → pnpm verify
README.md's fenced block a demonstration: shows a reader what runs, one explanatory comment per gate ⛔ leave enumerating
AGENTS.md's 「Verify your work」 fenced block a demonstration: same, and its comments explain why lint is not a second spelling of validate ⛔ leave enumerating
DESIGN.md:354 M1 acceptance cell a historical record of what M1 was accepted against ⛔ leave at three — adjudicated on #73, ⛔ do not touch

The two restatements carry no per-command information. They exist to point at the bar, and a pointer to a definition should be the definition's name. pnpm verify cannot drift; it is the list.

The two fenced blocks are the opposite: their job is to show what runs and why, and collapsing them would delete the explanations that make them worth reading.

Precedent already in the tree: docs/backlog/14-release.md:14 already says 「pnpm verify green」 — one card already does exactly this.

⛔ This is hardening, not a defect

After PR #77 merges, all five statements are correct. Nothing is broken and nothing misleads. This card buys one thing: two of the five can never go stale again. Treat it with the care that deserves — ⛔ it does not justify touching anything beyond the two cells.

Constraints

Acceptance

Provenance

Recommended by the dev on #73 as open_questions option A, deliberately not acted on in PR #77 because the card said to recommend rather than act. The split above is that dev's; the decision to adopt A and file it is the PM seat's. Its own words for why:

Those two name the set only to say "this is the bar" — they carry no per-command information and are pure restatements of package.json's verify, which is precisely the mechanism that drifted five copies at once.

Related

#73 / PR #77 (the five-way fix this hardens; blocker) · #67 / PR #72 (19a8a4c, which made CI enforce four) · docs/backlog/14-release.md:14 (the precedent) · PR #40 (the governed-surface path)

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