Skip to content

Commit dc4437a

Browse files
committed
fix(pm): drop the no-path-population marker the widening-tell gate cannot honour
The gate's CI command is its own --self-test, so on the marker's own second listed cause the declaration read true. dispatch-gates' live guard refuses it anyway the moment a family NAMES paths, and this one names 59: 9 from its module body (the registry table, the objectui mirror glob, two repo slugs, four fixture filenames) and 50 inherited from the two registers it imports on purpose, SUSPECT_TIER_GLOBS and REGEN_ARTIFACTS. Getting those out of a scanned position would mean hand-copying two registers this file imports precisely so it can never disagree with them - the drift check:pm-governed-prose exists to stop, and this gate's strongest property. So the marker goes and the derivation stands. The header now records what the derivation says, which part of it is right (packages/spec/src/**, api-surface/**, the three registries - the surfaces this gate polices) and which part is noise inherited from REGEN_ARTIFACTS, and why one cheap self-test in a MATCHED column is the smaller error than a marker sitting above a live population. The case that catches this sits at ~1534 of dispatch-gates' self-test and needs well over 540s to reach, which is why three local runs missed it. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018dxq7YqsLDMeZDZ5AzsgJX
1 parent 9f33c3a commit dc4437a

1 file changed

Lines changed: 41 additions & 1 deletion

File tree

scripts/pm/check-widening-tells.mjs

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,47 @@
158158
* diff, and failing an unrelated PR's CI over it would punish the wrong actor.
159159
*/
160160

161-
// dispatch-gates: no-path-population -- this gate reads no file in the tree as its input: it judges a PR's DIFF, supplied by its caller from the API or from `git diff`, so no card's file surface can predict it. The path globs in its module body are patterns matched against diff filenames, never files it opens (#16448)
161+
// ⛔ NO `dispatch-gates: no-path-population` MARKER HERE — deliberately, and the
162+
// reasoning is worth the paragraph because the marker LOOKS right.
163+
//
164+
// This gate's CI command is its own `--self-test`, which is the second of the
165+
// three causes that marker's docblock lists ("the derivation NEED NOT place it").
166+
// On that reading the declaration is true: no card's file surface should
167+
// schedule this command, because running it says nothing about that card's diff.
168+
//
169+
// But the marker is refused by `dispatch-gates`'s live guard the moment a family
170+
// NAMES paths, and this one names 59 of them (measured on this tree): 9 from its
171+
// own module body — the registry table, the objectui mirror glob, the two repo
172+
// slugs and four fixture filenames — and 50 inherited from the two registers it
173+
// imports ON PURPOSE, `SUSPECT_TIER_GLOBS` and `REGEN_ARTIFACTS`. That guard's
174+
// own text gives the fork: "If the literals are the real population, delete the
175+
// marker and let the matched column do its job; if they are artifacts rather
176+
// than a population, the marker stands and the literals do not belong in a
177+
// scanned position."
178+
//
179+
// Both halves of getting them out of scanned positions cost more than they buy:
180+
// the 9 would have to become segment predicates instead of paths, and the 50
181+
// would have to become a HAND COPY of two registers this file imports precisely
182+
// so it can never disagree with them — which is the drift
183+
// `check:pm-governed-prose` exists to stop one family over, and the single
184+
// strongest property this gate has. So the marker goes and the derivation
185+
// stands.
186+
//
187+
// What the derivation now says, and why it is not wrong: a card touching any of
188+
// those 59 paths gets `pnpm check:pm-widening-tells` in its MATCHED column. For
189+
// `packages/spec/src/**`, `packages/spec/api-surface/**` and the three
190+
// registries that is exactly right — they are the surfaces this gate polices,
191+
// and a dev editing one is the dev whose claim it will judge. For the tail
192+
// inherited from `REGEN_ARTIFACTS` (`*/test-typecheck-debt.json`,
193+
// `content/docs/references/**`, and the rest) it is noise, and the cost of that
194+
// noise is bounded and small: the command is an offline self-test that runs in
195+
// about a second and whose green means "the tells still work". An
196+
// over-matched gate pastes one cheap command into a prompt; the alternative was
197+
// a marker sitting above a live population, which is the rot direction
198+
// `dispatch-gates` measured and refused. ⛔ Do not re-add the marker without
199+
// first removing the imports — a green local run is not evidence, because the
200+
// case that catches this sits at ~1534 of the self-test's assertions and needs
201+
// well over 540s to reach (#16448 patch round 2).
162202

163203
import process from 'node:process';
164204
import { existsSync, readFileSync } from 'node:fs';

0 commit comments

Comments
 (0)