Skip to content

bare-root-worklist's DECLARED-NARROWER row for check-ratchet-remedy-authority states a walk narrower than the gate performs, and its pin cannot see the drift #15201

Description

@claude

The bare-root worklist row

scripts/check-ratchet-remedy-authority.mjs SCRIPTS_DIR scripts

carries verdict DECLARED-NARROWER, re-decided 2026-09-01 (#13813). Its why states the
population as the scripts root read one level, set-equal at 183 of 183 against 310
tracked files under the bare root, and ends: "the bare root is still not covered — no
arbitrary file at the top of the root is reached, and no nested script at any depth".

PR #15199 (for #15179, on the 2026-09-04 ruling) widens that gate's walk to a second
directory: corpusFiles() now reads scripts/ and scripts/pm/, one level each, and the
gate declares three hints — scripts/*.mjs, scripts/*.mts, scripts/pm/*.mjs — where
the row records two. Once that PR lands the row is false in two terms:

  1. the shape claim — "no nested script at any depth is reached" is no longer true; the
    fourteen .mjs files under scripts/pm/ are reached;
  2. the numbers — the walk admits 201 files, not 183 (187 top-level plus 14 under
    scripts/pm/), and the recorded spelling entry scripts top-level script files
    describes a two-hint set the gate no longer declares alone.

The row's own SPELLINGS entry, scripts top-level script files, holds
(s) => s.length === 2 && s[0] === 'scripts' && ..., which stays TRUE of the tree — the
map pins its recorded spellings against the tracked corpus, not against the gate's array —
so nothing reds: node scripts/pm/bare-root-worklist.mjs --self-test is green on the
#15199 branch, measured. That is exactly why this is worth a card: the divergence is
between the record and the gate it describes, and the pin cannot see it.

Why it was not repaired in #15199. Re-deciding a row on a shrink-only map belongs to
the file that owns it, and the dispatch for #15179 ruled it out of that card's file surface
by name. #15199's gate docblock carries a pointer to this staleness in the meantime.

Shape of the repair (for whoever picks it up): re-measure BOTH terms together on one
tree — the map's own docblock forbids refreshing a row's terms apart — and decide whether
the entry stays one multi-hint SPELLINGS record grown to three hints, or splits. The row
should stay in the sweep either way: the bare root is still not covered.

Not urgent, not blocking: no gate reds on it today.

Found while implementing #15179. Filed unassigned.


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions