REGRESSION: POST /amicode/connections/credential (pasqal-cloud) segfaults Bun — bisected to 467fb15cf #82

Description

@jack-champagne

Rewritten. The first version of this issue concluded "latent Bun bug, skip the test." That was wrong. The test passed six days ago and a specific commit broke it. Details below.

Not an OOM

The unit (linux) job dies with exit code 137 and turbo labels it "likely due to running out of memory." That label is boilerplate turbo prints for any signal-killed child. Memory is not involved:

Elapsed: 1498ms | RSS: 0.15GB | Peak: 0.37GB | Faults: 0 | Machine: 32.38GB
panic(main thread): Segmentation fault at address 0x0

0.37 GB peak on a 32 GB machine, zero faults, dead in 1.5 s. SIGILL is Bun's crash handler trapping after the panic; 137 is turbo relaying it.

It is a regression, not latent debt

Test: test/server/amicode-connections-routes.test.ts:335
"full lifecycle: submit(valid) → connected + devices; revalidate never respawns; disconnect scrubs"

The test file is unchanged since 2026-07-20. Bun has been pinned at 1.3.14 since 2026-05-18. Only connections.ts moved underneath it. Bisected by running that one test at each commit that touched connections.ts:

commitdateresult
85922e1762026-07-201 pass
3e4b372982026-07-211 pass
467fb15cf2026-07-21CRASH
8c6dd69402026-07-27CRASH
f43233e68 (tip)2026-07-27CRASH

467fb15cf — "feat: two-step Pasqal auth — username+password → project picker (amicode#194)" is the first bad commit. It rewrote runPasqalValidator / submitPasqalCredential (+207 lines in connections.ts).

Localized to one statement

Inserting an early return at successive points in the test body:

stop afterresult
const server = app()pass
const stub = stageStubValidator()pass
stub.scenario(0, validatorLine())pass
the POST /amicode/connections/credential + .json()CRASH

So the crash is inside the credential-submit route handler for id: "pasqal-cloud". The sibling test that submits id: "company-compute" passes — that path uses an HTTP stub, not the spawn path. Every other test in the file passes individually; skipping this one alone yields 553 pass / 3 skip / 0 fail across all 63 files in test/server/.

Ruled out

  • OOM — see above.
  • A larger runner — memory was never the constraint. Also unavailable: org is plan=free, GET /orgs/harmoniqs/actions/hosted-runners404 GitHub hosted runners are not supported for this organization.
  • Upgrading Bunbun-v1.3.14 is the current release; packageManager already pins it and upstream sst/opencode pins the same.
  • return inside try/finally467fb15cf refactored runPasqalValidator from assign-then-return into return directly inside try with a mutating finally. Hoisting it back out does not fix the crash. Tested.
  • bun-spawning-bun by itself — the harness sets AMICO_PYTHON = process.execPath, so the real spawnPasqalValidator spawns bun to run a generated .mjs. A standalone 20-iteration bun-spawns-bun-mjs test passes cleanly. The crash needs the Effect/route context.

Open — and it gates the amicode.10 tag

Unknown whether production is affected. The test drives the real spawn path with bun standing in as the interpreter; production spawns a real Python interpreter. So this may be a Bun bug reachable only under the test's interpreter substitution, or it may be a genuine fault in the rewritten submit path that Python would also hit. Not yet determined.

Until that is settled, v1.17.3-amicode.10 should not be cut on the assumption this is test-only.

cc @kate467fb15cf is yours; you likely have the fastest read on what changed in the submit path.

Found while establishing a CI baseline for #2 / #79 — this went unnoticed for 6 days because the fork's workflows request blacksmith-4vcpu-* runners the org has none of, so no test job has ever run here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    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

      REGRESSION: POST /amicode/connections/credential (pasqal-cloud) segfaults Bun — bisected to 467fb15cf #82

      Description

      @jack-champagne

      Rewritten. The first version of this issue concluded "latent Bun bug, skip the test." That was wrong. The test passed six days ago and a specific commit broke it. Details below.

      Not an OOM

      The unit (linux) job dies with exit code 137 and turbo labels it "likely due to running out of memory." That label is boilerplate turbo prints for any signal-killed child. Memory is not involved:

      Elapsed: 1498ms | RSS: 0.15GB | Peak: 0.37GB | Faults: 0 | Machine: 32.38GB
      panic(main thread): Segmentation fault at address 0x0
      

      0.37 GB peak on a 32 GB machine, zero faults, dead in 1.5 s. SIGILL is Bun's crash handler trapping after the panic; 137 is turbo relaying it.

      It is a regression, not latent debt

      Test: test/server/amicode-connections-routes.test.ts:335
      "full lifecycle: submit(valid) → connected + devices; revalidate never respawns; disconnect scrubs"

      The test file is unchanged since 2026-07-20. Bun has been pinned at 1.3.14 since 2026-05-18. Only connections.ts moved underneath it. Bisected by running that one test at each commit that touched connections.ts:

      commitdateresult
      85922e1762026-07-201 pass
      3e4b372982026-07-211 pass
      467fb15cf2026-07-21CRASH
      8c6dd69402026-07-27CRASH
      f43233e68 (tip)2026-07-27CRASH

      467fb15cf — "feat: two-step Pasqal auth — username+password → project picker (amicode#194)" is the first bad commit. It rewrote runPasqalValidator / submitPasqalCredential (+207 lines in connections.ts).

      Localized to one statement

      Inserting an early return at successive points in the test body:

      stop afterresult
      const server = app()pass
      const stub = stageStubValidator()pass
      stub.scenario(0, validatorLine())pass
      the POST /amicode/connections/credential + .json()CRASH

      So the crash is inside the credential-submit route handler for id: "pasqal-cloud". The sibling test that submits id: "company-compute" passes — that path uses an HTTP stub, not the spawn path. Every other test in the file passes individually; skipping this one alone yields 553 pass / 3 skip / 0 fail across all 63 files in test/server/.

      Ruled out

      • OOM — see above.
      • A larger runner — memory was never the constraint. Also unavailable: org is plan=free, GET /orgs/harmoniqs/actions/hosted-runners404 GitHub hosted runners are not supported for this organization.
      • Upgrading Bunbun-v1.3.14 is the current release; packageManager already pins it and upstream sst/opencode pins the same.
      • return inside try/finally467fb15cf refactored runPasqalValidator from assign-then-return into return directly inside try with a mutating finally. Hoisting it back out does not fix the crash. Tested.
      • bun-spawning-bun by itself — the harness sets AMICO_PYTHON = process.execPath, so the real spawnPasqalValidator spawns bun to run a generated .mjs. A standalone 20-iteration bun-spawns-bun-mjs test passes cleanly. The crash needs the Effect/route context.

      Open — and it gates the amicode.10 tag

      Unknown whether production is affected. The test drives the real spawn path with bun standing in as the interpreter; production spawns a real Python interpreter. So this may be a Bun bug reachable only under the test's interpreter substitution, or it may be a genuine fault in the rewritten submit path that Python would also hit. Not yet determined.

      Until that is settled, v1.17.3-amicode.10 should not be cut on the assumption this is test-only.

      cc @kate467fb15cf is yours; you likely have the fastest read on what changed in the submit path.

      Found while establishing a CI baseline for #2 / #79 — this went unnoticed for 6 days because the fork's workflows request blacksmith-4vcpu-* runners the org has none of, so no test job has ever run here.

      Metadata

      Metadata

      Assignees

      No one assigned

        Labels

        No labels
        No labels

        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

          REGRESSION: POST /amicode/connections/credential (pasqal-cloud) segfaults Bun — bisected to 467fb15cf #82

          Description

          @jack-champagne

          Rewritten. The first version of this issue concluded "latent Bun bug, skip the test." That was wrong. The test passed six days ago and a specific commit broke it. Details below.

          Not an OOM

          The unit (linux) job dies with exit code 137 and turbo labels it "likely due to running out of memory." That label is boilerplate turbo prints for any signal-killed child. Memory is not involved:

          Elapsed: 1498ms | RSS: 0.15GB | Peak: 0.37GB | Faults: 0 | Machine: 32.38GB
          panic(main thread): Segmentation fault at address 0x0
          

          0.37 GB peak on a 32 GB machine, zero faults, dead in 1.5 s. SIGILL is Bun's crash handler trapping after the panic; 137 is turbo relaying it.

          It is a regression, not latent debt

          Test: test/server/amicode-connections-routes.test.ts:335
          "full lifecycle: submit(valid) → connected + devices; revalidate never respawns; disconnect scrubs"

          The test file is unchanged since 2026-07-20. Bun has been pinned at 1.3.14 since 2026-05-18. Only connections.ts moved underneath it. Bisected by running that one test at each commit that touched connections.ts:

          commitdateresult
          85922e1762026-07-201 pass
          3e4b372982026-07-211 pass
          467fb15cf2026-07-21CRASH
          8c6dd69402026-07-27CRASH
          f43233e68 (tip)2026-07-27CRASH

          467fb15cf — "feat: two-step Pasqal auth — username+password → project picker (amicode#194)" is the first bad commit. It rewrote runPasqalValidator / submitPasqalCredential (+207 lines in connections.ts).

          Localized to one statement

          Inserting an early return at successive points in the test body:

          stop afterresult
          const server = app()pass
          const stub = stageStubValidator()pass
          stub.scenario(0, validatorLine())pass
          the POST /amicode/connections/credential + .json()CRASH

          So the crash is inside the credential-submit route handler for id: "pasqal-cloud". The sibling test that submits id: "company-compute" passes — that path uses an HTTP stub, not the spawn path. Every other test in the file passes individually; skipping this one alone yields 553 pass / 3 skip / 0 fail across all 63 files in test/server/.

          Ruled out

          • OOM — see above.
          • A larger runner — memory was never the constraint. Also unavailable: org is plan=free, GET /orgs/harmoniqs/actions/hosted-runners404 GitHub hosted runners are not supported for this organization.
          • Upgrading Bunbun-v1.3.14 is the current release; packageManager already pins it and upstream sst/opencode pins the same.
          • return inside try/finally467fb15cf refactored runPasqalValidator from assign-then-return into return directly inside try with a mutating finally. Hoisting it back out does not fix the crash. Tested.
          • bun-spawning-bun by itself — the harness sets AMICO_PYTHON = process.execPath, so the real spawnPasqalValidator spawns bun to run a generated .mjs. A standalone 20-iteration bun-spawns-bun-mjs test passes cleanly. The crash needs the Effect/route context.

          Open — and it gates the amicode.10 tag

          Unknown whether production is affected. The test drives the real spawn path with bun standing in as the interpreter; production spawns a real Python interpreter. So this may be a Bun bug reachable only under the test's interpreter substitution, or it may be a genuine fault in the rewritten submit path that Python would also hit. Not yet determined.

          Until that is settled, v1.17.3-amicode.10 should not be cut on the assumption this is test-only.

          cc @kate467fb15cf is yours; you likely have the fastest read on what changed in the submit path.

          Found while establishing a CI baseline for #2 / #79 — this went unnoticed for 6 days because the fork's workflows request blacksmith-4vcpu-* runners the org has none of, so no test job has ever run here.

          Metadata

          Metadata

          Assignees

          No one assigned

            Labels

            No labels
            No labels

            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

              REGRESSION: POST /amicode/connections/credential (pasqal-cloud) segfaults Bun — bisected to 467fb15cf #82

              Description

              @jack-champagne

              Rewritten. The first version of this issue concluded "latent Bun bug, skip the test." That was wrong. The test passed six days ago and a specific commit broke it. Details below.

              Not an OOM

              The unit (linux) job dies with exit code 137 and turbo labels it "likely due to running out of memory." That label is boilerplate turbo prints for any signal-killed child. Memory is not involved:

              Elapsed: 1498ms | RSS: 0.15GB | Peak: 0.37GB | Faults: 0 | Machine: 32.38GB
              panic(main thread): Segmentation fault at address 0x0
              

              0.37 GB peak on a 32 GB machine, zero faults, dead in 1.5 s. SIGILL is Bun's crash handler trapping after the panic; 137 is turbo relaying it.

              It is a regression, not latent debt

              Test: test/server/amicode-connections-routes.test.ts:335
              "full lifecycle: submit(valid) → connected + devices; revalidate never respawns; disconnect scrubs"

              The test file is unchanged since 2026-07-20. Bun has been pinned at 1.3.14 since 2026-05-18. Only connections.ts moved underneath it. Bisected by running that one test at each commit that touched connections.ts:

              commitdateresult
              85922e1762026-07-201 pass
              3e4b372982026-07-211 pass
              467fb15cf2026-07-21CRASH
              8c6dd69402026-07-27CRASH
              f43233e68 (tip)2026-07-27CRASH

              467fb15cf — "feat: two-step Pasqal auth — username+password → project picker (amicode#194)" is the first bad commit. It rewrote runPasqalValidator / submitPasqalCredential (+207 lines in connections.ts).

              Localized to one statement

              Inserting an early return at successive points in the test body:

              stop afterresult
              const server = app()pass
              const stub = stageStubValidator()pass
              stub.scenario(0, validatorLine())pass
              the POST /amicode/connections/credential + .json()CRASH

              So the crash is inside the credential-submit route handler for id: "pasqal-cloud". The sibling test that submits id: "company-compute" passes — that path uses an HTTP stub, not the spawn path. Every other test in the file passes individually; skipping this one alone yields 553 pass / 3 skip / 0 fail across all 63 files in test/server/.

              Ruled out

              • OOM — see above.
              • A larger runner — memory was never the constraint. Also unavailable: org is plan=free, GET /orgs/harmoniqs/actions/hosted-runners404 GitHub hosted runners are not supported for this organization.
              • Upgrading Bunbun-v1.3.14 is the current release; packageManager already pins it and upstream sst/opencode pins the same.
              • return inside try/finally467fb15cf refactored runPasqalValidator from assign-then-return into return directly inside try with a mutating finally. Hoisting it back out does not fix the crash. Tested.
              • bun-spawning-bun by itself — the harness sets AMICO_PYTHON = process.execPath, so the real spawnPasqalValidator spawns bun to run a generated .mjs. A standalone 20-iteration bun-spawns-bun-mjs test passes cleanly. The crash needs the Effect/route context.

              Open — and it gates the amicode.10 tag

              Unknown whether production is affected. The test drives the real spawn path with bun standing in as the interpreter; production spawns a real Python interpreter. So this may be a Bun bug reachable only under the test's interpreter substitution, or it may be a genuine fault in the rewritten submit path that Python would also hit. Not yet determined.

              Until that is settled, v1.17.3-amicode.10 should not be cut on the assumption this is test-only.

              cc @kate467fb15cf is yours; you likely have the fastest read on what changed in the submit path.

              Found while establishing a CI baseline for #2 / #79 — this went unnoticed for 6 days because the fork's workflows request blacksmith-4vcpu-* runners the org has none of, so no test job has ever run here.

              Metadata

              Metadata

              Assignees

              No one assigned

                Labels

                No labels
                No labels

                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

                  REGRESSION: POST /amicode/connections/credential (pasqal-cloud) segfaults Bun — bisected to 467fb15cf #82

                  Description

                  @jack-champagne

                  Rewritten. The first version of this issue concluded "latent Bun bug, skip the test." That was wrong. The test passed six days ago and a specific commit broke it. Details below.

                  Not an OOM

                  The unit (linux) job dies with exit code 137 and turbo labels it "likely due to running out of memory." That label is boilerplate turbo prints for any signal-killed child. Memory is not involved:

                  Elapsed: 1498ms | RSS: 0.15GB | Peak: 0.37GB | Faults: 0 | Machine: 32.38GB
                  panic(main thread): Segmentation fault at address 0x0
                  

                  0.37 GB peak on a 32 GB machine, zero faults, dead in 1.5 s. SIGILL is Bun's crash handler trapping after the panic; 137 is turbo relaying it.

                  It is a regression, not latent debt

                  Test: test/server/amicode-connections-routes.test.ts:335
                  "full lifecycle: submit(valid) → connected + devices; revalidate never respawns; disconnect scrubs"

                  The test file is unchanged since 2026-07-20. Bun has been pinned at 1.3.14 since 2026-05-18. Only connections.ts moved underneath it. Bisected by running that one test at each commit that touched connections.ts:

                  commitdateresult
                  85922e1762026-07-201 pass
                  3e4b372982026-07-211 pass
                  467fb15cf2026-07-21CRASH
                  8c6dd69402026-07-27CRASH
                  f43233e68 (tip)2026-07-27CRASH

                  467fb15cf — "feat: two-step Pasqal auth — username+password → project picker (amicode#194)" is the first bad commit. It rewrote runPasqalValidator / submitPasqalCredential (+207 lines in connections.ts).

                  Localized to one statement

                  Inserting an early return at successive points in the test body:

                  stop afterresult
                  const server = app()pass
                  const stub = stageStubValidator()pass
                  stub.scenario(0, validatorLine())pass
                  the POST /amicode/connections/credential + .json()CRASH

                  So the crash is inside the credential-submit route handler for id: "pasqal-cloud". The sibling test that submits id: "company-compute" passes — that path uses an HTTP stub, not the spawn path. Every other test in the file passes individually; skipping this one alone yields 553 pass / 3 skip / 0 fail across all 63 files in test/server/.

                  Ruled out

                  • OOM — see above.
                  • A larger runner — memory was never the constraint. Also unavailable: org is plan=free, GET /orgs/harmoniqs/actions/hosted-runners404 GitHub hosted runners are not supported for this organization.
                  • Upgrading Bunbun-v1.3.14 is the current release; packageManager already pins it and upstream sst/opencode pins the same.
                  • return inside try/finally467fb15cf refactored runPasqalValidator from assign-then-return into return directly inside try with a mutating finally. Hoisting it back out does not fix the crash. Tested.
                  • bun-spawning-bun by itself — the harness sets AMICO_PYTHON = process.execPath, so the real spawnPasqalValidator spawns bun to run a generated .mjs. A standalone 20-iteration bun-spawns-bun-mjs test passes cleanly. The crash needs the Effect/route context.

                  Open — and it gates the amicode.10 tag

                  Unknown whether production is affected. The test drives the real spawn path with bun standing in as the interpreter; production spawns a real Python interpreter. So this may be a Bun bug reachable only under the test's interpreter substitution, or it may be a genuine fault in the rewritten submit path that Python would also hit. Not yet determined.

                  Until that is settled, v1.17.3-amicode.10 should not be cut on the assumption this is test-only.

                  cc @kate467fb15cf is yours; you likely have the fastest read on what changed in the submit path.

                  Found while establishing a CI baseline for #2 / #79 — this went unnoticed for 6 days because the fork's workflows request blacksmith-4vcpu-* runners the org has none of, so no test job has ever run here.

                  Metadata

                  Metadata

                  Assignees

                  No one assigned

                    Labels

                    No labels
                    No labels

                    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

                      REGRESSION: POST /amicode/connections/credential (pasqal-cloud) segfaults Bun — bisected to 467fb15cf #82

                      Description

                      @jack-champagne

                      Rewritten. The first version of this issue concluded "latent Bun bug, skip the test." That was wrong. The test passed six days ago and a specific commit broke it. Details below.

                      Not an OOM

                      The unit (linux) job dies with exit code 137 and turbo labels it "likely due to running out of memory." That label is boilerplate turbo prints for any signal-killed child. Memory is not involved:

                      Elapsed: 1498ms | RSS: 0.15GB | Peak: 0.37GB | Faults: 0 | Machine: 32.38GB
                      panic(main thread): Segmentation fault at address 0x0
                      

                      0.37 GB peak on a 32 GB machine, zero faults, dead in 1.5 s. SIGILL is Bun's crash handler trapping after the panic; 137 is turbo relaying it.

                      It is a regression, not latent debt

                      Test: test/server/amicode-connections-routes.test.ts:335
                      "full lifecycle: submit(valid) → connected + devices; revalidate never respawns; disconnect scrubs"

                      The test file is unchanged since 2026-07-20. Bun has been pinned at 1.3.14 since 2026-05-18. Only connections.ts moved underneath it. Bisected by running that one test at each commit that touched connections.ts:

                      commitdateresult
                      85922e1762026-07-201 pass
                      3e4b372982026-07-211 pass
                      467fb15cf2026-07-21CRASH
                      8c6dd69402026-07-27CRASH
                      f43233e68 (tip)2026-07-27CRASH

                      467fb15cf — "feat: two-step Pasqal auth — username+password → project picker (amicode#194)" is the first bad commit. It rewrote runPasqalValidator / submitPasqalCredential (+207 lines in connections.ts).

                      Localized to one statement

                      Inserting an early return at successive points in the test body:

                      stop afterresult
                      const server = app()pass
                      const stub = stageStubValidator()pass
                      stub.scenario(0, validatorLine())pass
                      the POST /amicode/connections/credential + .json()CRASH

                      So the crash is inside the credential-submit route handler for id: "pasqal-cloud". The sibling test that submits id: "company-compute" passes — that path uses an HTTP stub, not the spawn path. Every other test in the file passes individually; skipping this one alone yields 553 pass / 3 skip / 0 fail across all 63 files in test/server/.

                      Ruled out

                      • OOM — see above.
                      • A larger runner — memory was never the constraint. Also unavailable: org is plan=free, GET /orgs/harmoniqs/actions/hosted-runners404 GitHub hosted runners are not supported for this organization.
                      • Upgrading Bunbun-v1.3.14 is the current release; packageManager already pins it and upstream sst/opencode pins the same.
                      • return inside try/finally467fb15cf refactored runPasqalValidator from assign-then-return into return directly inside try with a mutating finally. Hoisting it back out does not fix the crash. Tested.
                      • bun-spawning-bun by itself — the harness sets AMICO_PYTHON = process.execPath, so the real spawnPasqalValidator spawns bun to run a generated .mjs. A standalone 20-iteration bun-spawns-bun-mjs test passes cleanly. The crash needs the Effect/route context.

                      Open — and it gates the amicode.10 tag

                      Unknown whether production is affected. The test drives the real spawn path with bun standing in as the interpreter; production spawns a real Python interpreter. So this may be a Bun bug reachable only under the test's interpreter substitution, or it may be a genuine fault in the rewritten submit path that Python would also hit. Not yet determined.

                      Until that is settled, v1.17.3-amicode.10 should not be cut on the assumption this is test-only.

                      cc @kate467fb15cf is yours; you likely have the fastest read on what changed in the submit path.

                      Found while establishing a CI baseline for #2 / #79 — this went unnoticed for 6 days because the fork's workflows request blacksmith-4vcpu-* runners the org has none of, so no test job has ever run here.

                      Metadata

                      Metadata

                      Assignees

                      No one assigned

                        Labels

                        No labels
                        No labels

                        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

                          REGRESSION: POST /amicode/connections/credential (pasqal-cloud) segfaults Bun — bisected to 467fb15cf #82

                          Description

                          @jack-champagne

                          Rewritten. The first version of this issue concluded "latent Bun bug, skip the test." That was wrong. The test passed six days ago and a specific commit broke it. Details below.

                          Not an OOM

                          The unit (linux) job dies with exit code 137 and turbo labels it "likely due to running out of memory." That label is boilerplate turbo prints for any signal-killed child. Memory is not involved:

                          Elapsed: 1498ms | RSS: 0.15GB | Peak: 0.37GB | Faults: 0 | Machine: 32.38GB
                          panic(main thread): Segmentation fault at address 0x0
                          

                          0.37 GB peak on a 32 GB machine, zero faults, dead in 1.5 s. SIGILL is Bun's crash handler trapping after the panic; 137 is turbo relaying it.

                          It is a regression, not latent debt

                          Test: test/server/amicode-connections-routes.test.ts:335
                          "full lifecycle: submit(valid) → connected + devices; revalidate never respawns; disconnect scrubs"

                          The test file is unchanged since 2026-07-20. Bun has been pinned at 1.3.14 since 2026-05-18. Only connections.ts moved underneath it. Bisected by running that one test at each commit that touched connections.ts:

                          commitdateresult
                          85922e1762026-07-201 pass
                          3e4b372982026-07-211 pass
                          467fb15cf2026-07-21CRASH
                          8c6dd69402026-07-27CRASH
                          f43233e68 (tip)2026-07-27CRASH

                          467fb15cf — "feat: two-step Pasqal auth — username+password → project picker (amicode#194)" is the first bad commit. It rewrote runPasqalValidator / submitPasqalCredential (+207 lines in connections.ts).

                          Localized to one statement

                          Inserting an early return at successive points in the test body:

                          stop afterresult
                          const server = app()pass
                          const stub = stageStubValidator()pass
                          stub.scenario(0, validatorLine())pass
                          the POST /amicode/connections/credential + .json()CRASH

                          So the crash is inside the credential-submit route handler for id: "pasqal-cloud". The sibling test that submits id: "company-compute" passes — that path uses an HTTP stub, not the spawn path. Every other test in the file passes individually; skipping this one alone yields 553 pass / 3 skip / 0 fail across all 63 files in test/server/.

                          Ruled out

                          • OOM — see above.
                          • A larger runner — memory was never the constraint. Also unavailable: org is plan=free, GET /orgs/harmoniqs/actions/hosted-runners404 GitHub hosted runners are not supported for this organization.
                          • Upgrading Bunbun-v1.3.14 is the current release; packageManager already pins it and upstream sst/opencode pins the same.
                          • return inside try/finally467fb15cf refactored runPasqalValidator from assign-then-return into return directly inside try with a mutating finally. Hoisting it back out does not fix the crash. Tested.
                          • bun-spawning-bun by itself — the harness sets AMICO_PYTHON = process.execPath, so the real spawnPasqalValidator spawns bun to run a generated .mjs. A standalone 20-iteration bun-spawns-bun-mjs test passes cleanly. The crash needs the Effect/route context.

                          Open — and it gates the amicode.10 tag

                          Unknown whether production is affected. The test drives the real spawn path with bun standing in as the interpreter; production spawns a real Python interpreter. So this may be a Bun bug reachable only under the test's interpreter substitution, or it may be a genuine fault in the rewritten submit path that Python would also hit. Not yet determined.

                          Until that is settled, v1.17.3-amicode.10 should not be cut on the assumption this is test-only.

                          cc @kate467fb15cf is yours; you likely have the fastest read on what changed in the submit path.

                          Found while establishing a CI baseline for #2 / #79 — this went unnoticed for 6 days because the fork's workflows request blacksmith-4vcpu-* runners the org has none of, so no test job has ever run here.

                          Metadata

                          Metadata

                          Assignees

                          No one assigned

                            Labels

                            No labels
                            No labels

                            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

                              REGRESSION: POST /amicode/connections/credential (pasqal-cloud) segfaults Bun — bisected to 467fb15cf #82

                              Description

                              @jack-champagne

                              Rewritten. The first version of this issue concluded "latent Bun bug, skip the test." That was wrong. The test passed six days ago and a specific commit broke it. Details below.

                              Not an OOM

                              The unit (linux) job dies with exit code 137 and turbo labels it "likely due to running out of memory." That label is boilerplate turbo prints for any signal-killed child. Memory is not involved:

                              Elapsed: 1498ms | RSS: 0.15GB | Peak: 0.37GB | Faults: 0 | Machine: 32.38GB
                              panic(main thread): Segmentation fault at address 0x0
                              

                              0.37 GB peak on a 32 GB machine, zero faults, dead in 1.5 s. SIGILL is Bun's crash handler trapping after the panic; 137 is turbo relaying it.

                              It is a regression, not latent debt

                              Test: test/server/amicode-connections-routes.test.ts:335
                              "full lifecycle: submit(valid) → connected + devices; revalidate never respawns; disconnect scrubs"

                              The test file is unchanged since 2026-07-20. Bun has been pinned at 1.3.14 since 2026-05-18. Only connections.ts moved underneath it. Bisected by running that one test at each commit that touched connections.ts:

                              commitdateresult
                              85922e1762026-07-201 pass
                              3e4b372982026-07-211 pass
                              467fb15cf2026-07-21CRASH
                              8c6dd69402026-07-27CRASH
                              f43233e68 (tip)2026-07-27CRASH

                              467fb15cf — "feat: two-step Pasqal auth — username+password → project picker (amicode#194)" is the first bad commit. It rewrote runPasqalValidator / submitPasqalCredential (+207 lines in connections.ts).

                              Localized to one statement

                              Inserting an early return at successive points in the test body:

                              stop afterresult
                              const server = app()pass
                              const stub = stageStubValidator()pass
                              stub.scenario(0, validatorLine())pass
                              the POST /amicode/connections/credential + .json()CRASH

                              So the crash is inside the credential-submit route handler for id: "pasqal-cloud". The sibling test that submits id: "company-compute" passes — that path uses an HTTP stub, not the spawn path. Every other test in the file passes individually; skipping this one alone yields 553 pass / 3 skip / 0 fail across all 63 files in test/server/.

                              Ruled out

                              • OOM — see above.
                              • A larger runner — memory was never the constraint. Also unavailable: org is plan=free, GET /orgs/harmoniqs/actions/hosted-runners404 GitHub hosted runners are not supported for this organization.
                              • Upgrading Bunbun-v1.3.14 is the current release; packageManager already pins it and upstream sst/opencode pins the same.
                              • return inside try/finally467fb15cf refactored runPasqalValidator from assign-then-return into return directly inside try with a mutating finally. Hoisting it back out does not fix the crash. Tested.
                              • bun-spawning-bun by itself — the harness sets AMICO_PYTHON = process.execPath, so the real spawnPasqalValidator spawns bun to run a generated .mjs. A standalone 20-iteration bun-spawns-bun-mjs test passes cleanly. The crash needs the Effect/route context.

                              Open — and it gates the amicode.10 tag

                              Unknown whether production is affected. The test drives the real spawn path with bun standing in as the interpreter; production spawns a real Python interpreter. So this may be a Bun bug reachable only under the test's interpreter substitution, or it may be a genuine fault in the rewritten submit path that Python would also hit. Not yet determined.

                              Until that is settled, v1.17.3-amicode.10 should not be cut on the assumption this is test-only.

                              cc @kate467fb15cf is yours; you likely have the fastest read on what changed in the submit path.

                              Found while establishing a CI baseline for #2 / #79 — this went unnoticed for 6 days because the fork's workflows request blacksmith-4vcpu-* runners the org has none of, so no test job has ever run here.

                              Metadata

                              Metadata

                              Assignees

                              No one assigned

                                Labels

                                No labels
                                No labels

                                Type

                                No type

                                Projects

                                No projects

                                  Milestone

                                  No milestone

                                  Relationships

                                  None yet

                                  Development

                                  No branches or pull requests

                                  Issue actions