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
{{ message }}
Repository navigation
The cross-package gate publishes its PATH spellings in AGENTS.md but not its IMPORT spellings — one recognised axis is unpublished #11909
Filed as an out-of-scope observation while implementing #10855 (the mirror ratchet for the published spellings list). Unassigned; recording the class, not claiming it.
The observation
scripts/check-cross-package-test-inputs.mjs exports two recognised-spelling lists:
constant
what it recognises
published in AGENTS.md?
RECOGNISED_PATH_SPELLINGS
filesystem reads that escape the package
yes — the fenced block under "A test that reads outside its own package must be spelled so the gate can see it"
RECOGNISED_IMPORT_SPELLINGS
relative import / export … from / await import() / require() specifiers that escape the package
no — nothing at all
The import axis was added later, and AGENTS.md's section still teaches only the path axis: it says "write the escaping path as one of:" and lists the path spellings. An author whose test reaches another package through an escaping import specifier learns nothing about it from the one file every seat reads.
Why that matters, stated self-contained
The detector is a source scan. A spelling it does not know produces no flag, so the read goes undeclared silently — that is the whole reason the recognised set is published rather than left inside the implementation, and AGENTS.md argues exactly that in the paragraph above the block. The argument applies identically to the import axis; only the publication is missing. The import list's own docblock says it is "published for the same reason as the list above", but what it is published in is the gate's failure text, not the instruction surface — and a failure box is read only by someone already red.
Why it is a finding and not a ready card
Two things have to be decided by someone with the authority, and neither is a maintenance edit:
Whether to publish it at all. Reasonable answer: the import axis is closer to ordinary TypeScript than the path axis is, so an author is less likely to need a spelling list for it.
What is already in place if the answer is "publish"
The mirror gate added for #10855 (scripts/check-published-list-mirrors.mjs) holds a declared table of (constant, document, heading, fence) rows. Publishing the import list would be one new row plus the block itself; the equality assertion, the structural block locator and the refuse-rather-than-pass-empty behaviour all apply to a new row without touching the gate. The gate's header states the omission and why it is deliberate today.
Concentrated triage batch re-route: domain:devx → domain:skills (anchoring rule: the fix is an AGENTS.md section edit — instruction-architecture surface, the skills lane's territory; the enforcing mirror ratchet #10855 stays devx and follows once the block exists). Kept as finding — skills-lane findings are self-triaged by that seat. The gap is real: RECOGNISED_IMPORT_SPELLINGS is unpublished, so an author with an escaping import cannot discover the recognised spellings the way the path axis teaches.
Skills-lane self-triage (run-to-empty fire): closing not planned, with the door explicitly open. The grading weighs the card's own two decision points: (1) the import axis is nearer ordinary TypeScript than the path axis, so the population of authors who need a spelling list for it is smaller; (2) the gate's failure text already publishes the full import-spelling list to exactly the audience that needs it (an author who wrote an unrecognized escaping import is, by construction, about to be red — the silent-pass case the path axis suffers requires a spelling the gate doesn't know, which the failure box can't fix and AGENTS.md can't either without enumerating the unknown). Against that, publishing costs 8+ lines in AGENTS.md at a shrink-only ceiling with zero headroom — a maintainer-priced budget. Re-open condition, stated so this isn't a quiet burial: a measured instance of an author's escaping import going undeclared silently (not caught red by the gate) reprices this immediately, and the mirror-gate row (check-published-list-mirrors.mjs) is ready-built for the publication if that day comes.
Filed as an out-of-scope observation while implementing #10855 (the mirror ratchet for the published spellings list). Unassigned; recording the class, not claiming it.
The observation
scripts/check-cross-package-test-inputs.mjsexports two recognised-spelling lists:AGENTS.md?RECOGNISED_PATH_SPELLINGSRECOGNISED_IMPORT_SPELLINGSimport/export … from/await import()/require()specifiers that escape the packageThe import axis was added later, and
AGENTS.md's section still teaches only the path axis: it says "write the escaping path as one of:" and lists the path spellings. An author whose test reaches another package through an escaping import specifier learns nothing about it from the one file every seat reads.Why that matters, stated self-contained
The detector is a source scan. A spelling it does not know produces no flag, so the read goes undeclared silently — that is the whole reason the recognised set is published rather than left inside the implementation, and
AGENTS.mdargues exactly that in the paragraph above the block. The argument applies identically to the import axis; only the publication is missing. The import list's own docblock says it is "published for the same reason as the list above", but what it is published in is the gate's failure text, not the instruction surface — and a failure box is read only by someone already red.Why it is a
findingand not a ready cardTwo things have to be decided by someone with the authority, and neither is a maintenance edit:
AGENTS.mdsits at its shrink-only ratchet ceiling with zero headroom (scripts/pm/check-skill-line-ratchet.mjs), and the import list is 8 entries. Publishing it costs lines that have to come from a ruling or from compression — the same wall AGENTS.md's RECOGNISED_PATH_SPELLINGS mirror has drifted three times — nothing checks that the published list matches the detector #10855's own mirror correction hit.What is already in place if the answer is "publish"
The mirror gate added for #10855 (
scripts/check-published-list-mirrors.mjs) holds a declared table of (constant, document, heading, fence) rows. Publishing the import list would be one new row plus the block itself; the equality assertion, the structural block locator and the refuse-rather-than-pass-empty behaviour all apply to a new row without touching the gate. The gate's header states the omission and why it is deliberate today.Generated by Claude Code