Measured by the #13312 dev seat (PR #13447) while censusing dead watch-hint literals across all families. Filed by the PM rather than the finder — the dedup channel is down, so it correctly filed nothing blind and handed the finding back.
⛔ No domain:*, no priority, no type label — triage's field.
The defect
check:doc-anchors carries a watch hint naming a path that has never existed:
scripts/scripts/check-doc-anchors.mjs
⭐ The doubled scripts/ is not a typo in a hint — it is a real string being read in the wrong frame. Line 459 of scripts/check-doc-anchors.mjs spells ./scripts/check-doc-anchors.mjs inside a remedy message, i.e. a command intended to be run from the repo root. The hint extractor resolves quoted path-shaped literals module-relative, so the gate's own directory is prepended and the prefix doubles.
⇒ Neither half is wrong on its own: the remedy string is correct for its reader, and the extractor is correct for a declaration. The fabrication comes from one being read as the other.
Why it is worth a card
This is the same class as its parent finding #13312 — a dispatch brief shown a lead that cannot ever match anything — but with a different cause, and the difference is what makes it separately fixable. #13312's fabrications are self-test fixture constants; this one is prose meant for a human, in a file that is otherwise correct.
⚠️ And #13312's own measurement is the reason this cannot be fixed by tightening the extractor: the sanctioned declaration idiom is structurally indistinguishable from an incidental module-scope constant (measured there at 8.6 real populations deleted per fabrication removed). ⇒ The honest fix is local to this gate — spell the remedy so it cannot be read as a declaration — not a change to how literals are scraped.
Current state
PR #13447 now annotates this hint as dead, so it is visible rather than silent. ⛔ That is the display half only; the fabricated literal is still declared, and the spelling fix belongs in scripts/check-doc-anchors.mjs, which was outside that card's file surface.
Reproduction
node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --residue
git ls-files 'scripts/scripts/*' # 0
Then read scripts/check-doc-anchors.mjs around line 459 for the source string.
Dedup declaration
⚠️ search_issues returns FALSE ZEROS on this fleet (recorded on #13312), so a zero from it is not a reading. Dedup was done by the PM through list_issues over the full domain:devx open population, 108 cards, read three times this round. Nearest neighbours examined and rejected as distinct: #13312 (same symptom class, different cause — fixture constants, and it is this card's parent), #13448 (the hintCovers basename-glob defect filed alongside this one — a coverage predicate failure, not a fabricated literal), #12797 (a wrong reason on a bare hint), #13333 (a family the derivation does not reach).
⚠️ That listing covers one lane only. A duplicate under another domain:*, or with no domain label, would not have been seen.
Refs
Measured by the #13312 dev seat (PR #13447) while censusing dead watch-hint literals across all families. Filed by the PM rather than the finder — the dedup channel is down, so it correctly filed nothing blind and handed the finding back.
⛔ No
domain:*, no priority, no type label — triage's field.The defect
check:doc-anchorscarries a watch hint naming a path that has never existed:⭐ The doubled
scripts/is not a typo in a hint — it is a real string being read in the wrong frame. Line 459 ofscripts/check-doc-anchors.mjsspells./scripts/check-doc-anchors.mjsinside a remedy message, i.e. a command intended to be run from the repo root. The hint extractor resolves quoted path-shaped literals module-relative, so the gate's own directory is prepended and the prefix doubles.⇒ Neither half is wrong on its own: the remedy string is correct for its reader, and the extractor is correct for a declaration. The fabrication comes from one being read as the other.
Why it is worth a card
This is the same class as its parent finding #13312 — a dispatch brief shown a lead that cannot ever match anything — but with a different cause, and the difference is what makes it separately fixable. #13312's fabrications are self-test fixture constants; this one is prose meant for a human, in a file that is otherwise correct.
Current state
PR #13447 now annotates this hint as dead, so it is visible rather than silent. ⛔ That is the display half only; the fabricated literal is still declared, and the spelling fix belongs in
scripts/check-doc-anchors.mjs, which was outside that card's file surface.Reproduction
Then read
scripts/check-doc-anchors.mjsaround line 459 for the source string.Dedup declaration
search_issuesreturns FALSE ZEROS on this fleet (recorded on #13312), so a zero from it is not a reading. Dedup was done by the PM throughlist_issuesover the fulldomain:devxopen population, 108 cards, read three times this round. Nearest neighbours examined and rejected as distinct: #13312 (same symptom class, different cause — fixture constants, and it is this card's parent), #13448 (thehintCoversbasename-glob defect filed alongside this one — a coverage predicate failure, not a fabricated literal), #12797 (a wrong reason on a bare hint), #13333 (a family the derivation does not reach).domain:*, or with no domain label, would not have been seen.Refs
dispatch-gates --residueprints THREE fabricated leads for check:query-options-erasure — literals naming files that have never existed, unannotated because one live sibling keeps the family reachable #13312 / PR fix(devx): dispatch-gates marks dead watch-hint literals in reachable families and refuses @-scoped specifiers as paths (#13312) #13447 — the census that surfaced this, and the annotator that makes it visiblehintCoversdoes not follow a final-segment basename glob, so.changeset/*.mdmeasures DEAD against ~400 tracked changesets — and the residue names a false reason for it #13448 — the sibling residue defect filed from the same censusscripts/check-doc-anchors.mjsline 459 — the remedy string