[finding] bare-root-worklist pins a recorded spelling in hintCovers' terms only for SINGLE-hint rows — five DECLARED-NARROWER rows are re-measured by nothing #14233

Description

@claude

Measured while working #13813 (PR #14231). Filed unassigned, not graded.

What is unpinned

scripts/pm/bare-root-worklist.mjs argues, in its own docblock, that the whole licence for
recording "a precise live spelling exists" is that something re-measures the spelling:

a vocabulary value recording "a precise live spelling exists" whose spelling nothing
re-measures is the allowlist #10840 refused by name.

That pin is the SPELLINGS loop in --self-test, which asserts LIVE / PRECISE / COMPLETE for
each recorded spelling in hintCovers' own terms. It is a real pin and it works.

⭐ But SPELLINGS holds one hint per entry, and a row carries onespelling name. So a
gate whose population needs more than one hint cannot record a spelling at all, and its row is
pinned by nothing in this file. Five DECLARED-NARROWER rows are in exactly that state today:

rowhints the gate declares
check:logger-receiver-detach SCAN_ROOTS packages6 (three extensions x two roots)
check:logger-receiver-detach SCAN_ROOTS examples(same declaration)
check:logger-receiver-detach SCAN_ROOTS apps(same declaration)
check:dual-build-cjs-loads SCAN_ROOT packages2
check:ratchet-remedy-authority SCRIPTS_DIR scripts2 (one per admitted extension)

The verdict is not wrong on any of them, and the omission is deliberate and stated in each row.
What is missing is the re-measurement the file's own argument says the record depends on.

Why the gate-side self-tests do not close it

Each of those gates does pin its declaration from its own side, and each pin is deliberately
written without importing scripts/pm/dispatch-gates.mjs — because the import specifier would
itself be a path literal, handing the gate that module's declared population as if it were its own.
check-logger-receiver-detach.mjs records that refusal in as many words, and #13813's gate repeats
it.

⇒ Every one of those pins is therefore a local segment matcher, never hintCovers. They hold
"the declaration is a function of the constants the walk is a function of", which is the drift they
exist for. They cannot hold "and hintCovers still reaches these files."

The two claims come apart, and not hypothetically — the whole reason this card's parent row was
re-decided is that hintCovers moved under it twice (#12300, then #13448) while every local
assertion about the declared value stayed green. A regression in the other direction is the same
shape: scripts/*.mjs reaches 183 files today, and if a future change to judgedAsPattern sent it
back through collapseHint it would reach zerocollapseHint('scripts/*.mjs') still returns
scripts/.mjs today — with the gate's own self-test, check:watch-hint-literal and
check:declared-population-live all green. Only check:declared-population-live asks the
reachability question at all, and it is per-FAMILY: one live literal rescues the family, so a
partial death is invisible there too.

Shape of a remedy (not proposed as an implementation)

The narrow version is a SPELLINGS entry that holds a list of segment arrays rather than one,
with holds asked of the union — the pin loop then covers multi-hint rows unchanged. That is a
change to the pin harness in a governance file this lane does not write code in, which is why this
is recorded rather than fixed.

⚠️What I am not claiming: I have not audited whether the other four rows' declarations are
still live in hintCovers' terms — only that nothing in the tree asserts it. The count says
nothing about which.


Generated by Claude Code

Metadata

Metadata

Assignees

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
     blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
    }
    } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
    })();
    (function(){
    try {
    var __m = "github.com";
    var __re = new RegExp('^' + "github\\.com" + '
    
    Skip to content

    [finding] bare-root-worklist pins a recorded spelling in hintCovers' terms only for SINGLE-hint rows — five DECLARED-NARROWER rows are re-measured by nothing #14233

    Description

    @claude

    Measured while working #13813 (PR #14231). Filed unassigned, not graded.

    What is unpinned

    scripts/pm/bare-root-worklist.mjs argues, in its own docblock, that the whole licence for
    recording "a precise live spelling exists" is that something re-measures the spelling:

    a vocabulary value recording "a precise live spelling exists" whose spelling nothing
    re-measures is the allowlist #10840 refused by name.

    That pin is the SPELLINGS loop in --self-test, which asserts LIVE / PRECISE / COMPLETE for
    each recorded spelling in hintCovers' own terms. It is a real pin and it works.

    ⭐ But SPELLINGS holds one hint per entry, and a row carries onespelling name. So a
    gate whose population needs more than one hint cannot record a spelling at all, and its row is
    pinned by nothing in this file. Five DECLARED-NARROWER rows are in exactly that state today:

    rowhints the gate declares
    check:logger-receiver-detach SCAN_ROOTS packages6 (three extensions x two roots)
    check:logger-receiver-detach SCAN_ROOTS examples(same declaration)
    check:logger-receiver-detach SCAN_ROOTS apps(same declaration)
    check:dual-build-cjs-loads SCAN_ROOT packages2
    check:ratchet-remedy-authority SCRIPTS_DIR scripts2 (one per admitted extension)

    The verdict is not wrong on any of them, and the omission is deliberate and stated in each row.
    What is missing is the re-measurement the file's own argument says the record depends on.

    Why the gate-side self-tests do not close it

    Each of those gates does pin its declaration from its own side, and each pin is deliberately
    written without importing scripts/pm/dispatch-gates.mjs — because the import specifier would
    itself be a path literal, handing the gate that module's declared population as if it were its own.
    check-logger-receiver-detach.mjs records that refusal in as many words, and #13813's gate repeats
    it.

    ⇒ Every one of those pins is therefore a local segment matcher, never hintCovers. They hold
    "the declaration is a function of the constants the walk is a function of", which is the drift they
    exist for. They cannot hold "and hintCovers still reaches these files."

    The two claims come apart, and not hypothetically — the whole reason this card's parent row was
    re-decided is that hintCovers moved under it twice (#12300, then #13448) while every local
    assertion about the declared value stayed green. A regression in the other direction is the same
    shape: scripts/*.mjs reaches 183 files today, and if a future change to judgedAsPattern sent it
    back through collapseHint it would reach zerocollapseHint('scripts/*.mjs') still returns
    scripts/.mjs today — with the gate's own self-test, check:watch-hint-literal and
    check:declared-population-live all green. Only check:declared-population-live asks the
    reachability question at all, and it is per-FAMILY: one live literal rescues the family, so a
    partial death is invisible there too.

    Shape of a remedy (not proposed as an implementation)

    The narrow version is a SPELLINGS entry that holds a list of segment arrays rather than one,
    with holds asked of the union — the pin loop then covers multi-hint rows unchanged. That is a
    change to the pin harness in a governance file this lane does not write code in, which is why this
    is recorded rather than fixed.

    ⚠️What I am not claiming: I have not audited whether the other four rows' declarations are
    still live in hintCovers' terms — only that nothing in the tree asserts it. The count says
    nothing about which.


    Generated by Claude Code

    Metadata

    Metadata

    Assignees

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
      Skip to content

      [finding] bare-root-worklist pins a recorded spelling in hintCovers' terms only for SINGLE-hint rows — five DECLARED-NARROWER rows are re-measured by nothing #14233

      Description

      @claude

      Measured while working #13813 (PR #14231). Filed unassigned, not graded.

      What is unpinned

      scripts/pm/bare-root-worklist.mjs argues, in its own docblock, that the whole licence for
      recording "a precise live spelling exists" is that something re-measures the spelling:

      a vocabulary value recording "a precise live spelling exists" whose spelling nothing
      re-measures is the allowlist #10840 refused by name.

      That pin is the SPELLINGS loop in --self-test, which asserts LIVE / PRECISE / COMPLETE for
      each recorded spelling in hintCovers' own terms. It is a real pin and it works.

      ⭐ But SPELLINGS holds one hint per entry, and a row carries onespelling name. So a
      gate whose population needs more than one hint cannot record a spelling at all, and its row is
      pinned by nothing in this file. Five DECLARED-NARROWER rows are in exactly that state today:

      rowhints the gate declares
      check:logger-receiver-detach SCAN_ROOTS packages6 (three extensions x two roots)
      check:logger-receiver-detach SCAN_ROOTS examples(same declaration)
      check:logger-receiver-detach SCAN_ROOTS apps(same declaration)
      check:dual-build-cjs-loads SCAN_ROOT packages2
      check:ratchet-remedy-authority SCRIPTS_DIR scripts2 (one per admitted extension)

      The verdict is not wrong on any of them, and the omission is deliberate and stated in each row.
      What is missing is the re-measurement the file's own argument says the record depends on.

      Why the gate-side self-tests do not close it

      Each of those gates does pin its declaration from its own side, and each pin is deliberately
      written without importing scripts/pm/dispatch-gates.mjs — because the import specifier would
      itself be a path literal, handing the gate that module's declared population as if it were its own.
      check-logger-receiver-detach.mjs records that refusal in as many words, and #13813's gate repeats
      it.

      ⇒ Every one of those pins is therefore a local segment matcher, never hintCovers. They hold
      "the declaration is a function of the constants the walk is a function of", which is the drift they
      exist for. They cannot hold "and hintCovers still reaches these files."

      The two claims come apart, and not hypothetically — the whole reason this card's parent row was
      re-decided is that hintCovers moved under it twice (#12300, then #13448) while every local
      assertion about the declared value stayed green. A regression in the other direction is the same
      shape: scripts/*.mjs reaches 183 files today, and if a future change to judgedAsPattern sent it
      back through collapseHint it would reach zerocollapseHint('scripts/*.mjs') still returns
      scripts/.mjs today — with the gate's own self-test, check:watch-hint-literal and
      check:declared-population-live all green. Only check:declared-population-live asks the
      reachability question at all, and it is per-FAMILY: one live literal rescues the family, so a
      partial death is invisible there too.

      Shape of a remedy (not proposed as an implementation)

      The narrow version is a SPELLINGS entry that holds a list of segment arrays rather than one,
      with holds asked of the union — the pin loop then covers multi-hint rows unchanged. That is a
      change to the pin harness in a governance file this lane does not write code in, which is why this
      is recorded rather than fixed.

      ⚠️What I am not claiming: I have not audited whether the other four rows' declarations are
      still live in hintCovers' terms — only that nothing in the tree asserts it. The count says
      nothing about which.


      Generated by Claude Code

      Metadata

      Metadata

      Assignees

      Type

      Projects

      No projects

        Milestone

        No milestone

        Relationships

        None yet

        Development

        No branches or pull requests

        Issue actions

        , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
        Skip to content

        [finding] bare-root-worklist pins a recorded spelling in hintCovers' terms only for SINGLE-hint rows — five DECLARED-NARROWER rows are re-measured by nothing #14233

        Description

        @claude

        Measured while working #13813 (PR #14231). Filed unassigned, not graded.

        What is unpinned

        scripts/pm/bare-root-worklist.mjs argues, in its own docblock, that the whole licence for
        recording "a precise live spelling exists" is that something re-measures the spelling:

        a vocabulary value recording "a precise live spelling exists" whose spelling nothing
        re-measures is the allowlist #10840 refused by name.

        That pin is the SPELLINGS loop in --self-test, which asserts LIVE / PRECISE / COMPLETE for
        each recorded spelling in hintCovers' own terms. It is a real pin and it works.

        ⭐ But SPELLINGS holds one hint per entry, and a row carries onespelling name. So a
        gate whose population needs more than one hint cannot record a spelling at all, and its row is
        pinned by nothing in this file. Five DECLARED-NARROWER rows are in exactly that state today:

        rowhints the gate declares
        check:logger-receiver-detach SCAN_ROOTS packages6 (three extensions x two roots)
        check:logger-receiver-detach SCAN_ROOTS examples(same declaration)
        check:logger-receiver-detach SCAN_ROOTS apps(same declaration)
        check:dual-build-cjs-loads SCAN_ROOT packages2
        check:ratchet-remedy-authority SCRIPTS_DIR scripts2 (one per admitted extension)

        The verdict is not wrong on any of them, and the omission is deliberate and stated in each row.
        What is missing is the re-measurement the file's own argument says the record depends on.

        Why the gate-side self-tests do not close it

        Each of those gates does pin its declaration from its own side, and each pin is deliberately
        written without importing scripts/pm/dispatch-gates.mjs — because the import specifier would
        itself be a path literal, handing the gate that module's declared population as if it were its own.
        check-logger-receiver-detach.mjs records that refusal in as many words, and #13813's gate repeats
        it.

        ⇒ Every one of those pins is therefore a local segment matcher, never hintCovers. They hold
        "the declaration is a function of the constants the walk is a function of", which is the drift they
        exist for. They cannot hold "and hintCovers still reaches these files."

        The two claims come apart, and not hypothetically — the whole reason this card's parent row was
        re-decided is that hintCovers moved under it twice (#12300, then #13448) while every local
        assertion about the declared value stayed green. A regression in the other direction is the same
        shape: scripts/*.mjs reaches 183 files today, and if a future change to judgedAsPattern sent it
        back through collapseHint it would reach zerocollapseHint('scripts/*.mjs') still returns
        scripts/.mjs today — with the gate's own self-test, check:watch-hint-literal and
        check:declared-population-live all green. Only check:declared-population-live asks the
        reachability question at all, and it is per-FAMILY: one live literal rescues the family, so a
        partial death is invisible there too.

        Shape of a remedy (not proposed as an implementation)

        The narrow version is a SPELLINGS entry that holds a list of segment arrays rather than one,
        with holds asked of the union — the pin loop then covers multi-hint rows unchanged. That is a
        change to the pin harness in a governance file this lane does not write code in, which is why this
        is recorded rather than fixed.

        ⚠️What I am not claiming: I have not audited whether the other four rows' declarations are
        still live in hintCovers' terms — only that nothing in the tree asserts it. The count says
        nothing about which.


        Generated by Claude Code

        Metadata

        Metadata

        Assignees

        Type

        Projects

        No projects

          Milestone

          No milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
          Skip to content

          [finding] bare-root-worklist pins a recorded spelling in hintCovers' terms only for SINGLE-hint rows — five DECLARED-NARROWER rows are re-measured by nothing #14233

          Description

          @claude

          Measured while working #13813 (PR #14231). Filed unassigned, not graded.

          What is unpinned

          scripts/pm/bare-root-worklist.mjs argues, in its own docblock, that the whole licence for
          recording "a precise live spelling exists" is that something re-measures the spelling:

          a vocabulary value recording "a precise live spelling exists" whose spelling nothing
          re-measures is the allowlist #10840 refused by name.

          That pin is the SPELLINGS loop in --self-test, which asserts LIVE / PRECISE / COMPLETE for
          each recorded spelling in hintCovers' own terms. It is a real pin and it works.

          ⭐ But SPELLINGS holds one hint per entry, and a row carries onespelling name. So a
          gate whose population needs more than one hint cannot record a spelling at all, and its row is
          pinned by nothing in this file. Five DECLARED-NARROWER rows are in exactly that state today:

          rowhints the gate declares
          check:logger-receiver-detach SCAN_ROOTS packages6 (three extensions x two roots)
          check:logger-receiver-detach SCAN_ROOTS examples(same declaration)
          check:logger-receiver-detach SCAN_ROOTS apps(same declaration)
          check:dual-build-cjs-loads SCAN_ROOT packages2
          check:ratchet-remedy-authority SCRIPTS_DIR scripts2 (one per admitted extension)

          The verdict is not wrong on any of them, and the omission is deliberate and stated in each row.
          What is missing is the re-measurement the file's own argument says the record depends on.

          Why the gate-side self-tests do not close it

          Each of those gates does pin its declaration from its own side, and each pin is deliberately
          written without importing scripts/pm/dispatch-gates.mjs — because the import specifier would
          itself be a path literal, handing the gate that module's declared population as if it were its own.
          check-logger-receiver-detach.mjs records that refusal in as many words, and #13813's gate repeats
          it.

          ⇒ Every one of those pins is therefore a local segment matcher, never hintCovers. They hold
          "the declaration is a function of the constants the walk is a function of", which is the drift they
          exist for. They cannot hold "and hintCovers still reaches these files."

          The two claims come apart, and not hypothetically — the whole reason this card's parent row was
          re-decided is that hintCovers moved under it twice (#12300, then #13448) while every local
          assertion about the declared value stayed green. A regression in the other direction is the same
          shape: scripts/*.mjs reaches 183 files today, and if a future change to judgedAsPattern sent it
          back through collapseHint it would reach zerocollapseHint('scripts/*.mjs') still returns
          scripts/.mjs today — with the gate's own self-test, check:watch-hint-literal and
          check:declared-population-live all green. Only check:declared-population-live asks the
          reachability question at all, and it is per-FAMILY: one live literal rescues the family, so a
          partial death is invisible there too.

          Shape of a remedy (not proposed as an implementation)

          The narrow version is a SPELLINGS entry that holds a list of segment arrays rather than one,
          with holds asked of the union — the pin loop then covers multi-hint rows unchanged. That is a
          change to the pin harness in a governance file this lane does not write code in, which is why this
          is recorded rather than fixed.

          ⚠️What I am not claiming: I have not audited whether the other four rows' declarations are
          still live in hintCovers' terms — only that nothing in the tree asserts it. The count says
          nothing about which.


          Generated by Claude Code

          Metadata

          Metadata

          Assignees

          Type

          Projects

          No projects

            Milestone

            No milestone

            Relationships

            None yet

            Development

            No branches or pull requests

            Issue actions

            , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
            Skip to content

            [finding] bare-root-worklist pins a recorded spelling in hintCovers' terms only for SINGLE-hint rows — five DECLARED-NARROWER rows are re-measured by nothing #14233

            Description

            @claude

            Measured while working #13813 (PR #14231). Filed unassigned, not graded.

            What is unpinned

            scripts/pm/bare-root-worklist.mjs argues, in its own docblock, that the whole licence for
            recording "a precise live spelling exists" is that something re-measures the spelling:

            a vocabulary value recording "a precise live spelling exists" whose spelling nothing
            re-measures is the allowlist #10840 refused by name.

            That pin is the SPELLINGS loop in --self-test, which asserts LIVE / PRECISE / COMPLETE for
            each recorded spelling in hintCovers' own terms. It is a real pin and it works.

            ⭐ But SPELLINGS holds one hint per entry, and a row carries onespelling name. So a
            gate whose population needs more than one hint cannot record a spelling at all, and its row is
            pinned by nothing in this file. Five DECLARED-NARROWER rows are in exactly that state today:

            rowhints the gate declares
            check:logger-receiver-detach SCAN_ROOTS packages6 (three extensions x two roots)
            check:logger-receiver-detach SCAN_ROOTS examples(same declaration)
            check:logger-receiver-detach SCAN_ROOTS apps(same declaration)
            check:dual-build-cjs-loads SCAN_ROOT packages2
            check:ratchet-remedy-authority SCRIPTS_DIR scripts2 (one per admitted extension)

            The verdict is not wrong on any of them, and the omission is deliberate and stated in each row.
            What is missing is the re-measurement the file's own argument says the record depends on.

            Why the gate-side self-tests do not close it

            Each of those gates does pin its declaration from its own side, and each pin is deliberately
            written without importing scripts/pm/dispatch-gates.mjs — because the import specifier would
            itself be a path literal, handing the gate that module's declared population as if it were its own.
            check-logger-receiver-detach.mjs records that refusal in as many words, and #13813's gate repeats
            it.

            ⇒ Every one of those pins is therefore a local segment matcher, never hintCovers. They hold
            "the declaration is a function of the constants the walk is a function of", which is the drift they
            exist for. They cannot hold "and hintCovers still reaches these files."

            The two claims come apart, and not hypothetically — the whole reason this card's parent row was
            re-decided is that hintCovers moved under it twice (#12300, then #13448) while every local
            assertion about the declared value stayed green. A regression in the other direction is the same
            shape: scripts/*.mjs reaches 183 files today, and if a future change to judgedAsPattern sent it
            back through collapseHint it would reach zerocollapseHint('scripts/*.mjs') still returns
            scripts/.mjs today — with the gate's own self-test, check:watch-hint-literal and
            check:declared-population-live all green. Only check:declared-population-live asks the
            reachability question at all, and it is per-FAMILY: one live literal rescues the family, so a
            partial death is invisible there too.

            Shape of a remedy (not proposed as an implementation)

            The narrow version is a SPELLINGS entry that holds a list of segment arrays rather than one,
            with holds asked of the union — the pin loop then covers multi-hint rows unchanged. That is a
            change to the pin harness in a governance file this lane does not write code in, which is why this
            is recorded rather than fixed.

            ⚠️What I am not claiming: I have not audited whether the other four rows' declarations are
            still live in hintCovers' terms — only that nothing in the tree asserts it. The count says
            nothing about which.


            Generated by Claude Code

            Metadata

            Metadata

            Assignees

            Type

            Projects

            No projects

              Milestone

              No milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
              Skip to content

              [finding] bare-root-worklist pins a recorded spelling in hintCovers' terms only for SINGLE-hint rows — five DECLARED-NARROWER rows are re-measured by nothing #14233

              Description

              @claude

              Measured while working #13813 (PR #14231). Filed unassigned, not graded.

              What is unpinned

              scripts/pm/bare-root-worklist.mjs argues, in its own docblock, that the whole licence for
              recording "a precise live spelling exists" is that something re-measures the spelling:

              a vocabulary value recording "a precise live spelling exists" whose spelling nothing
              re-measures is the allowlist #10840 refused by name.

              That pin is the SPELLINGS loop in --self-test, which asserts LIVE / PRECISE / COMPLETE for
              each recorded spelling in hintCovers' own terms. It is a real pin and it works.

              ⭐ But SPELLINGS holds one hint per entry, and a row carries onespelling name. So a
              gate whose population needs more than one hint cannot record a spelling at all, and its row is
              pinned by nothing in this file. Five DECLARED-NARROWER rows are in exactly that state today:

              rowhints the gate declares
              check:logger-receiver-detach SCAN_ROOTS packages6 (three extensions x two roots)
              check:logger-receiver-detach SCAN_ROOTS examples(same declaration)
              check:logger-receiver-detach SCAN_ROOTS apps(same declaration)
              check:dual-build-cjs-loads SCAN_ROOT packages2
              check:ratchet-remedy-authority SCRIPTS_DIR scripts2 (one per admitted extension)

              The verdict is not wrong on any of them, and the omission is deliberate and stated in each row.
              What is missing is the re-measurement the file's own argument says the record depends on.

              Why the gate-side self-tests do not close it

              Each of those gates does pin its declaration from its own side, and each pin is deliberately
              written without importing scripts/pm/dispatch-gates.mjs — because the import specifier would
              itself be a path literal, handing the gate that module's declared population as if it were its own.
              check-logger-receiver-detach.mjs records that refusal in as many words, and #13813's gate repeats
              it.

              ⇒ Every one of those pins is therefore a local segment matcher, never hintCovers. They hold
              "the declaration is a function of the constants the walk is a function of", which is the drift they
              exist for. They cannot hold "and hintCovers still reaches these files."

              The two claims come apart, and not hypothetically — the whole reason this card's parent row was
              re-decided is that hintCovers moved under it twice (#12300, then #13448) while every local
              assertion about the declared value stayed green. A regression in the other direction is the same
              shape: scripts/*.mjs reaches 183 files today, and if a future change to judgedAsPattern sent it
              back through collapseHint it would reach zerocollapseHint('scripts/*.mjs') still returns
              scripts/.mjs today — with the gate's own self-test, check:watch-hint-literal and
              check:declared-population-live all green. Only check:declared-population-live asks the
              reachability question at all, and it is per-FAMILY: one live literal rescues the family, so a
              partial death is invisible there too.

              Shape of a remedy (not proposed as an implementation)

              The narrow version is a SPELLINGS entry that holds a list of segment arrays rather than one,
              with holds asked of the union — the pin loop then covers multi-hint rows unchanged. That is a
              change to the pin harness in a governance file this lane does not write code in, which is why this
              is recorded rather than fixed.

              ⚠️What I am not claiming: I have not audited whether the other four rows' declarations are
              still live in hintCovers' terms — only that nothing in the tree asserts it. The count says
              nothing about which.


              Generated by Claude Code

              Metadata

              Metadata

              Assignees

              Type

              Projects

              No projects

                Milestone

                No milestone

                Relationships

                None yet

                Development

                No branches or pull requests

                Issue actions

                , 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
                Skip to content

                [finding] bare-root-worklist pins a recorded spelling in hintCovers' terms only for SINGLE-hint rows — five DECLARED-NARROWER rows are re-measured by nothing #14233

                Description

                @claude

                Measured while working #13813 (PR #14231). Filed unassigned, not graded.

                What is unpinned

                scripts/pm/bare-root-worklist.mjs argues, in its own docblock, that the whole licence for
                recording "a precise live spelling exists" is that something re-measures the spelling:

                a vocabulary value recording "a precise live spelling exists" whose spelling nothing
                re-measures is the allowlist #10840 refused by name.

                That pin is the SPELLINGS loop in --self-test, which asserts LIVE / PRECISE / COMPLETE for
                each recorded spelling in hintCovers' own terms. It is a real pin and it works.

                ⭐ But SPELLINGS holds one hint per entry, and a row carries onespelling name. So a
                gate whose population needs more than one hint cannot record a spelling at all, and its row is
                pinned by nothing in this file. Five DECLARED-NARROWER rows are in exactly that state today:

                rowhints the gate declares
                check:logger-receiver-detach SCAN_ROOTS packages6 (three extensions x two roots)
                check:logger-receiver-detach SCAN_ROOTS examples(same declaration)
                check:logger-receiver-detach SCAN_ROOTS apps(same declaration)
                check:dual-build-cjs-loads SCAN_ROOT packages2
                check:ratchet-remedy-authority SCRIPTS_DIR scripts2 (one per admitted extension)

                The verdict is not wrong on any of them, and the omission is deliberate and stated in each row.
                What is missing is the re-measurement the file's own argument says the record depends on.

                Why the gate-side self-tests do not close it

                Each of those gates does pin its declaration from its own side, and each pin is deliberately
                written without importing scripts/pm/dispatch-gates.mjs — because the import specifier would
                itself be a path literal, handing the gate that module's declared population as if it were its own.
                check-logger-receiver-detach.mjs records that refusal in as many words, and #13813's gate repeats
                it.

                ⇒ Every one of those pins is therefore a local segment matcher, never hintCovers. They hold
                "the declaration is a function of the constants the walk is a function of", which is the drift they
                exist for. They cannot hold "and hintCovers still reaches these files."

                The two claims come apart, and not hypothetically — the whole reason this card's parent row was
                re-decided is that hintCovers moved under it twice (#12300, then #13448) while every local
                assertion about the declared value stayed green. A regression in the other direction is the same
                shape: scripts/*.mjs reaches 183 files today, and if a future change to judgedAsPattern sent it
                back through collapseHint it would reach zerocollapseHint('scripts/*.mjs') still returns
                scripts/.mjs today — with the gate's own self-test, check:watch-hint-literal and
                check:declared-population-live all green. Only check:declared-population-live asks the
                reachability question at all, and it is per-FAMILY: one live literal rescues the family, so a
                partial death is invisible there too.

                Shape of a remedy (not proposed as an implementation)

                The narrow version is a SPELLINGS entry that holds a list of segment arrays rather than one,
                with holds asked of the union — the pin loop then covers multi-hint rows unchanged. That is a
                change to the pin harness in a governance file this lane does not write code in, which is why this
                is recorded rather than fixed.

                ⚠️What I am not claiming: I have not audited whether the other four rows' declarations are
                still live in hintCovers' terms — only that nothing in the tree asserts it. The count says
                nothing about which.


                Generated by Claude Code

                Metadata

                Metadata

                Assignees

                Type

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions