fix(coil): verify every packaged layer, and fail on layers the gate cannot see (#102) - #106

Merged
radroid merged 1 commit into
mainfrom
coil/verify-server-asar
Aug 14, 2026
Merged

fix(coil): verify every packaged layer, and fail on layers the gate cannot see (#102)#106
radroid merged 1 commit into
mainfrom
coil/verify-server-asar

Conversation

@radroid

Copy link
Copy Markdown
Owner

The 2026-08-14 sync imported upstream's Windows server.asar split, which broke the release's bundle-verify gate in both directions at once — and red release run 31837711136 (publish skipped, nothing shipped) is the proof:

  • The server graph silently stopped being scanned on Windows. The gate read only app.asar (+ .unpacked), which now holds just the Electron main-process bundle — the entire server closure was unverified, with no signal.
  • A shippable build was failed on a phantom.node-pty appears in main.cjs only inside embedded WSL heredoc strings (the regex scanner cannot tell), and it genuinely lives in the sidecar for the WSL path — but the sidecar was invisible, so the gate reported MODULE_NOT_FOUND.

Fix:

  • verifyPackagedApp merges a sibling resources/server.asar (+ its .unpacked) into the packaged view: sidecar bundles are scanned again, and packages that live there resolve.
  • New floor: every FIRST_PARTY_BUNDLE_DIRS entry must contribute ≥1 scanned bundle, else the gate fails with a topology-changed error. A layer the checker cannot see can never silently pass again (the fix(coil): restore the release, and make two of its checks capable of failing #97 lesson, second occurrence).
  • Tests: sidecar-merge case (also proves sidecar bundles are scanned, not merely stored) and invisible-layer case; three existing fixtures gained the now-required second bundle dir.
  • Corrects three comments still teaching the disproven GITHUB_REPOSITORY=\"\" silencing mechanism, and the workflow step's stale topology claim.

Verified: scripts suite 318/318 green (with env -u ELECTRON_RUN_AS_NODE — the session env otherwise contaminates spawned-command assertions), repo typecheck 0 errors, fmt clean.

Fixes#102.

🤖 Generated with Claude Code

…annot see (#102)
Upstream's Windows server.asar split (this sync) broke the release's
bundle-verify gate both ways at once: the server graph silently stopped
being scanned, and node-pty — mentioned only inside main.cjs's embedded
WSL heredoc scripts, loadable from the sidecar where it genuinely lives —
was reported unresolvable, failing a shippable build (release run
31837711136, publish skipped).
The view now merges a sibling resources/server.asar (+ .unpacked) into
the packaged-file map, so sidecar bundles are scanned again and sidecar
packages resolve. And every FIRST_PARTY_BUNDLE_DIRS entry must contribute
at least one scanned bundle — a packaging-topology change that hides a
layer is now an error instead of an empty green result, which is the
'guard that cannot fail' shape #97 already taught us once.
Also corrects the three comments still teaching the disproven
GITHUB_REPOSITORY="" mechanism (main.ts, UpdateToast.tsx) and the
workflow step's stale Windows-topology claim.
Fixes#102.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@radroid
radroid merged commit f95a770 into mainAug 14, 2026
1 check passed
@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: b6e40558-1994-4328-94ad-9516c67784fe

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@radroid
radroid deleted the coil/verify-server-asar branch August 14, 2026 20:41
radroid added a commit that referenced this pull request Aug 14, 2026
…hipped app cannot reach (#107)
The sidecar-aware gate (#102, PR #106) surfaced two more phantom
requirements on Windows: @effect/platform-bun and @effect/sql-sqlite-bun,
imported by the server bundle only behind Bun-runtime detection. The
shipped app always runs the server under Node (ELECTRON_RUN_AS_NODE), so
the branch is unreachable, and upstream's Windows sidecar deliberately
stages neither — their absence broke release run 31839839479 without
breaking anything real. The macOS artifact only carries them because its
staging installs the full production dependency set.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 17, 2026
…annot see (#102) (#106)
Upstream's Windows server.asar split (this sync) broke the release's
bundle-verify gate both ways at once: the server graph silently stopped
being scanned, and node-pty — mentioned only inside main.cjs's embedded
WSL heredoc scripts, loadable from the sidecar where it genuinely lives —
was reported unresolvable, failing a shippable build (release run
31837711136, publish skipped).
The view now merges a sibling resources/server.asar (+ .unpacked) into
the packaged-file map, so sidecar bundles are scanned again and sidecar
packages resolve. And every FIRST_PARTY_BUNDLE_DIRS entry must contribute
at least one scanned bundle — a packaging-topology change that hides a
layer is now an error instead of an empty green result, which is the
'guard that cannot fail' shape #97 already taught us once.
Also corrects the three comments still teaching the disproven
GITHUB_REPOSITORY="" mechanism (main.ts, UpdateToast.tsx) and the
workflow step's stale Windows-topology claim.
Fixes#102.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 17, 2026
…hipped app cannot reach (#107)
The sidecar-aware gate (#102, PR #106) surfaced two more phantom
requirements on Windows: @effect/platform-bun and @effect/sql-sqlite-bun,
imported by the server bundle only behind Bun-runtime detection. The
shipped app always runs the server under Node (ELECTRON_RUN_AS_NODE), so
the branch is unreachable, and upstream's Windows sidecar deliberately
stages neither — their absence broke release run 31839839479 without
breaking anything real. The macOS artifact only carries them because its
staging installs the full production dependency set.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 18, 2026
…annot see (#102) (#106)
Upstream's Windows server.asar split (this sync) broke the release's
bundle-verify gate both ways at once: the server graph silently stopped
being scanned, and node-pty — mentioned only inside main.cjs's embedded
WSL heredoc scripts, loadable from the sidecar where it genuinely lives —
was reported unresolvable, failing a shippable build (release run
31837711136, publish skipped).
The view now merges a sibling resources/server.asar (+ .unpacked) into
the packaged-file map, so sidecar bundles are scanned again and sidecar
packages resolve. And every FIRST_PARTY_BUNDLE_DIRS entry must contribute
at least one scanned bundle — a packaging-topology change that hides a
layer is now an error instead of an empty green result, which is the
'guard that cannot fail' shape #97 already taught us once.
Also corrects the three comments still teaching the disproven
GITHUB_REPOSITORY="" mechanism (main.ts, UpdateToast.tsx) and the
workflow step's stale Windows-topology claim.
Fixes#102.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 18, 2026
…hipped app cannot reach (#107)
The sidecar-aware gate (#102, PR #106) surfaced two more phantom
requirements on Windows: @effect/platform-bun and @effect/sql-sqlite-bun,
imported by the server bundle only behind Bun-runtime detection. The
shipped app always runs the server under Node (ELECTRON_RUN_AS_NODE), so
the branch is unreachable, and upstream's Windows sidecar deliberately
stages neither — their absence broke release run 31839839479 without
breaking anything real. The macOS artifact only carries them because its
staging installs the full production dependency set.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Release bundle verify checks the wrong layer on Windows since upstream's server.asar sidecar

1 participant

@radroid
, '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

fix(coil): verify every packaged layer, and fail on layers the gate cannot see (#102) - #106

Merged
radroid merged 1 commit into
mainfrom
coil/verify-server-asar
Aug 14, 2026
Merged

fix(coil): verify every packaged layer, and fail on layers the gate cannot see (#102)#106
radroid merged 1 commit into
mainfrom
coil/verify-server-asar

Conversation

@radroid

Copy link
Copy Markdown
Owner

The 2026-08-14 sync imported upstream's Windows server.asar split, which broke the release's bundle-verify gate in both directions at once — and red release run 31837711136 (publish skipped, nothing shipped) is the proof:

  • The server graph silently stopped being scanned on Windows. The gate read only app.asar (+ .unpacked), which now holds just the Electron main-process bundle — the entire server closure was unverified, with no signal.
  • A shippable build was failed on a phantom.node-pty appears in main.cjs only inside embedded WSL heredoc strings (the regex scanner cannot tell), and it genuinely lives in the sidecar for the WSL path — but the sidecar was invisible, so the gate reported MODULE_NOT_FOUND.

Fix:

  • verifyPackagedApp merges a sibling resources/server.asar (+ its .unpacked) into the packaged view: sidecar bundles are scanned again, and packages that live there resolve.
  • New floor: every FIRST_PARTY_BUNDLE_DIRS entry must contribute ≥1 scanned bundle, else the gate fails with a topology-changed error. A layer the checker cannot see can never silently pass again (the fix(coil): restore the release, and make two of its checks capable of failing #97 lesson, second occurrence).
  • Tests: sidecar-merge case (also proves sidecar bundles are scanned, not merely stored) and invisible-layer case; three existing fixtures gained the now-required second bundle dir.
  • Corrects three comments still teaching the disproven GITHUB_REPOSITORY=\"\" silencing mechanism, and the workflow step's stale topology claim.

Verified: scripts suite 318/318 green (with env -u ELECTRON_RUN_AS_NODE — the session env otherwise contaminates spawned-command assertions), repo typecheck 0 errors, fmt clean.

Fixes#102.

🤖 Generated with Claude Code

…annot see (#102)
Upstream's Windows server.asar split (this sync) broke the release's
bundle-verify gate both ways at once: the server graph silently stopped
being scanned, and node-pty — mentioned only inside main.cjs's embedded
WSL heredoc scripts, loadable from the sidecar where it genuinely lives —
was reported unresolvable, failing a shippable build (release run
31837711136, publish skipped).
The view now merges a sibling resources/server.asar (+ .unpacked) into
the packaged-file map, so sidecar bundles are scanned again and sidecar
packages resolve. And every FIRST_PARTY_BUNDLE_DIRS entry must contribute
at least one scanned bundle — a packaging-topology change that hides a
layer is now an error instead of an empty green result, which is the
'guard that cannot fail' shape #97 already taught us once.
Also corrects the three comments still teaching the disproven
GITHUB_REPOSITORY="" mechanism (main.ts, UpdateToast.tsx) and the
workflow step's stale Windows-topology claim.
Fixes#102.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@radroid
radroid merged commit f95a770 into mainAug 14, 2026
1 check passed
@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: b6e40558-1994-4328-94ad-9516c67784fe

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@radroid
radroid deleted the coil/verify-server-asar branch August 14, 2026 20:41
radroid added a commit that referenced this pull request Aug 14, 2026
…hipped app cannot reach (#107)
The sidecar-aware gate (#102, PR #106) surfaced two more phantom
requirements on Windows: @effect/platform-bun and @effect/sql-sqlite-bun,
imported by the server bundle only behind Bun-runtime detection. The
shipped app always runs the server under Node (ELECTRON_RUN_AS_NODE), so
the branch is unreachable, and upstream's Windows sidecar deliberately
stages neither — their absence broke release run 31839839479 without
breaking anything real. The macOS artifact only carries them because its
staging installs the full production dependency set.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 17, 2026
…annot see (#102) (#106)
Upstream's Windows server.asar split (this sync) broke the release's
bundle-verify gate both ways at once: the server graph silently stopped
being scanned, and node-pty — mentioned only inside main.cjs's embedded
WSL heredoc scripts, loadable from the sidecar where it genuinely lives —
was reported unresolvable, failing a shippable build (release run
31837711136, publish skipped).
The view now merges a sibling resources/server.asar (+ .unpacked) into
the packaged-file map, so sidecar bundles are scanned again and sidecar
packages resolve. And every FIRST_PARTY_BUNDLE_DIRS entry must contribute
at least one scanned bundle — a packaging-topology change that hides a
layer is now an error instead of an empty green result, which is the
'guard that cannot fail' shape #97 already taught us once.
Also corrects the three comments still teaching the disproven
GITHUB_REPOSITORY="" mechanism (main.ts, UpdateToast.tsx) and the
workflow step's stale Windows-topology claim.
Fixes#102.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 17, 2026
…hipped app cannot reach (#107)
The sidecar-aware gate (#102, PR #106) surfaced two more phantom
requirements on Windows: @effect/platform-bun and @effect/sql-sqlite-bun,
imported by the server bundle only behind Bun-runtime detection. The
shipped app always runs the server under Node (ELECTRON_RUN_AS_NODE), so
the branch is unreachable, and upstream's Windows sidecar deliberately
stages neither — their absence broke release run 31839839479 without
breaking anything real. The macOS artifact only carries them because its
staging installs the full production dependency set.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 18, 2026
…annot see (#102) (#106)
Upstream's Windows server.asar split (this sync) broke the release's
bundle-verify gate both ways at once: the server graph silently stopped
being scanned, and node-pty — mentioned only inside main.cjs's embedded
WSL heredoc scripts, loadable from the sidecar where it genuinely lives —
was reported unresolvable, failing a shippable build (release run
31837711136, publish skipped).
The view now merges a sibling resources/server.asar (+ .unpacked) into
the packaged-file map, so sidecar bundles are scanned again and sidecar
packages resolve. And every FIRST_PARTY_BUNDLE_DIRS entry must contribute
at least one scanned bundle — a packaging-topology change that hides a
layer is now an error instead of an empty green result, which is the
'guard that cannot fail' shape #97 already taught us once.
Also corrects the three comments still teaching the disproven
GITHUB_REPOSITORY="" mechanism (main.ts, UpdateToast.tsx) and the
workflow step's stale Windows-topology claim.
Fixes#102.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 18, 2026
…hipped app cannot reach (#107)
The sidecar-aware gate (#102, PR #106) surfaced two more phantom
requirements on Windows: @effect/platform-bun and @effect/sql-sqlite-bun,
imported by the server bundle only behind Bun-runtime detection. The
shipped app always runs the server under Node (ELECTRON_RUN_AS_NODE), so
the branch is unreachable, and upstream's Windows sidecar deliberately
stages neither — their absence broke release run 31839839479 without
breaking anything real. The macOS artifact only carries them because its
staging installs the full production dependency set.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Release bundle verify checks the wrong layer on Windows since upstream's server.asar sidecar

1 participant

@radroid
, '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

fix(coil): verify every packaged layer, and fail on layers the gate cannot see (#102) - #106

Merged
radroid merged 1 commit into
mainfrom
coil/verify-server-asar
Aug 14, 2026
Merged

fix(coil): verify every packaged layer, and fail on layers the gate cannot see (#102)#106
radroid merged 1 commit into
mainfrom
coil/verify-server-asar

Conversation

@radroid

Copy link
Copy Markdown
Owner

The 2026-08-14 sync imported upstream's Windows server.asar split, which broke the release's bundle-verify gate in both directions at once — and red release run 31837711136 (publish skipped, nothing shipped) is the proof:

  • The server graph silently stopped being scanned on Windows. The gate read only app.asar (+ .unpacked), which now holds just the Electron main-process bundle — the entire server closure was unverified, with no signal.
  • A shippable build was failed on a phantom.node-pty appears in main.cjs only inside embedded WSL heredoc strings (the regex scanner cannot tell), and it genuinely lives in the sidecar for the WSL path — but the sidecar was invisible, so the gate reported MODULE_NOT_FOUND.

Fix:

  • verifyPackagedApp merges a sibling resources/server.asar (+ its .unpacked) into the packaged view: sidecar bundles are scanned again, and packages that live there resolve.
  • New floor: every FIRST_PARTY_BUNDLE_DIRS entry must contribute ≥1 scanned bundle, else the gate fails with a topology-changed error. A layer the checker cannot see can never silently pass again (the fix(coil): restore the release, and make two of its checks capable of failing #97 lesson, second occurrence).
  • Tests: sidecar-merge case (also proves sidecar bundles are scanned, not merely stored) and invisible-layer case; three existing fixtures gained the now-required second bundle dir.
  • Corrects three comments still teaching the disproven GITHUB_REPOSITORY=\"\" silencing mechanism, and the workflow step's stale topology claim.

Verified: scripts suite 318/318 green (with env -u ELECTRON_RUN_AS_NODE — the session env otherwise contaminates spawned-command assertions), repo typecheck 0 errors, fmt clean.

Fixes#102.

🤖 Generated with Claude Code

…annot see (#102)
Upstream's Windows server.asar split (this sync) broke the release's
bundle-verify gate both ways at once: the server graph silently stopped
being scanned, and node-pty — mentioned only inside main.cjs's embedded
WSL heredoc scripts, loadable from the sidecar where it genuinely lives —
was reported unresolvable, failing a shippable build (release run
31837711136, publish skipped).
The view now merges a sibling resources/server.asar (+ .unpacked) into
the packaged-file map, so sidecar bundles are scanned again and sidecar
packages resolve. And every FIRST_PARTY_BUNDLE_DIRS entry must contribute
at least one scanned bundle — a packaging-topology change that hides a
layer is now an error instead of an empty green result, which is the
'guard that cannot fail' shape #97 already taught us once.
Also corrects the three comments still teaching the disproven
GITHUB_REPOSITORY="" mechanism (main.ts, UpdateToast.tsx) and the
workflow step's stale Windows-topology claim.
Fixes#102.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@radroid
radroid merged commit f95a770 into mainAug 14, 2026
1 check passed
@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: b6e40558-1994-4328-94ad-9516c67784fe

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@radroid
radroid deleted the coil/verify-server-asar branch August 14, 2026 20:41
radroid added a commit that referenced this pull request Aug 14, 2026
…hipped app cannot reach (#107)
The sidecar-aware gate (#102, PR #106) surfaced two more phantom
requirements on Windows: @effect/platform-bun and @effect/sql-sqlite-bun,
imported by the server bundle only behind Bun-runtime detection. The
shipped app always runs the server under Node (ELECTRON_RUN_AS_NODE), so
the branch is unreachable, and upstream's Windows sidecar deliberately
stages neither — their absence broke release run 31839839479 without
breaking anything real. The macOS artifact only carries them because its
staging installs the full production dependency set.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 17, 2026
…annot see (#102) (#106)
Upstream's Windows server.asar split (this sync) broke the release's
bundle-verify gate both ways at once: the server graph silently stopped
being scanned, and node-pty — mentioned only inside main.cjs's embedded
WSL heredoc scripts, loadable from the sidecar where it genuinely lives —
was reported unresolvable, failing a shippable build (release run
31837711136, publish skipped).
The view now merges a sibling resources/server.asar (+ .unpacked) into
the packaged-file map, so sidecar bundles are scanned again and sidecar
packages resolve. And every FIRST_PARTY_BUNDLE_DIRS entry must contribute
at least one scanned bundle — a packaging-topology change that hides a
layer is now an error instead of an empty green result, which is the
'guard that cannot fail' shape #97 already taught us once.
Also corrects the three comments still teaching the disproven
GITHUB_REPOSITORY="" mechanism (main.ts, UpdateToast.tsx) and the
workflow step's stale Windows-topology claim.
Fixes#102.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 17, 2026
…hipped app cannot reach (#107)
The sidecar-aware gate (#102, PR #106) surfaced two more phantom
requirements on Windows: @effect/platform-bun and @effect/sql-sqlite-bun,
imported by the server bundle only behind Bun-runtime detection. The
shipped app always runs the server under Node (ELECTRON_RUN_AS_NODE), so
the branch is unreachable, and upstream's Windows sidecar deliberately
stages neither — their absence broke release run 31839839479 without
breaking anything real. The macOS artifact only carries them because its
staging installs the full production dependency set.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 18, 2026
…annot see (#102) (#106)
Upstream's Windows server.asar split (this sync) broke the release's
bundle-verify gate both ways at once: the server graph silently stopped
being scanned, and node-pty — mentioned only inside main.cjs's embedded
WSL heredoc scripts, loadable from the sidecar where it genuinely lives —
was reported unresolvable, failing a shippable build (release run
31837711136, publish skipped).
The view now merges a sibling resources/server.asar (+ .unpacked) into
the packaged-file map, so sidecar bundles are scanned again and sidecar
packages resolve. And every FIRST_PARTY_BUNDLE_DIRS entry must contribute
at least one scanned bundle — a packaging-topology change that hides a
layer is now an error instead of an empty green result, which is the
'guard that cannot fail' shape #97 already taught us once.
Also corrects the three comments still teaching the disproven
GITHUB_REPOSITORY="" mechanism (main.ts, UpdateToast.tsx) and the
workflow step's stale Windows-topology claim.
Fixes#102.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 18, 2026
…hipped app cannot reach (#107)
The sidecar-aware gate (#102, PR #106) surfaced two more phantom
requirements on Windows: @effect/platform-bun and @effect/sql-sqlite-bun,
imported by the server bundle only behind Bun-runtime detection. The
shipped app always runs the server under Node (ELECTRON_RUN_AS_NODE), so
the branch is unreachable, and upstream's Windows sidecar deliberately
stages neither — their absence broke release run 31839839479 without
breaking anything real. The macOS artifact only carries them because its
staging installs the full production dependency set.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Release bundle verify checks the wrong layer on Windows since upstream's server.asar sidecar

1 participant

@radroid
, '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

fix(coil): verify every packaged layer, and fail on layers the gate cannot see (#102) - #106

Merged
radroid merged 1 commit into
mainfrom
coil/verify-server-asar
Aug 14, 2026
Merged

fix(coil): verify every packaged layer, and fail on layers the gate cannot see (#102)#106
radroid merged 1 commit into
mainfrom
coil/verify-server-asar

Conversation

@radroid

Copy link
Copy Markdown
Owner

The 2026-08-14 sync imported upstream's Windows server.asar split, which broke the release's bundle-verify gate in both directions at once — and red release run 31837711136 (publish skipped, nothing shipped) is the proof:

  • The server graph silently stopped being scanned on Windows. The gate read only app.asar (+ .unpacked), which now holds just the Electron main-process bundle — the entire server closure was unverified, with no signal.
  • A shippable build was failed on a phantom.node-pty appears in main.cjs only inside embedded WSL heredoc strings (the regex scanner cannot tell), and it genuinely lives in the sidecar for the WSL path — but the sidecar was invisible, so the gate reported MODULE_NOT_FOUND.

Fix:

  • verifyPackagedApp merges a sibling resources/server.asar (+ its .unpacked) into the packaged view: sidecar bundles are scanned again, and packages that live there resolve.
  • New floor: every FIRST_PARTY_BUNDLE_DIRS entry must contribute ≥1 scanned bundle, else the gate fails with a topology-changed error. A layer the checker cannot see can never silently pass again (the fix(coil): restore the release, and make two of its checks capable of failing #97 lesson, second occurrence).
  • Tests: sidecar-merge case (also proves sidecar bundles are scanned, not merely stored) and invisible-layer case; three existing fixtures gained the now-required second bundle dir.
  • Corrects three comments still teaching the disproven GITHUB_REPOSITORY=\"\" silencing mechanism, and the workflow step's stale topology claim.

Verified: scripts suite 318/318 green (with env -u ELECTRON_RUN_AS_NODE — the session env otherwise contaminates spawned-command assertions), repo typecheck 0 errors, fmt clean.

Fixes#102.

🤖 Generated with Claude Code

…annot see (#102)
Upstream's Windows server.asar split (this sync) broke the release's
bundle-verify gate both ways at once: the server graph silently stopped
being scanned, and node-pty — mentioned only inside main.cjs's embedded
WSL heredoc scripts, loadable from the sidecar where it genuinely lives —
was reported unresolvable, failing a shippable build (release run
31837711136, publish skipped).
The view now merges a sibling resources/server.asar (+ .unpacked) into
the packaged-file map, so sidecar bundles are scanned again and sidecar
packages resolve. And every FIRST_PARTY_BUNDLE_DIRS entry must contribute
at least one scanned bundle — a packaging-topology change that hides a
layer is now an error instead of an empty green result, which is the
'guard that cannot fail' shape #97 already taught us once.
Also corrects the three comments still teaching the disproven
GITHUB_REPOSITORY="" mechanism (main.ts, UpdateToast.tsx) and the
workflow step's stale Windows-topology claim.
Fixes#102.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@radroid
radroid merged commit f95a770 into mainAug 14, 2026
1 check passed
@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: b6e40558-1994-4328-94ad-9516c67784fe

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@radroid
radroid deleted the coil/verify-server-asar branch August 14, 2026 20:41
radroid added a commit that referenced this pull request Aug 14, 2026
…hipped app cannot reach (#107)
The sidecar-aware gate (#102, PR #106) surfaced two more phantom
requirements on Windows: @effect/platform-bun and @effect/sql-sqlite-bun,
imported by the server bundle only behind Bun-runtime detection. The
shipped app always runs the server under Node (ELECTRON_RUN_AS_NODE), so
the branch is unreachable, and upstream's Windows sidecar deliberately
stages neither — their absence broke release run 31839839479 without
breaking anything real. The macOS artifact only carries them because its
staging installs the full production dependency set.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 17, 2026
…annot see (#102) (#106)
Upstream's Windows server.asar split (this sync) broke the release's
bundle-verify gate both ways at once: the server graph silently stopped
being scanned, and node-pty — mentioned only inside main.cjs's embedded
WSL heredoc scripts, loadable from the sidecar where it genuinely lives —
was reported unresolvable, failing a shippable build (release run
31837711136, publish skipped).
The view now merges a sibling resources/server.asar (+ .unpacked) into
the packaged-file map, so sidecar bundles are scanned again and sidecar
packages resolve. And every FIRST_PARTY_BUNDLE_DIRS entry must contribute
at least one scanned bundle — a packaging-topology change that hides a
layer is now an error instead of an empty green result, which is the
'guard that cannot fail' shape #97 already taught us once.
Also corrects the three comments still teaching the disproven
GITHUB_REPOSITORY="" mechanism (main.ts, UpdateToast.tsx) and the
workflow step's stale Windows-topology claim.
Fixes#102.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 17, 2026
…hipped app cannot reach (#107)
The sidecar-aware gate (#102, PR #106) surfaced two more phantom
requirements on Windows: @effect/platform-bun and @effect/sql-sqlite-bun,
imported by the server bundle only behind Bun-runtime detection. The
shipped app always runs the server under Node (ELECTRON_RUN_AS_NODE), so
the branch is unreachable, and upstream's Windows sidecar deliberately
stages neither — their absence broke release run 31839839479 without
breaking anything real. The macOS artifact only carries them because its
staging installs the full production dependency set.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 18, 2026
…annot see (#102) (#106)
Upstream's Windows server.asar split (this sync) broke the release's
bundle-verify gate both ways at once: the server graph silently stopped
being scanned, and node-pty — mentioned only inside main.cjs's embedded
WSL heredoc scripts, loadable from the sidecar where it genuinely lives —
was reported unresolvable, failing a shippable build (release run
31837711136, publish skipped).
The view now merges a sibling resources/server.asar (+ .unpacked) into
the packaged-file map, so sidecar bundles are scanned again and sidecar
packages resolve. And every FIRST_PARTY_BUNDLE_DIRS entry must contribute
at least one scanned bundle — a packaging-topology change that hides a
layer is now an error instead of an empty green result, which is the
'guard that cannot fail' shape #97 already taught us once.
Also corrects the three comments still teaching the disproven
GITHUB_REPOSITORY="" mechanism (main.ts, UpdateToast.tsx) and the
workflow step's stale Windows-topology claim.
Fixes#102.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 18, 2026
…hipped app cannot reach (#107)
The sidecar-aware gate (#102, PR #106) surfaced two more phantom
requirements on Windows: @effect/platform-bun and @effect/sql-sqlite-bun,
imported by the server bundle only behind Bun-runtime detection. The
shipped app always runs the server under Node (ELECTRON_RUN_AS_NODE), so
the branch is unreachable, and upstream's Windows sidecar deliberately
stages neither — their absence broke release run 31839839479 without
breaking anything real. The macOS artifact only carries them because its
staging installs the full production dependency set.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Release bundle verify checks the wrong layer on Windows since upstream's server.asar sidecar

1 participant

@radroid
, '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

fix(coil): verify every packaged layer, and fail on layers the gate cannot see (#102) - #106

Merged
radroid merged 1 commit into
mainfrom
coil/verify-server-asar
Aug 14, 2026
Merged

fix(coil): verify every packaged layer, and fail on layers the gate cannot see (#102)#106
radroid merged 1 commit into
mainfrom
coil/verify-server-asar

Conversation

@radroid

Copy link
Copy Markdown
Owner

The 2026-08-14 sync imported upstream's Windows server.asar split, which broke the release's bundle-verify gate in both directions at once — and red release run 31837711136 (publish skipped, nothing shipped) is the proof:

  • The server graph silently stopped being scanned on Windows. The gate read only app.asar (+ .unpacked), which now holds just the Electron main-process bundle — the entire server closure was unverified, with no signal.
  • A shippable build was failed on a phantom.node-pty appears in main.cjs only inside embedded WSL heredoc strings (the regex scanner cannot tell), and it genuinely lives in the sidecar for the WSL path — but the sidecar was invisible, so the gate reported MODULE_NOT_FOUND.

Fix:

  • verifyPackagedApp merges a sibling resources/server.asar (+ its .unpacked) into the packaged view: sidecar bundles are scanned again, and packages that live there resolve.
  • New floor: every FIRST_PARTY_BUNDLE_DIRS entry must contribute ≥1 scanned bundle, else the gate fails with a topology-changed error. A layer the checker cannot see can never silently pass again (the fix(coil): restore the release, and make two of its checks capable of failing #97 lesson, second occurrence).
  • Tests: sidecar-merge case (also proves sidecar bundles are scanned, not merely stored) and invisible-layer case; three existing fixtures gained the now-required second bundle dir.
  • Corrects three comments still teaching the disproven GITHUB_REPOSITORY=\"\" silencing mechanism, and the workflow step's stale topology claim.

Verified: scripts suite 318/318 green (with env -u ELECTRON_RUN_AS_NODE — the session env otherwise contaminates spawned-command assertions), repo typecheck 0 errors, fmt clean.

Fixes#102.

🤖 Generated with Claude Code

…annot see (#102)
Upstream's Windows server.asar split (this sync) broke the release's
bundle-verify gate both ways at once: the server graph silently stopped
being scanned, and node-pty — mentioned only inside main.cjs's embedded
WSL heredoc scripts, loadable from the sidecar where it genuinely lives —
was reported unresolvable, failing a shippable build (release run
31837711136, publish skipped).
The view now merges a sibling resources/server.asar (+ .unpacked) into
the packaged-file map, so sidecar bundles are scanned again and sidecar
packages resolve. And every FIRST_PARTY_BUNDLE_DIRS entry must contribute
at least one scanned bundle — a packaging-topology change that hides a
layer is now an error instead of an empty green result, which is the
'guard that cannot fail' shape #97 already taught us once.
Also corrects the three comments still teaching the disproven
GITHUB_REPOSITORY="" mechanism (main.ts, UpdateToast.tsx) and the
workflow step's stale Windows-topology claim.
Fixes#102.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@radroid
radroid merged commit f95a770 into mainAug 14, 2026
1 check passed
@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: b6e40558-1994-4328-94ad-9516c67784fe

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@radroid
radroid deleted the coil/verify-server-asar branch August 14, 2026 20:41
radroid added a commit that referenced this pull request Aug 14, 2026
…hipped app cannot reach (#107)
The sidecar-aware gate (#102, PR #106) surfaced two more phantom
requirements on Windows: @effect/platform-bun and @effect/sql-sqlite-bun,
imported by the server bundle only behind Bun-runtime detection. The
shipped app always runs the server under Node (ELECTRON_RUN_AS_NODE), so
the branch is unreachable, and upstream's Windows sidecar deliberately
stages neither — their absence broke release run 31839839479 without
breaking anything real. The macOS artifact only carries them because its
staging installs the full production dependency set.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 17, 2026
…annot see (#102) (#106)
Upstream's Windows server.asar split (this sync) broke the release's
bundle-verify gate both ways at once: the server graph silently stopped
being scanned, and node-pty — mentioned only inside main.cjs's embedded
WSL heredoc scripts, loadable from the sidecar where it genuinely lives —
was reported unresolvable, failing a shippable build (release run
31837711136, publish skipped).
The view now merges a sibling resources/server.asar (+ .unpacked) into
the packaged-file map, so sidecar bundles are scanned again and sidecar
packages resolve. And every FIRST_PARTY_BUNDLE_DIRS entry must contribute
at least one scanned bundle — a packaging-topology change that hides a
layer is now an error instead of an empty green result, which is the
'guard that cannot fail' shape #97 already taught us once.
Also corrects the three comments still teaching the disproven
GITHUB_REPOSITORY="" mechanism (main.ts, UpdateToast.tsx) and the
workflow step's stale Windows-topology claim.
Fixes#102.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 17, 2026
…hipped app cannot reach (#107)
The sidecar-aware gate (#102, PR #106) surfaced two more phantom
requirements on Windows: @effect/platform-bun and @effect/sql-sqlite-bun,
imported by the server bundle only behind Bun-runtime detection. The
shipped app always runs the server under Node (ELECTRON_RUN_AS_NODE), so
the branch is unreachable, and upstream's Windows sidecar deliberately
stages neither — their absence broke release run 31839839479 without
breaking anything real. The macOS artifact only carries them because its
staging installs the full production dependency set.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 18, 2026
…annot see (#102) (#106)
Upstream's Windows server.asar split (this sync) broke the release's
bundle-verify gate both ways at once: the server graph silently stopped
being scanned, and node-pty — mentioned only inside main.cjs's embedded
WSL heredoc scripts, loadable from the sidecar where it genuinely lives —
was reported unresolvable, failing a shippable build (release run
31837711136, publish skipped).
The view now merges a sibling resources/server.asar (+ .unpacked) into
the packaged-file map, so sidecar bundles are scanned again and sidecar
packages resolve. And every FIRST_PARTY_BUNDLE_DIRS entry must contribute
at least one scanned bundle — a packaging-topology change that hides a
layer is now an error instead of an empty green result, which is the
'guard that cannot fail' shape #97 already taught us once.
Also corrects the three comments still teaching the disproven
GITHUB_REPOSITORY="" mechanism (main.ts, UpdateToast.tsx) and the
workflow step's stale Windows-topology claim.
Fixes#102.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 18, 2026
…hipped app cannot reach (#107)
The sidecar-aware gate (#102, PR #106) surfaced two more phantom
requirements on Windows: @effect/platform-bun and @effect/sql-sqlite-bun,
imported by the server bundle only behind Bun-runtime detection. The
shipped app always runs the server under Node (ELECTRON_RUN_AS_NODE), so
the branch is unreachable, and upstream's Windows sidecar deliberately
stages neither — their absence broke release run 31839839479 without
breaking anything real. The macOS artifact only carries them because its
staging installs the full production dependency set.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Release bundle verify checks the wrong layer on Windows since upstream's server.asar sidecar

1 participant

@radroid
, '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

fix(coil): verify every packaged layer, and fail on layers the gate cannot see (#102) - #106

Merged
radroid merged 1 commit into
mainfrom
coil/verify-server-asar
Aug 14, 2026
Merged

fix(coil): verify every packaged layer, and fail on layers the gate cannot see (#102)#106
radroid merged 1 commit into
mainfrom
coil/verify-server-asar

Conversation

@radroid

Copy link
Copy Markdown
Owner

The 2026-08-14 sync imported upstream's Windows server.asar split, which broke the release's bundle-verify gate in both directions at once — and red release run 31837711136 (publish skipped, nothing shipped) is the proof:

  • The server graph silently stopped being scanned on Windows. The gate read only app.asar (+ .unpacked), which now holds just the Electron main-process bundle — the entire server closure was unverified, with no signal.
  • A shippable build was failed on a phantom.node-pty appears in main.cjs only inside embedded WSL heredoc strings (the regex scanner cannot tell), and it genuinely lives in the sidecar for the WSL path — but the sidecar was invisible, so the gate reported MODULE_NOT_FOUND.

Fix:

  • verifyPackagedApp merges a sibling resources/server.asar (+ its .unpacked) into the packaged view: sidecar bundles are scanned again, and packages that live there resolve.
  • New floor: every FIRST_PARTY_BUNDLE_DIRS entry must contribute ≥1 scanned bundle, else the gate fails with a topology-changed error. A layer the checker cannot see can never silently pass again (the fix(coil): restore the release, and make two of its checks capable of failing #97 lesson, second occurrence).
  • Tests: sidecar-merge case (also proves sidecar bundles are scanned, not merely stored) and invisible-layer case; three existing fixtures gained the now-required second bundle dir.
  • Corrects three comments still teaching the disproven GITHUB_REPOSITORY=\"\" silencing mechanism, and the workflow step's stale topology claim.

Verified: scripts suite 318/318 green (with env -u ELECTRON_RUN_AS_NODE — the session env otherwise contaminates spawned-command assertions), repo typecheck 0 errors, fmt clean.

Fixes#102.

🤖 Generated with Claude Code

…annot see (#102)
Upstream's Windows server.asar split (this sync) broke the release's
bundle-verify gate both ways at once: the server graph silently stopped
being scanned, and node-pty — mentioned only inside main.cjs's embedded
WSL heredoc scripts, loadable from the sidecar where it genuinely lives —
was reported unresolvable, failing a shippable build (release run
31837711136, publish skipped).
The view now merges a sibling resources/server.asar (+ .unpacked) into
the packaged-file map, so sidecar bundles are scanned again and sidecar
packages resolve. And every FIRST_PARTY_BUNDLE_DIRS entry must contribute
at least one scanned bundle — a packaging-topology change that hides a
layer is now an error instead of an empty green result, which is the
'guard that cannot fail' shape #97 already taught us once.
Also corrects the three comments still teaching the disproven
GITHUB_REPOSITORY="" mechanism (main.ts, UpdateToast.tsx) and the
workflow step's stale Windows-topology claim.
Fixes#102.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@radroid
radroid merged commit f95a770 into mainAug 14, 2026
1 check passed
@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: b6e40558-1994-4328-94ad-9516c67784fe

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@radroid
radroid deleted the coil/verify-server-asar branch August 14, 2026 20:41
radroid added a commit that referenced this pull request Aug 14, 2026
…hipped app cannot reach (#107)
The sidecar-aware gate (#102, PR #106) surfaced two more phantom
requirements on Windows: @effect/platform-bun and @effect/sql-sqlite-bun,
imported by the server bundle only behind Bun-runtime detection. The
shipped app always runs the server under Node (ELECTRON_RUN_AS_NODE), so
the branch is unreachable, and upstream's Windows sidecar deliberately
stages neither — their absence broke release run 31839839479 without
breaking anything real. The macOS artifact only carries them because its
staging installs the full production dependency set.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 17, 2026
…annot see (#102) (#106)
Upstream's Windows server.asar split (this sync) broke the release's
bundle-verify gate both ways at once: the server graph silently stopped
being scanned, and node-pty — mentioned only inside main.cjs's embedded
WSL heredoc scripts, loadable from the sidecar where it genuinely lives —
was reported unresolvable, failing a shippable build (release run
31837711136, publish skipped).
The view now merges a sibling resources/server.asar (+ .unpacked) into
the packaged-file map, so sidecar bundles are scanned again and sidecar
packages resolve. And every FIRST_PARTY_BUNDLE_DIRS entry must contribute
at least one scanned bundle — a packaging-topology change that hides a
layer is now an error instead of an empty green result, which is the
'guard that cannot fail' shape #97 already taught us once.
Also corrects the three comments still teaching the disproven
GITHUB_REPOSITORY="" mechanism (main.ts, UpdateToast.tsx) and the
workflow step's stale Windows-topology claim.
Fixes#102.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 17, 2026
…hipped app cannot reach (#107)
The sidecar-aware gate (#102, PR #106) surfaced two more phantom
requirements on Windows: @effect/platform-bun and @effect/sql-sqlite-bun,
imported by the server bundle only behind Bun-runtime detection. The
shipped app always runs the server under Node (ELECTRON_RUN_AS_NODE), so
the branch is unreachable, and upstream's Windows sidecar deliberately
stages neither — their absence broke release run 31839839479 without
breaking anything real. The macOS artifact only carries them because its
staging installs the full production dependency set.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 18, 2026
…annot see (#102) (#106)
Upstream's Windows server.asar split (this sync) broke the release's
bundle-verify gate both ways at once: the server graph silently stopped
being scanned, and node-pty — mentioned only inside main.cjs's embedded
WSL heredoc scripts, loadable from the sidecar where it genuinely lives —
was reported unresolvable, failing a shippable build (release run
31837711136, publish skipped).
The view now merges a sibling resources/server.asar (+ .unpacked) into
the packaged-file map, so sidecar bundles are scanned again and sidecar
packages resolve. And every FIRST_PARTY_BUNDLE_DIRS entry must contribute
at least one scanned bundle — a packaging-topology change that hides a
layer is now an error instead of an empty green result, which is the
'guard that cannot fail' shape #97 already taught us once.
Also corrects the three comments still teaching the disproven
GITHUB_REPOSITORY="" mechanism (main.ts, UpdateToast.tsx) and the
workflow step's stale Windows-topology claim.
Fixes#102.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 18, 2026
…hipped app cannot reach (#107)
The sidecar-aware gate (#102, PR #106) surfaced two more phantom
requirements on Windows: @effect/platform-bun and @effect/sql-sqlite-bun,
imported by the server bundle only behind Bun-runtime detection. The
shipped app always runs the server under Node (ELECTRON_RUN_AS_NODE), so
the branch is unreachable, and upstream's Windows sidecar deliberately
stages neither — their absence broke release run 31839839479 without
breaking anything real. The macOS artifact only carries them because its
staging installs the full production dependency set.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Release bundle verify checks the wrong layer on Windows since upstream's server.asar sidecar

1 participant

@radroid
, '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

fix(coil): verify every packaged layer, and fail on layers the gate cannot see (#102) - #106

Merged
radroid merged 1 commit into
mainfrom
coil/verify-server-asar
Aug 14, 2026
Merged

fix(coil): verify every packaged layer, and fail on layers the gate cannot see (#102)#106
radroid merged 1 commit into
mainfrom
coil/verify-server-asar

Conversation

@radroid

Copy link
Copy Markdown
Owner

The 2026-08-14 sync imported upstream's Windows server.asar split, which broke the release's bundle-verify gate in both directions at once — and red release run 31837711136 (publish skipped, nothing shipped) is the proof:

  • The server graph silently stopped being scanned on Windows. The gate read only app.asar (+ .unpacked), which now holds just the Electron main-process bundle — the entire server closure was unverified, with no signal.
  • A shippable build was failed on a phantom.node-pty appears in main.cjs only inside embedded WSL heredoc strings (the regex scanner cannot tell), and it genuinely lives in the sidecar for the WSL path — but the sidecar was invisible, so the gate reported MODULE_NOT_FOUND.

Fix:

  • verifyPackagedApp merges a sibling resources/server.asar (+ its .unpacked) into the packaged view: sidecar bundles are scanned again, and packages that live there resolve.
  • New floor: every FIRST_PARTY_BUNDLE_DIRS entry must contribute ≥1 scanned bundle, else the gate fails with a topology-changed error. A layer the checker cannot see can never silently pass again (the fix(coil): restore the release, and make two of its checks capable of failing #97 lesson, second occurrence).
  • Tests: sidecar-merge case (also proves sidecar bundles are scanned, not merely stored) and invisible-layer case; three existing fixtures gained the now-required second bundle dir.
  • Corrects three comments still teaching the disproven GITHUB_REPOSITORY=\"\" silencing mechanism, and the workflow step's stale topology claim.

Verified: scripts suite 318/318 green (with env -u ELECTRON_RUN_AS_NODE — the session env otherwise contaminates spawned-command assertions), repo typecheck 0 errors, fmt clean.

Fixes#102.

🤖 Generated with Claude Code

…annot see (#102)
Upstream's Windows server.asar split (this sync) broke the release's
bundle-verify gate both ways at once: the server graph silently stopped
being scanned, and node-pty — mentioned only inside main.cjs's embedded
WSL heredoc scripts, loadable from the sidecar where it genuinely lives —
was reported unresolvable, failing a shippable build (release run
31837711136, publish skipped).
The view now merges a sibling resources/server.asar (+ .unpacked) into
the packaged-file map, so sidecar bundles are scanned again and sidecar
packages resolve. And every FIRST_PARTY_BUNDLE_DIRS entry must contribute
at least one scanned bundle — a packaging-topology change that hides a
layer is now an error instead of an empty green result, which is the
'guard that cannot fail' shape #97 already taught us once.
Also corrects the three comments still teaching the disproven
GITHUB_REPOSITORY="" mechanism (main.ts, UpdateToast.tsx) and the
workflow step's stale Windows-topology claim.
Fixes#102.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@radroid
radroid merged commit f95a770 into mainAug 14, 2026
1 check passed
@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: b6e40558-1994-4328-94ad-9516c67784fe

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@radroid
radroid deleted the coil/verify-server-asar branch August 14, 2026 20:41
radroid added a commit that referenced this pull request Aug 14, 2026
…hipped app cannot reach (#107)
The sidecar-aware gate (#102, PR #106) surfaced two more phantom
requirements on Windows: @effect/platform-bun and @effect/sql-sqlite-bun,
imported by the server bundle only behind Bun-runtime detection. The
shipped app always runs the server under Node (ELECTRON_RUN_AS_NODE), so
the branch is unreachable, and upstream's Windows sidecar deliberately
stages neither — their absence broke release run 31839839479 without
breaking anything real. The macOS artifact only carries them because its
staging installs the full production dependency set.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 17, 2026
…annot see (#102) (#106)
Upstream's Windows server.asar split (this sync) broke the release's
bundle-verify gate both ways at once: the server graph silently stopped
being scanned, and node-pty — mentioned only inside main.cjs's embedded
WSL heredoc scripts, loadable from the sidecar where it genuinely lives —
was reported unresolvable, failing a shippable build (release run
31837711136, publish skipped).
The view now merges a sibling resources/server.asar (+ .unpacked) into
the packaged-file map, so sidecar bundles are scanned again and sidecar
packages resolve. And every FIRST_PARTY_BUNDLE_DIRS entry must contribute
at least one scanned bundle — a packaging-topology change that hides a
layer is now an error instead of an empty green result, which is the
'guard that cannot fail' shape #97 already taught us once.
Also corrects the three comments still teaching the disproven
GITHUB_REPOSITORY="" mechanism (main.ts, UpdateToast.tsx) and the
workflow step's stale Windows-topology claim.
Fixes#102.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 17, 2026
…hipped app cannot reach (#107)
The sidecar-aware gate (#102, PR #106) surfaced two more phantom
requirements on Windows: @effect/platform-bun and @effect/sql-sqlite-bun,
imported by the server bundle only behind Bun-runtime detection. The
shipped app always runs the server under Node (ELECTRON_RUN_AS_NODE), so
the branch is unreachable, and upstream's Windows sidecar deliberately
stages neither — their absence broke release run 31839839479 without
breaking anything real. The macOS artifact only carries them because its
staging installs the full production dependency set.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 18, 2026
…annot see (#102) (#106)
Upstream's Windows server.asar split (this sync) broke the release's
bundle-verify gate both ways at once: the server graph silently stopped
being scanned, and node-pty — mentioned only inside main.cjs's embedded
WSL heredoc scripts, loadable from the sidecar where it genuinely lives —
was reported unresolvable, failing a shippable build (release run
31837711136, publish skipped).
The view now merges a sibling resources/server.asar (+ .unpacked) into
the packaged-file map, so sidecar bundles are scanned again and sidecar
packages resolve. And every FIRST_PARTY_BUNDLE_DIRS entry must contribute
at least one scanned bundle — a packaging-topology change that hides a
layer is now an error instead of an empty green result, which is the
'guard that cannot fail' shape #97 already taught us once.
Also corrects the three comments still teaching the disproven
GITHUB_REPOSITORY="" mechanism (main.ts, UpdateToast.tsx) and the
workflow step's stale Windows-topology claim.
Fixes#102.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 18, 2026
…hipped app cannot reach (#107)
The sidecar-aware gate (#102, PR #106) surfaced two more phantom
requirements on Windows: @effect/platform-bun and @effect/sql-sqlite-bun,
imported by the server bundle only behind Bun-runtime detection. The
shipped app always runs the server under Node (ELECTRON_RUN_AS_NODE), so
the branch is unreachable, and upstream's Windows sidecar deliberately
stages neither — their absence broke release run 31839839479 without
breaking anything real. The macOS artifact only carries them because its
staging installs the full production dependency set.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Release bundle verify checks the wrong layer on Windows since upstream's server.asar sidecar

1 participant

@radroid
, '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

fix(coil): verify every packaged layer, and fail on layers the gate cannot see (#102) - #106

Merged
radroid merged 1 commit into
mainfrom
coil/verify-server-asar
Aug 14, 2026
Merged

fix(coil): verify every packaged layer, and fail on layers the gate cannot see (#102)#106
radroid merged 1 commit into
mainfrom
coil/verify-server-asar

Conversation

@radroid

Copy link
Copy Markdown
Owner

The 2026-08-14 sync imported upstream's Windows server.asar split, which broke the release's bundle-verify gate in both directions at once — and red release run 31837711136 (publish skipped, nothing shipped) is the proof:

  • The server graph silently stopped being scanned on Windows. The gate read only app.asar (+ .unpacked), which now holds just the Electron main-process bundle — the entire server closure was unverified, with no signal.
  • A shippable build was failed on a phantom.node-pty appears in main.cjs only inside embedded WSL heredoc strings (the regex scanner cannot tell), and it genuinely lives in the sidecar for the WSL path — but the sidecar was invisible, so the gate reported MODULE_NOT_FOUND.

Fix:

  • verifyPackagedApp merges a sibling resources/server.asar (+ its .unpacked) into the packaged view: sidecar bundles are scanned again, and packages that live there resolve.
  • New floor: every FIRST_PARTY_BUNDLE_DIRS entry must contribute ≥1 scanned bundle, else the gate fails with a topology-changed error. A layer the checker cannot see can never silently pass again (the fix(coil): restore the release, and make two of its checks capable of failing #97 lesson, second occurrence).
  • Tests: sidecar-merge case (also proves sidecar bundles are scanned, not merely stored) and invisible-layer case; three existing fixtures gained the now-required second bundle dir.
  • Corrects three comments still teaching the disproven GITHUB_REPOSITORY=\"\" silencing mechanism, and the workflow step's stale topology claim.

Verified: scripts suite 318/318 green (with env -u ELECTRON_RUN_AS_NODE — the session env otherwise contaminates spawned-command assertions), repo typecheck 0 errors, fmt clean.

Fixes#102.

🤖 Generated with Claude Code

…annot see (#102)
Upstream's Windows server.asar split (this sync) broke the release's
bundle-verify gate both ways at once: the server graph silently stopped
being scanned, and node-pty — mentioned only inside main.cjs's embedded
WSL heredoc scripts, loadable from the sidecar where it genuinely lives —
was reported unresolvable, failing a shippable build (release run
31837711136, publish skipped).
The view now merges a sibling resources/server.asar (+ .unpacked) into
the packaged-file map, so sidecar bundles are scanned again and sidecar
packages resolve. And every FIRST_PARTY_BUNDLE_DIRS entry must contribute
at least one scanned bundle — a packaging-topology change that hides a
layer is now an error instead of an empty green result, which is the
'guard that cannot fail' shape #97 already taught us once.
Also corrects the three comments still teaching the disproven
GITHUB_REPOSITORY="" mechanism (main.ts, UpdateToast.tsx) and the
workflow step's stale Windows-topology claim.
Fixes#102.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@radroid
radroid merged commit f95a770 into mainAug 14, 2026
1 check passed
@coderabbitai

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: b6e40558-1994-4328-94ad-9516c67784fe

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@radroid
radroid deleted the coil/verify-server-asar branch August 14, 2026 20:41
radroid added a commit that referenced this pull request Aug 14, 2026
…hipped app cannot reach (#107)
The sidecar-aware gate (#102, PR #106) surfaced two more phantom
requirements on Windows: @effect/platform-bun and @effect/sql-sqlite-bun,
imported by the server bundle only behind Bun-runtime detection. The
shipped app always runs the server under Node (ELECTRON_RUN_AS_NODE), so
the branch is unreachable, and upstream's Windows sidecar deliberately
stages neither — their absence broke release run 31839839479 without
breaking anything real. The macOS artifact only carries them because its
staging installs the full production dependency set.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 17, 2026
…annot see (#102) (#106)
Upstream's Windows server.asar split (this sync) broke the release's
bundle-verify gate both ways at once: the server graph silently stopped
being scanned, and node-pty — mentioned only inside main.cjs's embedded
WSL heredoc scripts, loadable from the sidecar where it genuinely lives —
was reported unresolvable, failing a shippable build (release run
31837711136, publish skipped).
The view now merges a sibling resources/server.asar (+ .unpacked) into
the packaged-file map, so sidecar bundles are scanned again and sidecar
packages resolve. And every FIRST_PARTY_BUNDLE_DIRS entry must contribute
at least one scanned bundle — a packaging-topology change that hides a
layer is now an error instead of an empty green result, which is the
'guard that cannot fail' shape #97 already taught us once.
Also corrects the three comments still teaching the disproven
GITHUB_REPOSITORY="" mechanism (main.ts, UpdateToast.tsx) and the
workflow step's stale Windows-topology claim.
Fixes#102.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 17, 2026
…hipped app cannot reach (#107)
The sidecar-aware gate (#102, PR #106) surfaced two more phantom
requirements on Windows: @effect/platform-bun and @effect/sql-sqlite-bun,
imported by the server bundle only behind Bun-runtime detection. The
shipped app always runs the server under Node (ELECTRON_RUN_AS_NODE), so
the branch is unreachable, and upstream's Windows sidecar deliberately
stages neither — their absence broke release run 31839839479 without
breaking anything real. The macOS artifact only carries them because its
staging installs the full production dependency set.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 18, 2026
…annot see (#102) (#106)
Upstream's Windows server.asar split (this sync) broke the release's
bundle-verify gate both ways at once: the server graph silently stopped
being scanned, and node-pty — mentioned only inside main.cjs's embedded
WSL heredoc scripts, loadable from the sidecar where it genuinely lives —
was reported unresolvable, failing a shippable build (release run
31837711136, publish skipped).
The view now merges a sibling resources/server.asar (+ .unpacked) into
the packaged-file map, so sidecar bundles are scanned again and sidecar
packages resolve. And every FIRST_PARTY_BUNDLE_DIRS entry must contribute
at least one scanned bundle — a packaging-topology change that hides a
layer is now an error instead of an empty green result, which is the
'guard that cannot fail' shape #97 already taught us once.
Also corrects the three comments still teaching the disproven
GITHUB_REPOSITORY="" mechanism (main.ts, UpdateToast.tsx) and the
workflow step's stale Windows-topology claim.
Fixes#102.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
radroid added a commit that referenced this pull request Aug 18, 2026
…hipped app cannot reach (#107)
The sidecar-aware gate (#102, PR #106) surfaced two more phantom
requirements on Windows: @effect/platform-bun and @effect/sql-sqlite-bun,
imported by the server bundle only behind Bun-runtime detection. The
shipped app always runs the server under Node (ELECTRON_RUN_AS_NODE), so
the branch is unreachable, and upstream's Windows sidecar deliberately
stages neither — their absence broke release run 31839839479 without
breaking anything real. The macOS artifact only carries them because its
staging installs the full production dependency set.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Release bundle verify checks the wrong layer on Windows since upstream's server.asar sidecar

1 participant

@radroid