Skip to content

ci: WSL host stack integration — do not merge - #27964

Closed
nwparker wants to merge 79 commits into
mainfrom
nwparker/wsl-stack-integration
Closed

nwparker wants to merge 79 commits into
mainfrom
nwparker/wsl-stack-integration

Conversation

@nwparker

@nwparker nwparker commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor
Files Added Deleted Net
Test 79 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​8742 $\color{#cf222e}{\Huge{\mathbf{−}}}$​11 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​8731
Prod 220 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​10344 $\color{#cf222e}{\Huge{\mathbf{−}}}$​541 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​9803

Do not merge. CI-only branch that merges the whole WSL host stack onto main so every lane (including the Windows package job and the real-WSL orcad lane) runs against the combined change and surfaces cross-PR conflicts.

Included PRs (merged without squash onto main 44fabbd, in this order)

Already in main: #27778 R23 (a7e2476), #28125 orcad instance identity (bcad291), #28024 project-removal terminal ordering (44fabbd), #28131 locale fix (9f07f04).

Merge resolutions made only here

Integration-only commits

This branch is rebuilt from the layer branches; fixes belong on the owning PR.

@nwparker
nwparker force-pushed the nwparker/wsl-stack-integration branch from 053286b to ea95070 Compare October 12, 2026 12:03
@nwparker
nwparker force-pushed the nwparker/wsl-stack-integration branch 3 times, most recently from efc7af6 to a4a2fb1 Compare October 12, 2026 15:07
…ache orcad's compiled bundle

The WSL wake path made ~37 sequential wsl.exe starts at ~180 ms each. Stdin-free
execCommand calls now go through a few long-lived wsl.exe sh loops (one command at a
time per loop, own session, stdin at EOF, base64-framed output). SSH has no such
method, so its commands and options are unchanged.

orcad enables Node's compile cache inside a client-managed slot, and hands it to the
profile preflight child, which compiles the same bundle.
…de runtime on the wake path

materializeOrcadArtifact now reads each template file once (manifest check and slot identity
in one pass) and remembers the digests in <cacheRoot>/<target>/.verified-sources.json keyed
by each file's device, inode, size, mtime and ctime; any change re-hashes. WSL deploys probe
the guest runtime against a recorded stat signature beside .verified, hashing only on
mismatch. SSH probe commands are unchanged.
The build resolves copy from the English catalog, which still held the old text under the
reused key, so the new inline default never reached the dialog. The copy gets its own key, the
stale entry is dropped from both catalogs, and a test reads the shipped catalog.
…up, and prove removal in e2e

After removal the active workspace is left when it lived on that host, so nothing keeps calling a
host that no longer exists, and a warning about what still runs in the distro stays until
dismissed. The e2e now checks that removal ends the host's terminals on the server standing in
for orcad, shows no warning, leaves the workspace, and starts nothing for the host afterwards.
…project

Removing a project on any runtime host (a WSL host, an SSH-managed or paired server) sent
repo.rm first; the host resolves terminal.stop through the project's workspace rows, which
repo.rm deletes, so the stop failed and the shells kept running. Terminals stop first now. The
removal toast also drops the IPC wrapper from its message.
…connecting'

With the experiment off (or without server files) nothing retries, so a WSL host's terminal now
says so, with Turn on, rather than claiming Orca is reconnecting.
…n e2e

The headless server standing in for orcad now carries a project whose terminal must end when the
project is removed (and leave the host's own catalog), and an orphan terminal whose project the
host already forgot, which removing the host must still end. Both checks fail without the fixes.
@nwparker
nwparker force-pushed the nwparker/wsl-stack-integration branch from a4a2fb1 to 259d9e7 Compare October 12, 2026 16:27
…ors; offer Turn on when WSL hosts are off

The file explorer showed "Error invoking remote method 'runtimeEnvironments:call': Error: ..." for a
WSL workspace whose host was turned off. Explorer read errors now go through the shared IPC-error
unwrapping, and when the workspace's WSL host is turned off the empty pane shows the same turned-off
copy and Turn on button as the terminal banner instead of a read error and a Retry that cannot work.
The editor's file-load error view drops the same wrapper at render time (stored text is unchanged
for retry classifiers).
@nwparker
nwparker force-pushed the nwparker/wsl-stack-integration branch from 259d9e7 to dfafa69 Compare October 13, 2026 00:38
nwparker and others added 9 commits October 12, 2026 18:46
…t drive checkouts

Co-Authored-By: Claude <noreply@anthropic.com>
…verflow and restarts

A path the default-stat recheck proved dirty stays a suspect until a recheck proves it clean,
so an overflow, interruption, watcher reinstall, or closed watcher no longer drops it back to
minimal-only status, where it would silently read as clean.
…ces' into wsl-integration-rebuild

# Conflicts:
#	src/main/ipc/runtime-environment-connectivity-handlers.ts
#	src/renderer/src/hooks/ipc-events/app-lifetime-ipc-bridge.ts
#	src/renderer/src/store/repos/repo-removal.ts
#	src/renderer/src/store/slices/project-removal-runtime-terminal-order.test.ts
…' into wsl-integration-rebuild

# Conflicts:
#	src/main/ssh/orcad-runtime-conversion.ts
C7a (#27933) predates the main sync-spawn ratchet (#27756); drop once C7a carries this row.
@nwparker
nwparker force-pushed the nwparker/wsl-stack-integration branch from 0f1c9dc to 7e626c2 Compare October 13, 2026 01:50
nwparker and others added 2 commits October 12, 2026 19:48
…stat

Status rechecks watcher-reported paths with core.checkStat=default, but add and
restore ran with the injected minimal stat, so a same-size rewrite that kept its
mtime showed as modified yet Stage and Discard silently did nothing. Path writes
now redo the tracked suspects inside their scope with default stat; everything
else stays minimal.

Co-Authored-By: Claude <noreply@anthropic.com>
@nwparker

Copy link
Copy Markdown
Contributor Author

Superseded: every layer this integration branch carried has merged to main: C1, C3, C4, C4b, C4c, C5, C6, C10, C9, C9b, C7a (with C2 folded in), C7b, C8, and D0. I compared every file this branch changed against main. The only content not on main is the integration-only "Upload unpacked Windows app" CI step and older pre-gate versions that the merged PRs replaced. Closing and deleting the branch.

@nwparker nwparker closed this Oct 13, 2026
@nwparker
nwparker deleted the nwparker/wsl-stack-integration branch October 13, 2026 17:02
Sign up for free to 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.

1 participant