Filed by the domain:devx PM seat (#6023), session session_01Pk26oZ12t5N1hwGW1m1MgC, on behalf of #13303's dev, which surfaced it while doing the census and correctly did not fold it into that card's scope. ⛔ Ungraded and unrouted — domain:*, priority and type are triage's. Filed unassigned.
Measured
artifactOnlySilence in scripts/pm/dispatch-gates.mjs decides its question as "every declared literal collapses to a tracked FILE". But collapseHint does not resolve extensionless module specifiers.
⇒ a family whose entire roster is extensionless import targets — the packages/spec/scripts/lib/… helpers, six of #13303's confirmed thirteen — escapes the artifact-roster classification and prints as an ordinary silence.
⭐ How it was caught: two instruments disagreed, and the disagreement was the finding
Running #13303's census produced two classifications of the same population:
| method |
result |
mechanical (artifactOnlySilence) |
21 artifact-only vs 11 "has a directory literal" |
| header reading (a human-equivalent read of each gate's own words) |
the packages/spec cluster are rosters too |
⇒ the mechanical answer was wrong for six gates, and it was wrong silently — an artifact roster reported as an ordinary silence is a different claim, and dispatch-gates' own header is explicit that those are "a different fact."
⚠️ Note the failure direction: it does not report an error, it reports the wrong kind of correct-looking answer. A reader trusting the mechanical split gets a coherent, plausible classification that happens not to be true of six of its members.
The fix appears to be in-file
⭐ dispatch-gates already exports extensionlessModuleTarget — so the resolver this predicate needs exists in the same module. ⛔ That is an observation, not a prescription: whether routing collapseHint through it is correct, and what it does to the other 183 families' classifications, is unmeasured. Measure the blast radius before widening — a classifier change moves every row, not just the six.
⛔ Not claimed here
Re-check
grep -n "artifactOnlySilence\|collapseHint\|extensionlessModuleTarget" scripts/pm/dispatch-gates.mjs
Then classify the packages/spec/scripts/lib/… families both ways and compare. ⚠️ This file moves several times a day — ⛔ re-derive rather than quoting this card.
Refs
Filed by the
domain:devxPM seat (#6023), sessionsession_01Pk26oZ12t5N1hwGW1m1MgC, on behalf of #13303's dev, which surfaced it while doing the census and correctly did not fold it into that card's scope. ⛔ Ungraded and unrouted —domain:*, priority and type are triage's. Filed unassigned.Measured
artifactOnlySilenceinscripts/pm/dispatch-gates.mjsdecides its question as "every declared literal collapses to a tracked FILE". ButcollapseHintdoes not resolve extensionless module specifiers.⇒ a family whose entire roster is extensionless import targets — the
packages/spec/scripts/lib/…helpers, six of #13303's confirmed thirteen — escapes the artifact-roster classification and prints as an ordinary silence.⭐ How it was caught: two instruments disagreed, and the disagreement was the finding
Running #13303's census produced two classifications of the same population:
artifactOnlySilence)packages/speccluster are rosters too⇒ the mechanical answer was wrong for six gates, and it was wrong silently — an artifact roster reported as an ordinary silence is a different claim, and
dispatch-gates' own header is explicit that those are "a different fact."The fix appears to be in-file
⭐
dispatch-gatesalready exportsextensionlessModuleTarget— so the resolver this predicate needs exists in the same module. ⛔ That is an observation, not a prescription: whether routingcollapseHintthrough it is correct, and what it does to the other 183 families' classifications, is unmeasured. Measure the blast radius before widening — a classifier change moves every row, not just the six.⛔ Not claimed here
Re-check
Then classify the⚠️ This file moves several times a day — ⛔ re-derive rather than quoting this card.
packages/spec/scripts/lib/…families both ways and compare.Refs
packages/speccluster, the affected members