You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
finding: dispatch-gates' residue prose still names README.md as the live specimen of an unreachable top-level-FILE population — it is now declared #10012
Recording, not claiming. Found while landing #9979 (PR #10011); deliberately not fixed there — that card's scope is the six gate declarations, and this is one sentence in a different function.
renderResidue in scripts/pm/dispatch-gates.mjs prints, on every derivation:
A `silent` verdict is this derivation's weakest claim, not a clearance, and there are two ways to
earn it that have nothing to do with your paths: a gate that computes its own population and names
only its baseline artifact scores silent for every card in the tree, and so does one whose
population is a top-level FILE (`README.md`) — a literal with no path separator is refused as too
generic, so the gate reads your file while naming nothing that can match it.
The rule is still exactly true: the extractor still refuses a bare top-level literal, that refusal is correct, and any gate whose population is an undeclared root file still scores silent for it. What went stale is the specimen. README.md was the honest example because check:doc-anchors really did read it and really could not be reached; after #9979 that gate declares README.md/** and ARCHITECTURE.md/**, so a README.md card now derives it. Measured on PR #10011's branch: README.md 0 -> 1 family, ARCHITECTURE.md 0 -> 1.
So the sentence now offers, as its illustration of an unreachable population, the one root file in this repo that is reachable. A reader who tests the claim gets the opposite answer, which is the failure mode this file's own header cares about most — its prose is the authority a future author reads before deciding whether to widen the extractor.
Two candidate remedies, both cheap, neither obviously right:
De-specimen the sentence — state the class without naming a file ("a population that is a repo-root FILE, unless the gate declares the subtree spelling"), and point at hintCovers' docblock, which already carries the full measurement and the escape hatch. Cannot go stale; loses a little concreteness.
Recommendation: (2), with the declaration escape hatch named in the same breath — the residue block's job is to keep silent from reading as a clearance, and "here is how a gate stops being silent" serves that better than any example. Whoever takes it should check whether the same specimen is repeated elsewhere in that file's prose.
Recording, not claiming. Found while landing #9979 (PR #10011); deliberately not fixed there — that card's scope is the six gate declarations, and this is one sentence in a different function.
renderResidueinscripts/pm/dispatch-gates.mjsprints, on every derivation:The rule is still exactly true: the extractor still refuses a bare top-level literal, that refusal is correct, and any gate whose population is an undeclared root file still scores
silentfor it. What went stale is the specimen.README.mdwas the honest example becausecheck:doc-anchorsreally did read it and really could not be reached; after #9979 that gate declaresREADME.md/**andARCHITECTURE.md/**, so aREADME.mdcard now derives it. Measured on PR #10011's branch:README.md0 -> 1 family,ARCHITECTURE.md0 -> 1.So the sentence now offers, as its illustration of an unreachable population, the one root file in this repo that is reachable. A reader who tests the claim gets the opposite answer, which is the failure mode this file's own header cares about most — its prose is the authority a future author reads before deciding whether to widen the extractor.
Two candidate remedies, both cheap, neither obviously right:
LICENSEandexamples/AGENTS.mdboth derive zero today and are the controls PR ci: a standing caller for the required-set sweep, and five gates that declare the root file they read #10011 used). Keeps the sentence concrete; needs re-checking whenever the next declaration lands, i.e. it can go stale again the same way.hintCovers' docblock, which already carries the full measurement and the escape hatch. Cannot go stale; loses a little concreteness.Recommendation: (2), with the declaration escape hatch named in the same breath — the residue block's job is to keep
silentfrom reading as a clearance, and "here is how a gate stops being silent" serves that better than any example. Whoever takes it should check whether the same specimen is repeated elsewhere in that file's prose.Related: #9964, #9626, #9979.
Generated by Claude Code