@@ -326,6 +326,27 @@ const POPULATION_CONSTANT = /^(?:[A-Z0-9_]*_ROOTS?|[A-Z0-9_]*_DIRS?|ROOTS|DIRS|P
326326 * at a time. ⛔ The gate is not edited from here either: it is correct, and what
327327 * went stale is the MAP, which recorded less than it judged.
328328 *
329+ * ⭐ A TWENTIETH row was re-decided on 2026-09-05 (#15602) under that same
330+ * authorisation sentence and no wider one: `check:declaration-mirrors
331+ * SCRIPTS_DIR scripts`. Its refusal named the EXTENSION filter as the thing no
332+ * spelling of the idiom describes, which is the identical collapse #12300
333+ * retired, and the GATE had already acted on it before this map did: #15601
334+ * declared both sides of the mirror beside the constant. So the row went on
335+ * asserting that nothing honest was declarable while its own gate declared, and
336+ * that pairing is one NO pin in this file reads — the declaration is read back
337+ * out of a gate's source only for DECLARED-NARROWER rows, and `contradicted`
338+ * fires only on a row the sweep finds REACHABLE, which this one is not, because
339+ * neither declared hint reaches an arbitrary file at the top of the root. Green
340+ * everywhere, therefore, and correctly so per assertion; the class is caught by
341+ * re-measuring and by nothing else, which is what this docblock says of it.
342+ * ⛔ Its numbers are re-measured on the 2026-09-05 tree in EVERY term at one
343+ * commit and NOT carried from the row they replace — nor from the card that
344+ * filed it, nor from that card's triage: the mirror count read 2, then 4, then 5
345+ * and the module-side reach 214, then 216, then 218 across the filing, the
346+ * triage and this fix in under two days. Three readings of three trees is the
347+ * drift this docblock permits; pairing any one of those numerators with another
348+ * reading's denominator is the defect it forbids, and the spread is why.
349+ *
329350 * ⚠️ One row of that seventeen was re-measured into a DIFFERENT population, not
330351 * merely fresher digits: #12392 (PR #12423, `69d0e18`) made
331352 * `check-skills-token-ratchet`'s walk RECURSIVE over whole skill directories, so
@@ -490,6 +511,22 @@ const SPELLINGS = new Map([
490511 && ( ( s . length === 2 && ( s [ 1 ] . endsWith ( '.mjs' ) || s [ 1 ] . endsWith ( '.mts' ) ) )
491512 || ( s . length === 3 && s [ 1 ] === 'pm' && s [ 2 ] . endsWith ( '.mjs' ) ) ) ,
492513 } ] ,
514+ [ 'scripts declaration mirrors and their modules' , {
515+ // BOTH sides of the mirror, because that is what the gate DECLARES: its walk
516+ // discovers the declaration side by extension, and the pair check imports the
517+ // module sitting beside each one, so either side moving breaks the mirror.
518+ // The module-side hint over-names heavily and the row records by how much --
519+ // recording anything narrower HERE would be a claim about a declaration
520+ // nobody made, which the declaration pin below refuses in both directions,
521+ // and the same reason the driver entry above records a whole subtree.
522+ segments : [
523+ [ 'scripts' , '**' , '*.d.mts' ] ,
524+ [ 'scripts' , '**' , '*.mjs' ] ,
525+ ] ,
526+ claim : 'every hand-written declaration file or ESM module at any depth under the scripts root' ,
527+ holds : ( s ) => s [ 0 ] === 'scripts' && s . length >= 2
528+ && ( s [ s . length - 1 ] . endsWith ( '.d.mts' ) || s [ s . length - 1 ] . endsWith ( '.mjs' ) ) ,
529+ } ] ,
493530] ) ;
494531
495532/**
@@ -694,6 +731,48 @@ const TRIAGE = new Map([
694731 + 'nested script at any depth" this row carried until 2026-09-04 was true of the walk it '
695732 + 'was written about and false of this one' ,
696733 } ] ,
734+ [ 'scripts/check-declaration-mirrors.mjs SCRIPTS_DIR scripts' , {
735+ verdict : 'DECLARED-NARROWER' ,
736+ spelling : 'scripts declaration mirrors and their modules' ,
737+ why : 'RE-DECIDED 2026-09-05 (#15602) from REFUSE-UNSPELLABLE, whose stated reason — "what '
738+ + 'cannot be spelled here is the EXTENSION filter" — was TRUE when written and is FALSE of '
739+ + 'this tree. It rested on the collapse #12300 retired: judgedAsPattern routes a glob in a '
740+ + 'non-final segment to triggerCovers now, so a population admitted BY EXTENSION under a '
741+ + 'root became expressible and precise. That is the same retired collapse the seventeen '
742+ + 'rows of 2026-08-26, the eighteenth of 2026-08-29 and the nineteenth of 2026-09-01 were '
743+ + 'each re-decided under, and this row is re-decided under that authorisation sentence and '
744+ + 'no wider one. ⛔ The verdict is NOT kept for having been the one recorded, and the three '
745+ + 'alternatives were read off this map own vocabulary rather than inherited: '
746+ + 'REFUSE-UNSPELLABLE asserts NO spelling of the idiom describes the population, and the '
747+ + 'gate itself now spells one in its own source, so that refusal is false at the one place '
748+ + 'it is checkable; SPELLABLE-UNDECLARED is the row whose gate declares NOTHING for the '
749+ + 'population and nothing here is deferred; REFUSE-WIDE would need the population to BE the '
750+ + 'root, and it is not. What is left is the verdict this shape is defined as — the gate '
751+ + 'took the escape at a strictly narrower subtree — which #15601 landed beside SCRIPTS_DIR '
752+ + 'under the ROOT_DIR_WATCH_HINTS idiom, ⛔ and this row does NOT edit that gate: the gate '
753+ + 'is correct and the MAP is what went stale. RE-MEASURED 2026-09-05 at commit e581457b, '
754+ + 'every term taken in ONE call on ONE tree and never refreshed apart: the walk discovers 5 '
755+ + 'declaration files by extension and the pair check imports the 5 modules beside them, so '
756+ + 'the gate opens 10 of the 336 tracked files under the bare root, 3.0%. The declared '
757+ + 'mirror-side hint reaches 5 and the gate reads all 5, 100% precise; the module-side hint '
758+ + 'reaches 218 and the gate reads 5 of them, 2.3%. That second figure is the price of '
759+ + 'keeping the module side declared without a hand list of today pairs — the gate own '
760+ + 'docblock prices it at ~1.6 s of fleet compute per 36 cards and takes the over-naming '
761+ + 'trade deliberately — and it is RECORDED here rather than refused, the same direction the '
762+ + 'driver package files entry records for its subtree. ⚠️ It is not what the PRECISION pin '
763+ + 'below measures: that pin asks whether the recorded claim and hintCovers admit the SAME '
764+ + 'files, and they do — 0 over-named, 0 missed, 223 of 336 covered, so the union is LIVE, '
765+ + 'PRECISE and COMPLETE and a real narrowing rather than the bare root wearing a glob. The '
766+ + 'recorded set is SET-EQUAL in BOTH directions to the array the gate declares at this '
767+ + 'root, so no hint is passed over and this row carries no omits. ⛔ The previous reading, '
768+ + '2 of 261, is superseded WHOLE and neither term is carried forward, which this docblock '
769+ + 'forbids by name — nor are the filing card 4 of 214 or its triage 4 of 216: all three '
770+ + 'readings are of trees that are gone, a FIFTH mirror pair having landed since, and the '
771+ + 'spread is the argument for taking them together rather than a discrepancy. The row STAYS '
772+ + 'in the sweep because the bare root is still not covered — a top-level script carrying '
773+ + 'any other extension satisfies neither hint, so no arbitrary file at the top of the root '
774+ + 'is reached — which is what this verdict says and is correct, not outstanding debt' ,
775+ } ] ,
697776 // ── Refused: the population is the whole root, and the root is saturated ──
698777 [ 'scripts/check-skill-identifier-liveness.mjs IMPL_ROOTS packages' , {
699778 verdict : 'REFUSE-WIDE' ,
@@ -807,20 +886,6 @@ const TRIAGE = new Map([
807886 why : '162 of 238 (68%), refused with its packages half for the reason above' ,
808887 } ] ,
809888 // ── Refused: the population is a filter the idiom cannot spell ────────────
810- [ 'scripts/check-declaration-mirrors.mjs SCRIPTS_DIR scripts' , {
811- verdict : 'REFUSE-UNSPELLABLE' ,
812- why : 'a RECURSIVE walk admitted by EXTENSION — every `scripts/**/*.d.mts`, 2 of 261 (0.77%), '
813- + 'read from the gate own mirrorFiles(). NOT the shape of the row above it, and measured '
814- + 'here rather than inherited from it: mirrorFiles() descends into every nested directory '
815- + 'and its own docblock says so. What cannot be spelled here is the EXTENSION filter, not a '
816- + 'non-recursive walk — `scripts/**` is spellable and TRUE of this walk, and refused anyway '
817- + 'because it would name this gate for 261 files to reach 2. Same class as the '
818- + 'check:driver-conformance CASE_SETS_DIR row below, so lifting the row-above non-recursive '
819- + 'limit would leave this one exactly as refused. ⚠️ Its former third neighbour, the '
820- + 'check:skills-token-ratchet SKILLS_DIR row, LEFT this class on 2026-08-26 and is no '
821- + 'longer the company it was cited as: #12392 made that walk recursive over whole skill '
822- + 'directories, which is a subtree and not an extension filter' ,
823- } ] ,
824889 [ 'scripts/check-driver-conformance.mjs CASE_SETS_DIR packages' , {
825890 verdict : 'REFUSE-UNSPELLABLE' ,
826891 why : 'a filename pattern inside one directory — 7 of 143 files (4.9%). Its sibling constant '
0 commit comments