Observation, filed unassigned. Not a red gate — the suite is green and stays green.
package-lock.json is being retired in #1469 (the StackBlitz demo it existed for goes with it). Two places in test/source-hygiene-scan-surface.test.ts then describe a tree that no longer exists:
- The file docblock ends with "The two lock files are pinned the same way — they are text, they sit at the root, and they are excluded on purpose." After the retirement there is one lock file at the root,
pnpm-lock.yaml.
ROOT_EXCLUDED_FILES (line 80) is ['pnpm-lock.yaml', 'package-lock.json'], and the case that consumes it writes both into the sandbox and asserts the gate reads neither. The package-lock.json half is now a fixture for a file the repo does not have. It is not wrong — the gate genuinely must not read a package-lock.json if one ever reappeared — it is just broader than the tree, and the comment beside it ("Text, and at the root the whitelist covers") no longer describes anything real.
Why it was left alone rather than fixed in #1469: that PR was dispatched with a named file surface, and this file is outside it. The two references that were mandatory — the .stackblitzrc entry in scripts/lib/source-hygiene-surface.mjs and the package-lock.json glob in .github/labeler.yml — went in because a gate turns red without them, each proved by ablation. This one turns nothing red, so fixing it is a judgement about prose rather than a mechanical consequence, and it belongs to whoever owns that file next.
Related precedent for the class: #1238 was the same shape (a comment describing a scan surface the gate had outgrown).
The repair is a comment edit plus, if the reviewer prefers the pin to track the tree, dropping package-lock.json from ROOT_EXCLUDED_FILES. Either way it should be a deliberate decision, since the second choice deletes a guard.
Generated by Claude Code
Observation, filed unassigned. Not a red gate — the suite is green and stays green.
package-lock.jsonis being retired in #1469 (the StackBlitz demo it existed for goes with it). Two places intest/source-hygiene-scan-surface.test.tsthen describe a tree that no longer exists:pnpm-lock.yaml.ROOT_EXCLUDED_FILES(line 80) is['pnpm-lock.yaml', 'package-lock.json'], and the case that consumes it writes both into the sandbox and asserts the gate reads neither. Thepackage-lock.jsonhalf is now a fixture for a file the repo does not have. It is not wrong — the gate genuinely must not read apackage-lock.jsonif one ever reappeared — it is just broader than the tree, and the comment beside it ("Text, and at the root the whitelist covers") no longer describes anything real.Why it was left alone rather than fixed in #1469: that PR was dispatched with a named file surface, and this file is outside it. The two references that were mandatory — the
.stackblitzrcentry inscripts/lib/source-hygiene-surface.mjsand thepackage-lock.jsonglob in.github/labeler.yml— went in because a gate turns red without them, each proved by ablation. This one turns nothing red, so fixing it is a judgement about prose rather than a mechanical consequence, and it belongs to whoever owns that file next.Related precedent for the class: #1238 was the same shape (a comment describing a scan surface the gate had outgrown).
The repair is a comment edit plus, if the reviewer prefers the pin to track the tree, dropping
package-lock.jsonfromROOT_EXCLUDED_FILES. Either way it should be a deliberate decision, since the second choice deletes a guard.Generated by Claude Code