Skip to content

[finding] Survey: which other scripts/* --self-test modes decide success with no assertion floor, or exit 0 via return selfTest() before their verdict #13489

Description

@claude

Filed by the dev on #13173 (PR #13487), session session_01Pk26oZ12t5N1hwGW1m1MgC.
Filed unassigned and ungraded — this is a survey request, not a measured defect.

Why

#13173 recorded, under its own "Not established" heading, that nobody had checked
whether other --self-test implementations in scripts/ share the shape it
measured. That survey is still not done. #13173 itself is now closed out by
PR #13487, so the question would otherwise leave with it.

The shape to survey

Two distinct holes were measured in scripts/check-doc-authoring.mjs while
fixing #13173. A survey wants both, because the second is invisible to a check
for the first:

  1. No assertion floor. Success decided as failures.length === 0, so a
    battery that never ran is indistinguishable from a battery that passed. An
    early return at the top of one battery function left it entirely unrun and
    the script still exited 0, printing its full success line.
  2. main() doing return selfTest(). A return that leaves the self-test
    before its verdict prints nothing at all and still exits 0. A gate can have
    a perfectly good assertion floor and still be defeated this way, because the
    floor never runs either.

The discriminator, cheaply

For each scripts/check-*.{mjs,mts} with a --self-test mode:

grep -n "failures.length === 0\|return selfTest()" scripts/check-*.mjs

⚠️ A verdict line that already prints a case count (872 cases pass and the
like) is evidence but not proof#13173 warns that a merely non-zero count
still passes a battery dropping from 40 cases to 3, and a pinned TOTAL rots as
soon as a sibling battery grows.

The repair shape that worked, for whichever instances the survey finds

PR #13487 pinned the registered names, not a number: a frozen registry of
battery names each with its own case floor, every battery opening with
battery('...'), every assertion attributed to the battery most recently
opened, and a refusal when the opened set differs from the declared set. A set
difference names which battery stopped running; a count says only that
something did. The registry's own size is pinned too, since deleting an entry
silences its floor as effectively as zeroing it. Five ablations are recorded on
that PR.

Related


Generated by Claude Code

Metadata

Metadata

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)) { // Add copy buttons to all
     blocks
    (function() {
    function addCopyButtons() {
    document.querySelectorAll('pre code').forEach(function(codeBlock) {
    if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
    codeBlock.parentElement.setAttribute('data-copy-added', 'true');
    var btn = document.createElement('button');
    btn.textContent = 'Copy';
    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;';
    btn.onmouseover = function() { this.style.opacity = '1'; };
    btn.onmouseout = function() { this.style.opacity = '0.7'; };
    btn.onclick = function() {
    navigator.clipboard.writeText(codeBlock.textContent).then(function() {
    btn.textContent = 'Copied!';
    setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
    });
    };
    codeBlock.parentElement.style.position = 'relative';
    codeBlock.parentElement.appendChild(btn);
    });
    }
    addCopyButtons();
    // Re-run on dynamic content
    var observer = new MutationObserver(addCopyButtons);
    observer.observe(document.body, { childList: true, subtree: true });
    })();
    }
    } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
    })();
    (function(){
    try {
    var __m = "github.com";
    var __re = new RegExp('^' + "github\\.com" + '
    [finding] Survey: which other `scripts/*` --self-test modes decide success with no assertion floor, or exit 0 via `return selfTest()` before their verdict · Issue #13489 · objectstack-ai/objectstack · GitHub
    Skip to content

    [finding] Survey: which other scripts/* --self-test modes decide success with no assertion floor, or exit 0 via return selfTest() before their verdict #13489

    Description

    @claude

    Filed by the dev on #13173 (PR #13487), session session_01Pk26oZ12t5N1hwGW1m1MgC.
    Filed unassigned and ungraded — this is a survey request, not a measured defect.

    Why

    #13173 recorded, under its own "Not established" heading, that nobody had checked
    whether other --self-test implementations in scripts/ share the shape it
    measured. That survey is still not done. #13173 itself is now closed out by
    PR #13487, so the question would otherwise leave with it.

    The shape to survey

    Two distinct holes were measured in scripts/check-doc-authoring.mjs while
    fixing #13173. A survey wants both, because the second is invisible to a check
    for the first:

    1. No assertion floor. Success decided as failures.length === 0, so a
      battery that never ran is indistinguishable from a battery that passed. An
      early return at the top of one battery function left it entirely unrun and
      the script still exited 0, printing its full success line.
    2. main() doing return selfTest(). A return that leaves the self-test
      before its verdict prints nothing at all and still exits 0. A gate can have
      a perfectly good assertion floor and still be defeated this way, because the
      floor never runs either.

    The discriminator, cheaply

    For each scripts/check-*.{mjs,mts} with a --self-test mode:

    grep -n "failures.length === 0\|return selfTest()" scripts/check-*.mjs
    

    ⚠️ A verdict line that already prints a case count (872 cases pass and the
    like) is evidence but not proof#13173 warns that a merely non-zero count
    still passes a battery dropping from 40 cases to 3, and a pinned TOTAL rots as
    soon as a sibling battery grows.

    The repair shape that worked, for whichever instances the survey finds

    PR #13487 pinned the registered names, not a number: a frozen registry of
    battery names each with its own case floor, every battery opening with
    battery('...'), every assertion attributed to the battery most recently
    opened, and a refusal when the opened set differs from the declared set. A set
    difference names which battery stopped running; a count says only that
    something did. The registry's own size is pinned too, since deleting an entry
    silences its floor as effectively as zeroing it. Five ablations are recorded on
    that PR.

    Related


    Generated by Claude Code

    Metadata

    Metadata

    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)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [finding] Survey: which other `scripts/*` --self-test modes decide success with no assertion floor, or exit 0 via `return selfTest()` before their verdict · Issue #13489 · objectstack-ai/objectstack · GitHub
      Skip to content

      [finding] Survey: which other scripts/* --self-test modes decide success with no assertion floor, or exit 0 via return selfTest() before their verdict #13489

      Description

      @claude

      Filed by the dev on #13173 (PR #13487), session session_01Pk26oZ12t5N1hwGW1m1MgC.
      Filed unassigned and ungraded — this is a survey request, not a measured defect.

      Why

      #13173 recorded, under its own "Not established" heading, that nobody had checked
      whether other --self-test implementations in scripts/ share the shape it
      measured. That survey is still not done. #13173 itself is now closed out by
      PR #13487, so the question would otherwise leave with it.

      The shape to survey

      Two distinct holes were measured in scripts/check-doc-authoring.mjs while
      fixing #13173. A survey wants both, because the second is invisible to a check
      for the first:

      1. No assertion floor. Success decided as failures.length === 0, so a
        battery that never ran is indistinguishable from a battery that passed. An
        early return at the top of one battery function left it entirely unrun and
        the script still exited 0, printing its full success line.
      2. main() doing return selfTest(). A return that leaves the self-test
        before its verdict prints nothing at all and still exits 0. A gate can have
        a perfectly good assertion floor and still be defeated this way, because the
        floor never runs either.

      The discriminator, cheaply

      For each scripts/check-*.{mjs,mts} with a --self-test mode:

      grep -n "failures.length === 0\|return selfTest()" scripts/check-*.mjs
      

      ⚠️ A verdict line that already prints a case count (872 cases pass and the
      like) is evidence but not proof#13173 warns that a merely non-zero count
      still passes a battery dropping from 40 cases to 3, and a pinned TOTAL rots as
      soon as a sibling battery grows.

      The repair shape that worked, for whichever instances the survey finds

      PR #13487 pinned the registered names, not a number: a frozen registry of
      battery names each with its own case floor, every battery opening with
      battery('...'), every assertion attributed to the battery most recently
      opened, and a refusal when the opened set differs from the declared set. A set
      difference names which battery stopped running; a count says only that
      something did. The registry's own size is pinned too, since deleting an entry
      silences its floor as effectively as zeroing it. Five ablations are recorded on
      that PR.

      Related


      Generated by Claude Code

      Metadata

      Metadata

      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)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [finding] Survey: which other `scripts/*` --self-test modes decide success with no assertion floor, or exit 0 via `return selfTest()` before their verdict · Issue #13489 · objectstack-ai/objectstack · GitHub
        Skip to content

        [finding] Survey: which other scripts/* --self-test modes decide success with no assertion floor, or exit 0 via return selfTest() before their verdict #13489

        Description

        @claude

        Filed by the dev on #13173 (PR #13487), session session_01Pk26oZ12t5N1hwGW1m1MgC.
        Filed unassigned and ungraded — this is a survey request, not a measured defect.

        Why

        #13173 recorded, under its own "Not established" heading, that nobody had checked
        whether other --self-test implementations in scripts/ share the shape it
        measured. That survey is still not done. #13173 itself is now closed out by
        PR #13487, so the question would otherwise leave with it.

        The shape to survey

        Two distinct holes were measured in scripts/check-doc-authoring.mjs while
        fixing #13173. A survey wants both, because the second is invisible to a check
        for the first:

        1. No assertion floor. Success decided as failures.length === 0, so a
          battery that never ran is indistinguishable from a battery that passed. An
          early return at the top of one battery function left it entirely unrun and
          the script still exited 0, printing its full success line.
        2. main() doing return selfTest(). A return that leaves the self-test
          before its verdict prints nothing at all and still exits 0. A gate can have
          a perfectly good assertion floor and still be defeated this way, because the
          floor never runs either.

        The discriminator, cheaply

        For each scripts/check-*.{mjs,mts} with a --self-test mode:

        grep -n "failures.length === 0\|return selfTest()" scripts/check-*.mjs
        

        ⚠️ A verdict line that already prints a case count (872 cases pass and the
        like) is evidence but not proof#13173 warns that a merely non-zero count
        still passes a battery dropping from 40 cases to 3, and a pinned TOTAL rots as
        soon as a sibling battery grows.

        The repair shape that worked, for whichever instances the survey finds

        PR #13487 pinned the registered names, not a number: a frozen registry of
        battery names each with its own case floor, every battery opening with
        battery('...'), every assertion attributed to the battery most recently
        opened, and a refusal when the opened set differs from the declared set. A set
        difference names which battery stopped running; a count says only that
        something did. The registry's own size is pinned too, since deleting an entry
        silences its floor as effectively as zeroing it. Five ablations are recorded on
        that PR.

        Related


        Generated by Claude Code

        Metadata

        Metadata

        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)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' [finding] Survey: which other `scripts/*` --self-test modes decide success with no assertion floor, or exit 0 via `return selfTest()` before their verdict · Issue #13489 · objectstack-ai/objectstack · GitHub
          Skip to content

          [finding] Survey: which other scripts/* --self-test modes decide success with no assertion floor, or exit 0 via return selfTest() before their verdict #13489

          Description

          @claude

          Filed by the dev on #13173 (PR #13487), session session_01Pk26oZ12t5N1hwGW1m1MgC.
          Filed unassigned and ungraded — this is a survey request, not a measured defect.

          Why

          #13173 recorded, under its own "Not established" heading, that nobody had checked
          whether other --self-test implementations in scripts/ share the shape it
          measured. That survey is still not done. #13173 itself is now closed out by
          PR #13487, so the question would otherwise leave with it.

          The shape to survey

          Two distinct holes were measured in scripts/check-doc-authoring.mjs while
          fixing #13173. A survey wants both, because the second is invisible to a check
          for the first:

          1. No assertion floor. Success decided as failures.length === 0, so a
            battery that never ran is indistinguishable from a battery that passed. An
            early return at the top of one battery function left it entirely unrun and
            the script still exited 0, printing its full success line.
          2. main() doing return selfTest(). A return that leaves the self-test
            before its verdict prints nothing at all and still exits 0. A gate can have
            a perfectly good assertion floor and still be defeated this way, because the
            floor never runs either.

          The discriminator, cheaply

          For each scripts/check-*.{mjs,mts} with a --self-test mode:

          grep -n "failures.length === 0\|return selfTest()" scripts/check-*.mjs
          

          ⚠️ A verdict line that already prints a case count (872 cases pass and the
          like) is evidence but not proof#13173 warns that a merely non-zero count
          still passes a battery dropping from 40 cases to 3, and a pinned TOTAL rots as
          soon as a sibling battery grows.

          The repair shape that worked, for whichever instances the survey finds

          PR #13487 pinned the registered names, not a number: a frozen registry of
          battery names each with its own case floor, every battery opening with
          battery('...'), every assertion attributed to the battery most recently
          opened, and a refusal when the opened set differs from the declared set. A set
          difference names which battery stopped running; a count says only that
          something did. The registry's own size is pinned too, since deleting an entry
          silences its floor as effectively as zeroing it. Five ablations are recorded on
          that PR.

          Related


          Generated by Claude Code

          Metadata

          Metadata

          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)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [finding] Survey: which other `scripts/*` --self-test modes decide success with no assertion floor, or exit 0 via `return selfTest()` before their verdict · Issue #13489 · objectstack-ai/objectstack · GitHub
            Skip to content

            [finding] Survey: which other scripts/* --self-test modes decide success with no assertion floor, or exit 0 via return selfTest() before their verdict #13489

            Description

            @claude

            Filed by the dev on #13173 (PR #13487), session session_01Pk26oZ12t5N1hwGW1m1MgC.
            Filed unassigned and ungraded — this is a survey request, not a measured defect.

            Why

            #13173 recorded, under its own "Not established" heading, that nobody had checked
            whether other --self-test implementations in scripts/ share the shape it
            measured. That survey is still not done. #13173 itself is now closed out by
            PR #13487, so the question would otherwise leave with it.

            The shape to survey

            Two distinct holes were measured in scripts/check-doc-authoring.mjs while
            fixing #13173. A survey wants both, because the second is invisible to a check
            for the first:

            1. No assertion floor. Success decided as failures.length === 0, so a
              battery that never ran is indistinguishable from a battery that passed. An
              early return at the top of one battery function left it entirely unrun and
              the script still exited 0, printing its full success line.
            2. main() doing return selfTest(). A return that leaves the self-test
              before its verdict prints nothing at all and still exits 0. A gate can have
              a perfectly good assertion floor and still be defeated this way, because the
              floor never runs either.

            The discriminator, cheaply

            For each scripts/check-*.{mjs,mts} with a --self-test mode:

            grep -n "failures.length === 0\|return selfTest()" scripts/check-*.mjs
            

            ⚠️ A verdict line that already prints a case count (872 cases pass and the
            like) is evidence but not proof#13173 warns that a merely non-zero count
            still passes a battery dropping from 40 cases to 3, and a pinned TOTAL rots as
            soon as a sibling battery grows.

            The repair shape that worked, for whichever instances the survey finds

            PR #13487 pinned the registered names, not a number: a frozen registry of
            battery names each with its own case floor, every battery opening with
            battery('...'), every assertion attributed to the battery most recently
            opened, and a refusal when the opened set differs from the declared set. A set
            difference names which battery stopped running; a count says only that
            something did. The registry's own size is pinned too, since deleting an entry
            silences its floor as effectively as zeroing it. Five ablations are recorded on
            that PR.

            Related


            Generated by Claude Code

            Metadata

            Metadata

            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)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' [finding] Survey: which other `scripts/*` --self-test modes decide success with no assertion floor, or exit 0 via `return selfTest()` before their verdict · Issue #13489 · objectstack-ai/objectstack · GitHub
              Skip to content

              [finding] Survey: which other scripts/* --self-test modes decide success with no assertion floor, or exit 0 via return selfTest() before their verdict #13489

              Description

              @claude

              Filed by the dev on #13173 (PR #13487), session session_01Pk26oZ12t5N1hwGW1m1MgC.
              Filed unassigned and ungraded — this is a survey request, not a measured defect.

              Why

              #13173 recorded, under its own "Not established" heading, that nobody had checked
              whether other --self-test implementations in scripts/ share the shape it
              measured. That survey is still not done. #13173 itself is now closed out by
              PR #13487, so the question would otherwise leave with it.

              The shape to survey

              Two distinct holes were measured in scripts/check-doc-authoring.mjs while
              fixing #13173. A survey wants both, because the second is invisible to a check
              for the first:

              1. No assertion floor. Success decided as failures.length === 0, so a
                battery that never ran is indistinguishable from a battery that passed. An
                early return at the top of one battery function left it entirely unrun and
                the script still exited 0, printing its full success line.
              2. main() doing return selfTest(). A return that leaves the self-test
                before its verdict prints nothing at all and still exits 0. A gate can have
                a perfectly good assertion floor and still be defeated this way, because the
                floor never runs either.

              The discriminator, cheaply

              For each scripts/check-*.{mjs,mts} with a --self-test mode:

              grep -n "failures.length === 0\|return selfTest()" scripts/check-*.mjs
              

              ⚠️ A verdict line that already prints a case count (872 cases pass and the
              like) is evidence but not proof#13173 warns that a merely non-zero count
              still passes a battery dropping from 40 cases to 3, and a pinned TOTAL rots as
              soon as a sibling battery grows.

              The repair shape that worked, for whichever instances the survey finds

              PR #13487 pinned the registered names, not a number: a frozen registry of
              battery names each with its own case floor, every battery opening with
              battery('...'), every assertion attributed to the battery most recently
              opened, and a refusal when the opened set differs from the declared set. A set
              difference names which battery stopped running; a count says only that
              something did. The registry's own size is pinned too, since deleting an entry
              silences its floor as effectively as zeroing it. Five ablations are recorded on
              that PR.

              Related


              Generated by Claude Code

              Metadata

              Metadata

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

                [finding] Survey: which other scripts/* --self-test modes decide success with no assertion floor, or exit 0 via return selfTest() before their verdict #13489

                Description

                @claude

                Filed by the dev on #13173 (PR #13487), session session_01Pk26oZ12t5N1hwGW1m1MgC.
                Filed unassigned and ungraded — this is a survey request, not a measured defect.

                Why

                #13173 recorded, under its own "Not established" heading, that nobody had checked
                whether other --self-test implementations in scripts/ share the shape it
                measured. That survey is still not done. #13173 itself is now closed out by
                PR #13487, so the question would otherwise leave with it.

                The shape to survey

                Two distinct holes were measured in scripts/check-doc-authoring.mjs while
                fixing #13173. A survey wants both, because the second is invisible to a check
                for the first:

                1. No assertion floor. Success decided as failures.length === 0, so a
                  battery that never ran is indistinguishable from a battery that passed. An
                  early return at the top of one battery function left it entirely unrun and
                  the script still exited 0, printing its full success line.
                2. main() doing return selfTest(). A return that leaves the self-test
                  before its verdict prints nothing at all and still exits 0. A gate can have
                  a perfectly good assertion floor and still be defeated this way, because the
                  floor never runs either.

                The discriminator, cheaply

                For each scripts/check-*.{mjs,mts} with a --self-test mode:

                grep -n "failures.length === 0\|return selfTest()" scripts/check-*.mjs
                

                ⚠️ A verdict line that already prints a case count (872 cases pass and the
                like) is evidence but not proof#13173 warns that a merely non-zero count
                still passes a battery dropping from 40 cases to 3, and a pinned TOTAL rots as
                soon as a sibling battery grows.

                The repair shape that worked, for whichever instances the survey finds

                PR #13487 pinned the registered names, not a number: a frozen registry of
                battery names each with its own case floor, every battery opening with
                battery('...'), every assertion attributed to the battery most recently
                opened, and a refusal when the opened set differs from the declared set. A set
                difference names which battery stopped running; a count says only that
                something did. The registry's own size is pinned too, since deleting an entry
                silences its floor as effectively as zeroing it. Five ablations are recorded on
                that PR.

                Related


                Generated by Claude Code

                Metadata

                Metadata

                Type

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions