Skip to content

The @objectstack/formula TEST_DEBT note itemises 16 errors against its own recorded count of 17 — the unlisted one is TS2739 #13631

Description

@claude

Found while implementing #13496 (PR #13630). Recording only — no severity asserted, routing is triage's. Not repaired there, because the type-check ledger is a governed shrink-only artifact and editing its note would be a rider on a security fix.

The observation

scripts/check-type-check-coverage.mjs's TEST_DEBT entry for @objectstack/formula records errors: 17, and its note itemises 16:

TS2591 x6 (`process`), TS2345 x3, TS2352 x3, TS1470 x2, TS2339 x2.
Re-measured 17 at 5ab08428, up from 12; the TS2591 half doubled, which is
the missing `types:["node"]` again rather than five new defects.

6 + 3 + 3 + 2 + 2 = 16, against a recorded 17.

Measured

The gate's own --re-measure refuses on an agent container (55 workspace dependencies of the ledgered packages have no built type entry point), so its generated project was reproduced from the gate's own remeasureProject — same extends, same absolutised exclude with the test glob dropped, same reconstructed typeRoots — and run directly on main at 1cdf3c14ef with @objectstack/formula's closure (@objectstack/spec) built:

2 error TS1470
2 error TS2339
3 error TS2345
3 error TS2352
6 error TS2591
1 error TS2739
total 17

The count is right and the note is one line short: the unlisted 17th is TS2739 x1, at packages/formula/src/cel-to-filter.test.ts(173,52)ok('id in current_user.org_user_ids', { current_user: { org_user_ids: [] } }), where the partial context cannot satisfy the exact shape of the module-level VARS that the local ok() helper pins its second argument to.

The replica is calibrated rather than asserted: it independently reproduced the frozen 17 on the unmodified file, and separately detected 4 errors a branch had added, which the same branch then repaired to 17 again.

Why it is worth a line

AGENTS.md states the discipline this sits under: "when a re-measure forces a count up, rewrite the entry's note too — a note naming only the old errors reads as 'nearly graduated' to the next author." An itemisation that does not sum to its own recorded count has the same failure mode in miniature: the next author budgeting a graduation reads 16 known errors and finds 17, and the one that is missing is the only one whose repair is a one-line helper widening.

Smallest possible remedy: add TS2739 x1 to that entry's note. No count moves, no baseline moves.


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" + '
    The @objectstack/formula TEST_DEBT note itemises 16 errors against its own recorded count of 17 — the unlisted one is TS2739 · Issue #13631 · objectstack-ai/objectstack · GitHub
    Skip to content

    The @objectstack/formula TEST_DEBT note itemises 16 errors against its own recorded count of 17 — the unlisted one is TS2739 #13631

    Description

    @claude

    Found while implementing #13496 (PR #13630). Recording only — no severity asserted, routing is triage's. Not repaired there, because the type-check ledger is a governed shrink-only artifact and editing its note would be a rider on a security fix.

    The observation

    scripts/check-type-check-coverage.mjs's TEST_DEBT entry for @objectstack/formula records errors: 17, and its note itemises 16:

    TS2591 x6 (`process`), TS2345 x3, TS2352 x3, TS1470 x2, TS2339 x2.
    Re-measured 17 at 5ab08428, up from 12; the TS2591 half doubled, which is
    the missing `types:["node"]` again rather than five new defects.
    

    6 + 3 + 3 + 2 + 2 = 16, against a recorded 17.

    Measured

    The gate's own --re-measure refuses on an agent container (55 workspace dependencies of the ledgered packages have no built type entry point), so its generated project was reproduced from the gate's own remeasureProject — same extends, same absolutised exclude with the test glob dropped, same reconstructed typeRoots — and run directly on main at 1cdf3c14ef with @objectstack/formula's closure (@objectstack/spec) built:

    2 error TS1470
    2 error TS2339
    3 error TS2345
    3 error TS2352
    6 error TS2591
    1 error TS2739
    total 17
    

    The count is right and the note is one line short: the unlisted 17th is TS2739 x1, at packages/formula/src/cel-to-filter.test.ts(173,52)ok('id in current_user.org_user_ids', { current_user: { org_user_ids: [] } }), where the partial context cannot satisfy the exact shape of the module-level VARS that the local ok() helper pins its second argument to.

    The replica is calibrated rather than asserted: it independently reproduced the frozen 17 on the unmodified file, and separately detected 4 errors a branch had added, which the same branch then repaired to 17 again.

    Why it is worth a line

    AGENTS.md states the discipline this sits under: "when a re-measure forces a count up, rewrite the entry's note too — a note naming only the old errors reads as 'nearly graduated' to the next author." An itemisation that does not sum to its own recorded count has the same failure mode in miniature: the next author budgeting a graduation reads 16 known errors and finds 17, and the one that is missing is the only one whose repair is a one-line helper widening.

    Smallest possible remedy: add TS2739 x1 to that entry's note. No count moves, no baseline moves.


    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('^' + ".*" + ' The @objectstack/formula TEST_DEBT note itemises 16 errors against its own recorded count of 17 — the unlisted one is TS2739 · Issue #13631 · objectstack-ai/objectstack · GitHub
      Skip to content

      The @objectstack/formula TEST_DEBT note itemises 16 errors against its own recorded count of 17 — the unlisted one is TS2739 #13631

      Description

      @claude

      Found while implementing #13496 (PR #13630). Recording only — no severity asserted, routing is triage's. Not repaired there, because the type-check ledger is a governed shrink-only artifact and editing its note would be a rider on a security fix.

      The observation

      scripts/check-type-check-coverage.mjs's TEST_DEBT entry for @objectstack/formula records errors: 17, and its note itemises 16:

      TS2591 x6 (`process`), TS2345 x3, TS2352 x3, TS1470 x2, TS2339 x2.
      Re-measured 17 at 5ab08428, up from 12; the TS2591 half doubled, which is
      the missing `types:["node"]` again rather than five new defects.
      

      6 + 3 + 3 + 2 + 2 = 16, against a recorded 17.

      Measured

      The gate's own --re-measure refuses on an agent container (55 workspace dependencies of the ledgered packages have no built type entry point), so its generated project was reproduced from the gate's own remeasureProject — same extends, same absolutised exclude with the test glob dropped, same reconstructed typeRoots — and run directly on main at 1cdf3c14ef with @objectstack/formula's closure (@objectstack/spec) built:

      2 error TS1470
      2 error TS2339
      3 error TS2345
      3 error TS2352
      6 error TS2591
      1 error TS2739
      total 17
      

      The count is right and the note is one line short: the unlisted 17th is TS2739 x1, at packages/formula/src/cel-to-filter.test.ts(173,52)ok('id in current_user.org_user_ids', { current_user: { org_user_ids: [] } }), where the partial context cannot satisfy the exact shape of the module-level VARS that the local ok() helper pins its second argument to.

      The replica is calibrated rather than asserted: it independently reproduced the frozen 17 on the unmodified file, and separately detected 4 errors a branch had added, which the same branch then repaired to 17 again.

      Why it is worth a line

      AGENTS.md states the discipline this sits under: "when a re-measure forces a count up, rewrite the entry's note too — a note naming only the old errors reads as 'nearly graduated' to the next author." An itemisation that does not sum to its own recorded count has the same failure mode in miniature: the next author budgeting a graduation reads 16 known errors and finds 17, and the one that is missing is the only one whose repair is a one-line helper widening.

      Smallest possible remedy: add TS2739 x1 to that entry's note. No count moves, no baseline moves.


      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('^' + ".*" + ' The @objectstack/formula TEST_DEBT note itemises 16 errors against its own recorded count of 17 — the unlisted one is TS2739 · Issue #13631 · objectstack-ai/objectstack · GitHub
        Skip to content

        The @objectstack/formula TEST_DEBT note itemises 16 errors against its own recorded count of 17 — the unlisted one is TS2739 #13631

        Description

        @claude

        Found while implementing #13496 (PR #13630). Recording only — no severity asserted, routing is triage's. Not repaired there, because the type-check ledger is a governed shrink-only artifact and editing its note would be a rider on a security fix.

        The observation

        scripts/check-type-check-coverage.mjs's TEST_DEBT entry for @objectstack/formula records errors: 17, and its note itemises 16:

        TS2591 x6 (`process`), TS2345 x3, TS2352 x3, TS1470 x2, TS2339 x2.
        Re-measured 17 at 5ab08428, up from 12; the TS2591 half doubled, which is
        the missing `types:["node"]` again rather than five new defects.
        

        6 + 3 + 3 + 2 + 2 = 16, against a recorded 17.

        Measured

        The gate's own --re-measure refuses on an agent container (55 workspace dependencies of the ledgered packages have no built type entry point), so its generated project was reproduced from the gate's own remeasureProject — same extends, same absolutised exclude with the test glob dropped, same reconstructed typeRoots — and run directly on main at 1cdf3c14ef with @objectstack/formula's closure (@objectstack/spec) built:

        2 error TS1470
        2 error TS2339
        3 error TS2345
        3 error TS2352
        6 error TS2591
        1 error TS2739
        total 17
        

        The count is right and the note is one line short: the unlisted 17th is TS2739 x1, at packages/formula/src/cel-to-filter.test.ts(173,52)ok('id in current_user.org_user_ids', { current_user: { org_user_ids: [] } }), where the partial context cannot satisfy the exact shape of the module-level VARS that the local ok() helper pins its second argument to.

        The replica is calibrated rather than asserted: it independently reproduced the frozen 17 on the unmodified file, and separately detected 4 errors a branch had added, which the same branch then repaired to 17 again.

        Why it is worth a line

        AGENTS.md states the discipline this sits under: "when a re-measure forces a count up, rewrite the entry's note too — a note naming only the old errors reads as 'nearly graduated' to the next author." An itemisation that does not sum to its own recorded count has the same failure mode in miniature: the next author budgeting a graduation reads 16 known errors and finds 17, and the one that is missing is the only one whose repair is a one-line helper widening.

        Smallest possible remedy: add TS2739 x1 to that entry's note. No count moves, no baseline moves.


        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" + ' The @objectstack/formula TEST_DEBT note itemises 16 errors against its own recorded count of 17 — the unlisted one is TS2739 · Issue #13631 · objectstack-ai/objectstack · GitHub
          Skip to content

          The @objectstack/formula TEST_DEBT note itemises 16 errors against its own recorded count of 17 — the unlisted one is TS2739 #13631

          Description

          @claude

          Found while implementing #13496 (PR #13630). Recording only — no severity asserted, routing is triage's. Not repaired there, because the type-check ledger is a governed shrink-only artifact and editing its note would be a rider on a security fix.

          The observation

          scripts/check-type-check-coverage.mjs's TEST_DEBT entry for @objectstack/formula records errors: 17, and its note itemises 16:

          TS2591 x6 (`process`), TS2345 x3, TS2352 x3, TS1470 x2, TS2339 x2.
          Re-measured 17 at 5ab08428, up from 12; the TS2591 half doubled, which is
          the missing `types:["node"]` again rather than five new defects.
          

          6 + 3 + 3 + 2 + 2 = 16, against a recorded 17.

          Measured

          The gate's own --re-measure refuses on an agent container (55 workspace dependencies of the ledgered packages have no built type entry point), so its generated project was reproduced from the gate's own remeasureProject — same extends, same absolutised exclude with the test glob dropped, same reconstructed typeRoots — and run directly on main at 1cdf3c14ef with @objectstack/formula's closure (@objectstack/spec) built:

          2 error TS1470
          2 error TS2339
          3 error TS2345
          3 error TS2352
          6 error TS2591
          1 error TS2739
          total 17
          

          The count is right and the note is one line short: the unlisted 17th is TS2739 x1, at packages/formula/src/cel-to-filter.test.ts(173,52)ok('id in current_user.org_user_ids', { current_user: { org_user_ids: [] } }), where the partial context cannot satisfy the exact shape of the module-level VARS that the local ok() helper pins its second argument to.

          The replica is calibrated rather than asserted: it independently reproduced the frozen 17 on the unmodified file, and separately detected 4 errors a branch had added, which the same branch then repaired to 17 again.

          Why it is worth a line

          AGENTS.md states the discipline this sits under: "when a re-measure forces a count up, rewrite the entry's note too — a note naming only the old errors reads as 'nearly graduated' to the next author." An itemisation that does not sum to its own recorded count has the same failure mode in miniature: the next author budgeting a graduation reads 16 known errors and finds 17, and the one that is missing is the only one whose repair is a one-line helper widening.

          Smallest possible remedy: add TS2739 x1 to that entry's note. No count moves, no baseline moves.


          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('^' + ".*" + ' The @objectstack/formula TEST_DEBT note itemises 16 errors against its own recorded count of 17 — the unlisted one is TS2739 · Issue #13631 · objectstack-ai/objectstack · GitHub
            Skip to content

            The @objectstack/formula TEST_DEBT note itemises 16 errors against its own recorded count of 17 — the unlisted one is TS2739 #13631

            Description

            @claude

            Found while implementing #13496 (PR #13630). Recording only — no severity asserted, routing is triage's. Not repaired there, because the type-check ledger is a governed shrink-only artifact and editing its note would be a rider on a security fix.

            The observation

            scripts/check-type-check-coverage.mjs's TEST_DEBT entry for @objectstack/formula records errors: 17, and its note itemises 16:

            TS2591 x6 (`process`), TS2345 x3, TS2352 x3, TS1470 x2, TS2339 x2.
            Re-measured 17 at 5ab08428, up from 12; the TS2591 half doubled, which is
            the missing `types:["node"]` again rather than five new defects.
            

            6 + 3 + 3 + 2 + 2 = 16, against a recorded 17.

            Measured

            The gate's own --re-measure refuses on an agent container (55 workspace dependencies of the ledgered packages have no built type entry point), so its generated project was reproduced from the gate's own remeasureProject — same extends, same absolutised exclude with the test glob dropped, same reconstructed typeRoots — and run directly on main at 1cdf3c14ef with @objectstack/formula's closure (@objectstack/spec) built:

            2 error TS1470
            2 error TS2339
            3 error TS2345
            3 error TS2352
            6 error TS2591
            1 error TS2739
            total 17
            

            The count is right and the note is one line short: the unlisted 17th is TS2739 x1, at packages/formula/src/cel-to-filter.test.ts(173,52)ok('id in current_user.org_user_ids', { current_user: { org_user_ids: [] } }), where the partial context cannot satisfy the exact shape of the module-level VARS that the local ok() helper pins its second argument to.

            The replica is calibrated rather than asserted: it independently reproduced the frozen 17 on the unmodified file, and separately detected 4 errors a branch had added, which the same branch then repaired to 17 again.

            Why it is worth a line

            AGENTS.md states the discipline this sits under: "when a re-measure forces a count up, rewrite the entry's note too — a note naming only the old errors reads as 'nearly graduated' to the next author." An itemisation that does not sum to its own recorded count has the same failure mode in miniature: the next author budgeting a graduation reads 16 known errors and finds 17, and the one that is missing is the only one whose repair is a one-line helper widening.

            Smallest possible remedy: add TS2739 x1 to that entry's note. No count moves, no baseline moves.


            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('^' + ".*" + ' The @objectstack/formula TEST_DEBT note itemises 16 errors against its own recorded count of 17 — the unlisted one is TS2739 · Issue #13631 · objectstack-ai/objectstack · GitHub
              Skip to content

              The @objectstack/formula TEST_DEBT note itemises 16 errors against its own recorded count of 17 — the unlisted one is TS2739 #13631

              Description

              @claude

              Found while implementing #13496 (PR #13630). Recording only — no severity asserted, routing is triage's. Not repaired there, because the type-check ledger is a governed shrink-only artifact and editing its note would be a rider on a security fix.

              The observation

              scripts/check-type-check-coverage.mjs's TEST_DEBT entry for @objectstack/formula records errors: 17, and its note itemises 16:

              TS2591 x6 (`process`), TS2345 x3, TS2352 x3, TS1470 x2, TS2339 x2.
              Re-measured 17 at 5ab08428, up from 12; the TS2591 half doubled, which is
              the missing `types:["node"]` again rather than five new defects.
              

              6 + 3 + 3 + 2 + 2 = 16, against a recorded 17.

              Measured

              The gate's own --re-measure refuses on an agent container (55 workspace dependencies of the ledgered packages have no built type entry point), so its generated project was reproduced from the gate's own remeasureProject — same extends, same absolutised exclude with the test glob dropped, same reconstructed typeRoots — and run directly on main at 1cdf3c14ef with @objectstack/formula's closure (@objectstack/spec) built:

              2 error TS1470
              2 error TS2339
              3 error TS2345
              3 error TS2352
              6 error TS2591
              1 error TS2739
              total 17
              

              The count is right and the note is one line short: the unlisted 17th is TS2739 x1, at packages/formula/src/cel-to-filter.test.ts(173,52)ok('id in current_user.org_user_ids', { current_user: { org_user_ids: [] } }), where the partial context cannot satisfy the exact shape of the module-level VARS that the local ok() helper pins its second argument to.

              The replica is calibrated rather than asserted: it independently reproduced the frozen 17 on the unmodified file, and separately detected 4 errors a branch had added, which the same branch then repaired to 17 again.

              Why it is worth a line

              AGENTS.md states the discipline this sits under: "when a re-measure forces a count up, rewrite the entry's note too — a note naming only the old errors reads as 'nearly graduated' to the next author." An itemisation that does not sum to its own recorded count has the same failure mode in miniature: the next author budgeting a graduation reads 16 known errors and finds 17, and the one that is missing is the only one whose repair is a one-line helper widening.

              Smallest possible remedy: add TS2739 x1 to that entry's note. No count moves, no baseline moves.


              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); } })(); })(); The @objectstack/formula TEST_DEBT note itemises 16 errors against its own recorded count of 17 — the unlisted one is TS2739 · Issue #13631 · objectstack-ai/objectstack · GitHub
                Skip to content

                The @objectstack/formula TEST_DEBT note itemises 16 errors against its own recorded count of 17 — the unlisted one is TS2739 #13631

                Description

                @claude

                Found while implementing #13496 (PR #13630). Recording only — no severity asserted, routing is triage's. Not repaired there, because the type-check ledger is a governed shrink-only artifact and editing its note would be a rider on a security fix.

                The observation

                scripts/check-type-check-coverage.mjs's TEST_DEBT entry for @objectstack/formula records errors: 17, and its note itemises 16:

                TS2591 x6 (`process`), TS2345 x3, TS2352 x3, TS1470 x2, TS2339 x2.
                Re-measured 17 at 5ab08428, up from 12; the TS2591 half doubled, which is
                the missing `types:["node"]` again rather than five new defects.
                

                6 + 3 + 3 + 2 + 2 = 16, against a recorded 17.

                Measured

                The gate's own --re-measure refuses on an agent container (55 workspace dependencies of the ledgered packages have no built type entry point), so its generated project was reproduced from the gate's own remeasureProject — same extends, same absolutised exclude with the test glob dropped, same reconstructed typeRoots — and run directly on main at 1cdf3c14ef with @objectstack/formula's closure (@objectstack/spec) built:

                2 error TS1470
                2 error TS2339
                3 error TS2345
                3 error TS2352
                6 error TS2591
                1 error TS2739
                total 17
                

                The count is right and the note is one line short: the unlisted 17th is TS2739 x1, at packages/formula/src/cel-to-filter.test.ts(173,52)ok('id in current_user.org_user_ids', { current_user: { org_user_ids: [] } }), where the partial context cannot satisfy the exact shape of the module-level VARS that the local ok() helper pins its second argument to.

                The replica is calibrated rather than asserted: it independently reproduced the frozen 17 on the unmodified file, and separately detected 4 errors a branch had added, which the same branch then repaired to 17 again.

                Why it is worth a line

                AGENTS.md states the discipline this sits under: "when a re-measure forces a count up, rewrite the entry's note too — a note naming only the old errors reads as 'nearly graduated' to the next author." An itemisation that does not sum to its own recorded count has the same failure mode in miniature: the next author budgeting a graduation reads 16 known errors and finds 17, and the one that is missing is the only one whose repair is a one-line helper widening.

                Smallest possible remedy: add TS2739 x1 to that entry's note. No count moves, no baseline moves.


                Generated by Claude Code

                Metadata

                Metadata

                Type

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions