pnpm --filter @objectstack/cli test is a ~24-minute serialized run, and on a shared agent container it holds the verify lock for the whole of it #13504

Description

@os-trump

Observation found while implementing #13347 (PR on claude/issue-13347-cli-json-error-code). Not that card's defect, not fixed there, and filed rather than folded in.

What was measured

One run of the affected package's own suite, on a shared agent container, through the repo's verify lock:

NODE_OPTIONS=--max-old-space-size=4096 pnpm --filter @objectstack/cli exec vitest run --maxWorkers=2
Test Files 220
Tests 2525
Duration 1436.54s (transform 40.46s, import 401.08s, tests 2419.71s)

and the lock wrapper's own verdict line for that run:

os-verify-lock: VERDICT command-exit 1 · held the lock 1438s (23m58s) · waited 10s
os-verify-lock: ⚠ THIS RUN held the shared verify lock for 1438s (23m58s). Every sibling agent
os-verify-lock: ⚠ in this container queued behind it, and a long holder lengthens every cycle for
os-verify-lock: ⚠ all of them.
os-verify-lock: ⚠ If that is normal for this command rather than a one-off, it is a finding worth
os-verify-lock: ⚠ filing (holder-side starvation) — narrow the run, or say so on the card.

It is normal for this command rather than a one-off: 2419s of the 1436s wall clock is test body time across 220 files (the two numbers differ because --maxWorkers=2 runs two files at once), so the cost is the suite's own shape, not a stall or a hung case.

Why it is worth recording

pnpm test for the affected package is a Definition-of-done step for every card that touches packages/cli, and this repo runs several agents in one container behind a single verify lock. So every such card either

  • holds the shared lock for ~24 minutes, starving every sibling agent for the whole of it (the wrapper's own warning), or
  • narrows the run and declares the narrowing — which is legitimate, but means the package's full suite is in practice measured by CI alone.

Neither is wrong; the point is that the choice is currently forced by the suite's runtime rather than made deliberately.

Where the time sits, from the same run: import 401.08s is a quarter of the wall clock before any assertion executes, and a large share of the files boot a real kernel (bootSchemaStack / ObjectQL / a real driver) rather than exercising a unit. Whether the remedy is sharding, a slow-suite split, or moving some of the kernel-booting cases to a narrower double is exactly the triage this card is asking for, not something it presumes.

Deliberately not claimed here

  • ⛔ No test is slow "wrongly" — no case was inspected for waste, and several of the heaviest are integration pins whose whole value is that they boot the real thing.
  • ⛔ Nothing about CI. CI shards this suite and is not the surface with the contention; the measurement above is about the shared agent container.

Metadata

Metadata

Assignees

Type

No 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

    pnpm --filter @objectstack/cli test is a ~24-minute serialized run, and on a shared agent container it holds the verify lock for the whole of it #13504

    Description

    @os-trump

    Observation found while implementing #13347 (PR on claude/issue-13347-cli-json-error-code). Not that card's defect, not fixed there, and filed rather than folded in.

    What was measured

    One run of the affected package's own suite, on a shared agent container, through the repo's verify lock:

    NODE_OPTIONS=--max-old-space-size=4096 pnpm --filter @objectstack/cli exec vitest run --maxWorkers=2
    Test Files 220
    Tests 2525
    Duration 1436.54s (transform 40.46s, import 401.08s, tests 2419.71s)
    

    and the lock wrapper's own verdict line for that run:

    os-verify-lock: VERDICT command-exit 1 · held the lock 1438s (23m58s) · waited 10s
    os-verify-lock: ⚠ THIS RUN held the shared verify lock for 1438s (23m58s). Every sibling agent
    os-verify-lock: ⚠ in this container queued behind it, and a long holder lengthens every cycle for
    os-verify-lock: ⚠ all of them.
    os-verify-lock: ⚠ If that is normal for this command rather than a one-off, it is a finding worth
    os-verify-lock: ⚠ filing (holder-side starvation) — narrow the run, or say so on the card.
    

    It is normal for this command rather than a one-off: 2419s of the 1436s wall clock is test body time across 220 files (the two numbers differ because --maxWorkers=2 runs two files at once), so the cost is the suite's own shape, not a stall or a hung case.

    Why it is worth recording

    pnpm test for the affected package is a Definition-of-done step for every card that touches packages/cli, and this repo runs several agents in one container behind a single verify lock. So every such card either

    • holds the shared lock for ~24 minutes, starving every sibling agent for the whole of it (the wrapper's own warning), or
    • narrows the run and declares the narrowing — which is legitimate, but means the package's full suite is in practice measured by CI alone.

    Neither is wrong; the point is that the choice is currently forced by the suite's runtime rather than made deliberately.

    Where the time sits, from the same run: import 401.08s is a quarter of the wall clock before any assertion executes, and a large share of the files boot a real kernel (bootSchemaStack / ObjectQL / a real driver) rather than exercising a unit. Whether the remedy is sharding, a slow-suite split, or moving some of the kernel-booting cases to a narrower double is exactly the triage this card is asking for, not something it presumes.

    Deliberately not claimed here

    • ⛔ No test is slow "wrongly" — no case was inspected for waste, and several of the heaviest are integration pins whose whole value is that they boot the real thing.
    • ⛔ Nothing about CI. CI shards this suite and is not the surface with the contention; the measurement above is about the shared agent container.

    Metadata

    Metadata

    Assignees

    Type

    No 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

      pnpm --filter @objectstack/cli test is a ~24-minute serialized run, and on a shared agent container it holds the verify lock for the whole of it #13504

      Description

      @os-trump

      Observation found while implementing #13347 (PR on claude/issue-13347-cli-json-error-code). Not that card's defect, not fixed there, and filed rather than folded in.

      What was measured

      One run of the affected package's own suite, on a shared agent container, through the repo's verify lock:

      NODE_OPTIONS=--max-old-space-size=4096 pnpm --filter @objectstack/cli exec vitest run --maxWorkers=2
      Test Files 220
      Tests 2525
      Duration 1436.54s (transform 40.46s, import 401.08s, tests 2419.71s)
      

      and the lock wrapper's own verdict line for that run:

      os-verify-lock: VERDICT command-exit 1 · held the lock 1438s (23m58s) · waited 10s
      os-verify-lock: ⚠ THIS RUN held the shared verify lock for 1438s (23m58s). Every sibling agent
      os-verify-lock: ⚠ in this container queued behind it, and a long holder lengthens every cycle for
      os-verify-lock: ⚠ all of them.
      os-verify-lock: ⚠ If that is normal for this command rather than a one-off, it is a finding worth
      os-verify-lock: ⚠ filing (holder-side starvation) — narrow the run, or say so on the card.
      

      It is normal for this command rather than a one-off: 2419s of the 1436s wall clock is test body time across 220 files (the two numbers differ because --maxWorkers=2 runs two files at once), so the cost is the suite's own shape, not a stall or a hung case.

      Why it is worth recording

      pnpm test for the affected package is a Definition-of-done step for every card that touches packages/cli, and this repo runs several agents in one container behind a single verify lock. So every such card either

      • holds the shared lock for ~24 minutes, starving every sibling agent for the whole of it (the wrapper's own warning), or
      • narrows the run and declares the narrowing — which is legitimate, but means the package's full suite is in practice measured by CI alone.

      Neither is wrong; the point is that the choice is currently forced by the suite's runtime rather than made deliberately.

      Where the time sits, from the same run: import 401.08s is a quarter of the wall clock before any assertion executes, and a large share of the files boot a real kernel (bootSchemaStack / ObjectQL / a real driver) rather than exercising a unit. Whether the remedy is sharding, a slow-suite split, or moving some of the kernel-booting cases to a narrower double is exactly the triage this card is asking for, not something it presumes.

      Deliberately not claimed here

      • ⛔ No test is slow "wrongly" — no case was inspected for waste, and several of the heaviest are integration pins whose whole value is that they boot the real thing.
      • ⛔ Nothing about CI. CI shards this suite and is not the surface with the contention; the measurement above is about the shared agent container.

      Metadata

      Metadata

      Assignees

      Type

      No 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

        pnpm --filter @objectstack/cli test is a ~24-minute serialized run, and on a shared agent container it holds the verify lock for the whole of it #13504

        Description

        @os-trump

        Observation found while implementing #13347 (PR on claude/issue-13347-cli-json-error-code). Not that card's defect, not fixed there, and filed rather than folded in.

        What was measured

        One run of the affected package's own suite, on a shared agent container, through the repo's verify lock:

        NODE_OPTIONS=--max-old-space-size=4096 pnpm --filter @objectstack/cli exec vitest run --maxWorkers=2
        Test Files 220
        Tests 2525
        Duration 1436.54s (transform 40.46s, import 401.08s, tests 2419.71s)
        

        and the lock wrapper's own verdict line for that run:

        os-verify-lock: VERDICT command-exit 1 · held the lock 1438s (23m58s) · waited 10s
        os-verify-lock: ⚠ THIS RUN held the shared verify lock for 1438s (23m58s). Every sibling agent
        os-verify-lock: ⚠ in this container queued behind it, and a long holder lengthens every cycle for
        os-verify-lock: ⚠ all of them.
        os-verify-lock: ⚠ If that is normal for this command rather than a one-off, it is a finding worth
        os-verify-lock: ⚠ filing (holder-side starvation) — narrow the run, or say so on the card.
        

        It is normal for this command rather than a one-off: 2419s of the 1436s wall clock is test body time across 220 files (the two numbers differ because --maxWorkers=2 runs two files at once), so the cost is the suite's own shape, not a stall or a hung case.

        Why it is worth recording

        pnpm test for the affected package is a Definition-of-done step for every card that touches packages/cli, and this repo runs several agents in one container behind a single verify lock. So every such card either

        • holds the shared lock for ~24 minutes, starving every sibling agent for the whole of it (the wrapper's own warning), or
        • narrows the run and declares the narrowing — which is legitimate, but means the package's full suite is in practice measured by CI alone.

        Neither is wrong; the point is that the choice is currently forced by the suite's runtime rather than made deliberately.

        Where the time sits, from the same run: import 401.08s is a quarter of the wall clock before any assertion executes, and a large share of the files boot a real kernel (bootSchemaStack / ObjectQL / a real driver) rather than exercising a unit. Whether the remedy is sharding, a slow-suite split, or moving some of the kernel-booting cases to a narrower double is exactly the triage this card is asking for, not something it presumes.

        Deliberately not claimed here

        • ⛔ No test is slow "wrongly" — no case was inspected for waste, and several of the heaviest are integration pins whose whole value is that they boot the real thing.
        • ⛔ Nothing about CI. CI shards this suite and is not the surface with the contention; the measurement above is about the shared agent container.

        Metadata

        Metadata

        Assignees

        Type

        No 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

          pnpm --filter @objectstack/cli test is a ~24-minute serialized run, and on a shared agent container it holds the verify lock for the whole of it #13504

          Description

          @os-trump

          Observation found while implementing #13347 (PR on claude/issue-13347-cli-json-error-code). Not that card's defect, not fixed there, and filed rather than folded in.

          What was measured

          One run of the affected package's own suite, on a shared agent container, through the repo's verify lock:

          NODE_OPTIONS=--max-old-space-size=4096 pnpm --filter @objectstack/cli exec vitest run --maxWorkers=2
          Test Files 220
          Tests 2525
          Duration 1436.54s (transform 40.46s, import 401.08s, tests 2419.71s)
          

          and the lock wrapper's own verdict line for that run:

          os-verify-lock: VERDICT command-exit 1 · held the lock 1438s (23m58s) · waited 10s
          os-verify-lock: ⚠ THIS RUN held the shared verify lock for 1438s (23m58s). Every sibling agent
          os-verify-lock: ⚠ in this container queued behind it, and a long holder lengthens every cycle for
          os-verify-lock: ⚠ all of them.
          os-verify-lock: ⚠ If that is normal for this command rather than a one-off, it is a finding worth
          os-verify-lock: ⚠ filing (holder-side starvation) — narrow the run, or say so on the card.
          

          It is normal for this command rather than a one-off: 2419s of the 1436s wall clock is test body time across 220 files (the two numbers differ because --maxWorkers=2 runs two files at once), so the cost is the suite's own shape, not a stall or a hung case.

          Why it is worth recording

          pnpm test for the affected package is a Definition-of-done step for every card that touches packages/cli, and this repo runs several agents in one container behind a single verify lock. So every such card either

          • holds the shared lock for ~24 minutes, starving every sibling agent for the whole of it (the wrapper's own warning), or
          • narrows the run and declares the narrowing — which is legitimate, but means the package's full suite is in practice measured by CI alone.

          Neither is wrong; the point is that the choice is currently forced by the suite's runtime rather than made deliberately.

          Where the time sits, from the same run: import 401.08s is a quarter of the wall clock before any assertion executes, and a large share of the files boot a real kernel (bootSchemaStack / ObjectQL / a real driver) rather than exercising a unit. Whether the remedy is sharding, a slow-suite split, or moving some of the kernel-booting cases to a narrower double is exactly the triage this card is asking for, not something it presumes.

          Deliberately not claimed here

          • ⛔ No test is slow "wrongly" — no case was inspected for waste, and several of the heaviest are integration pins whose whole value is that they boot the real thing.
          • ⛔ Nothing about CI. CI shards this suite and is not the surface with the contention; the measurement above is about the shared agent container.

          Metadata

          Metadata

          Assignees

          Type

          No 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

            pnpm --filter @objectstack/cli test is a ~24-minute serialized run, and on a shared agent container it holds the verify lock for the whole of it #13504

            Description

            @os-trump

            Observation found while implementing #13347 (PR on claude/issue-13347-cli-json-error-code). Not that card's defect, not fixed there, and filed rather than folded in.

            What was measured

            One run of the affected package's own suite, on a shared agent container, through the repo's verify lock:

            NODE_OPTIONS=--max-old-space-size=4096 pnpm --filter @objectstack/cli exec vitest run --maxWorkers=2
            Test Files 220
            Tests 2525
            Duration 1436.54s (transform 40.46s, import 401.08s, tests 2419.71s)
            

            and the lock wrapper's own verdict line for that run:

            os-verify-lock: VERDICT command-exit 1 · held the lock 1438s (23m58s) · waited 10s
            os-verify-lock: ⚠ THIS RUN held the shared verify lock for 1438s (23m58s). Every sibling agent
            os-verify-lock: ⚠ in this container queued behind it, and a long holder lengthens every cycle for
            os-verify-lock: ⚠ all of them.
            os-verify-lock: ⚠ If that is normal for this command rather than a one-off, it is a finding worth
            os-verify-lock: ⚠ filing (holder-side starvation) — narrow the run, or say so on the card.
            

            It is normal for this command rather than a one-off: 2419s of the 1436s wall clock is test body time across 220 files (the two numbers differ because --maxWorkers=2 runs two files at once), so the cost is the suite's own shape, not a stall or a hung case.

            Why it is worth recording

            pnpm test for the affected package is a Definition-of-done step for every card that touches packages/cli, and this repo runs several agents in one container behind a single verify lock. So every such card either

            • holds the shared lock for ~24 minutes, starving every sibling agent for the whole of it (the wrapper's own warning), or
            • narrows the run and declares the narrowing — which is legitimate, but means the package's full suite is in practice measured by CI alone.

            Neither is wrong; the point is that the choice is currently forced by the suite's runtime rather than made deliberately.

            Where the time sits, from the same run: import 401.08s is a quarter of the wall clock before any assertion executes, and a large share of the files boot a real kernel (bootSchemaStack / ObjectQL / a real driver) rather than exercising a unit. Whether the remedy is sharding, a slow-suite split, or moving some of the kernel-booting cases to a narrower double is exactly the triage this card is asking for, not something it presumes.

            Deliberately not claimed here

            • ⛔ No test is slow "wrongly" — no case was inspected for waste, and several of the heaviest are integration pins whose whole value is that they boot the real thing.
            • ⛔ Nothing about CI. CI shards this suite and is not the surface with the contention; the measurement above is about the shared agent container.

            Metadata

            Metadata

            Assignees

            Type

            No 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

              pnpm --filter @objectstack/cli test is a ~24-minute serialized run, and on a shared agent container it holds the verify lock for the whole of it #13504

              Description

              @os-trump

              Observation found while implementing #13347 (PR on claude/issue-13347-cli-json-error-code). Not that card's defect, not fixed there, and filed rather than folded in.

              What was measured

              One run of the affected package's own suite, on a shared agent container, through the repo's verify lock:

              NODE_OPTIONS=--max-old-space-size=4096 pnpm --filter @objectstack/cli exec vitest run --maxWorkers=2
              Test Files 220
              Tests 2525
              Duration 1436.54s (transform 40.46s, import 401.08s, tests 2419.71s)
              

              and the lock wrapper's own verdict line for that run:

              os-verify-lock: VERDICT command-exit 1 · held the lock 1438s (23m58s) · waited 10s
              os-verify-lock: ⚠ THIS RUN held the shared verify lock for 1438s (23m58s). Every sibling agent
              os-verify-lock: ⚠ in this container queued behind it, and a long holder lengthens every cycle for
              os-verify-lock: ⚠ all of them.
              os-verify-lock: ⚠ If that is normal for this command rather than a one-off, it is a finding worth
              os-verify-lock: ⚠ filing (holder-side starvation) — narrow the run, or say so on the card.
              

              It is normal for this command rather than a one-off: 2419s of the 1436s wall clock is test body time across 220 files (the two numbers differ because --maxWorkers=2 runs two files at once), so the cost is the suite's own shape, not a stall or a hung case.

              Why it is worth recording

              pnpm test for the affected package is a Definition-of-done step for every card that touches packages/cli, and this repo runs several agents in one container behind a single verify lock. So every such card either

              • holds the shared lock for ~24 minutes, starving every sibling agent for the whole of it (the wrapper's own warning), or
              • narrows the run and declares the narrowing — which is legitimate, but means the package's full suite is in practice measured by CI alone.

              Neither is wrong; the point is that the choice is currently forced by the suite's runtime rather than made deliberately.

              Where the time sits, from the same run: import 401.08s is a quarter of the wall clock before any assertion executes, and a large share of the files boot a real kernel (bootSchemaStack / ObjectQL / a real driver) rather than exercising a unit. Whether the remedy is sharding, a slow-suite split, or moving some of the kernel-booting cases to a narrower double is exactly the triage this card is asking for, not something it presumes.

              Deliberately not claimed here

              • ⛔ No test is slow "wrongly" — no case was inspected for waste, and several of the heaviest are integration pins whose whole value is that they boot the real thing.
              • ⛔ Nothing about CI. CI shards this suite and is not the surface with the contention; the measurement above is about the shared agent container.

              Metadata

              Metadata

              Assignees

              Type

              No 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

                pnpm --filter @objectstack/cli test is a ~24-minute serialized run, and on a shared agent container it holds the verify lock for the whole of it #13504

                Description

                @os-trump

                Observation found while implementing #13347 (PR on claude/issue-13347-cli-json-error-code). Not that card's defect, not fixed there, and filed rather than folded in.

                What was measured

                One run of the affected package's own suite, on a shared agent container, through the repo's verify lock:

                NODE_OPTIONS=--max-old-space-size=4096 pnpm --filter @objectstack/cli exec vitest run --maxWorkers=2
                Test Files 220
                Tests 2525
                Duration 1436.54s (transform 40.46s, import 401.08s, tests 2419.71s)
                

                and the lock wrapper's own verdict line for that run:

                os-verify-lock: VERDICT command-exit 1 · held the lock 1438s (23m58s) · waited 10s
                os-verify-lock: ⚠ THIS RUN held the shared verify lock for 1438s (23m58s). Every sibling agent
                os-verify-lock: ⚠ in this container queued behind it, and a long holder lengthens every cycle for
                os-verify-lock: ⚠ all of them.
                os-verify-lock: ⚠ If that is normal for this command rather than a one-off, it is a finding worth
                os-verify-lock: ⚠ filing (holder-side starvation) — narrow the run, or say so on the card.
                

                It is normal for this command rather than a one-off: 2419s of the 1436s wall clock is test body time across 220 files (the two numbers differ because --maxWorkers=2 runs two files at once), so the cost is the suite's own shape, not a stall or a hung case.

                Why it is worth recording

                pnpm test for the affected package is a Definition-of-done step for every card that touches packages/cli, and this repo runs several agents in one container behind a single verify lock. So every such card either

                • holds the shared lock for ~24 minutes, starving every sibling agent for the whole of it (the wrapper's own warning), or
                • narrows the run and declares the narrowing — which is legitimate, but means the package's full suite is in practice measured by CI alone.

                Neither is wrong; the point is that the choice is currently forced by the suite's runtime rather than made deliberately.

                Where the time sits, from the same run: import 401.08s is a quarter of the wall clock before any assertion executes, and a large share of the files boot a real kernel (bootSchemaStack / ObjectQL / a real driver) rather than exercising a unit. Whether the remedy is sharding, a slow-suite split, or moving some of the kernel-booting cases to a narrower double is exactly the triage this card is asking for, not something it presumes.

                Deliberately not claimed here

                • ⛔ No test is slow "wrongly" — no case was inspected for waste, and several of the heaviest are integration pins whose whole value is that they boot the real thing.
                • ⛔ Nothing about CI. CI shards this suite and is not the surface with the contention; the measurement above is about the shared agent container.

                Metadata

                Metadata

                Assignees

                Type

                No type

                Projects

                No projects

                  Milestone

                  No milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions