Skip to content

Commit 8b5d60e

Browse files
committed
tooling(pm): re-decide the declaration-mirrors row from REFUSE-UNSPELLABLE to DECLARED-NARROWER
The row recorded a refusal ground the tree has withdrawn: it named the EXTENSION filter as the thing no spelling of the idiom describes, which is the collapse retired for this shape, and the gate itself now declares both sides of the mirror beside its constant. Re-decided under the recorded authorisation sentence and no wider one, with every term of the reason re-measured together on one tree and none carried forward from the reading it replaces. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016vtdMao3dQS9EfQfpyWixd
1 parent e581457 commit 8b5d60e

1 file changed

Lines changed: 79 additions & 14 deletions

File tree

scripts/pm/bare-root-worklist.mjs

Lines changed: 79 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)