Repository navigation
feat(runtime): isolate the server behind a compatibility launcher - #26374
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (2)
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 5 remain after this review. 📝 WalkthroughWalkthroughThe build now produces a separate Orcad server bundle and compatibility launcher. The launcher checks runtime eligibility and verifies the server bundle’s digest before loading it. Build identity calculations use the launcher’s content hash. Local and remote startup paths select the server entry when present and retain compatibility with single-entry slots. Priority: ⬇️ Low Merge Risk: ⚪ Minimal · up to The change moves server startup behind a compatibility launcher that checks the runtime and the server digest before loading. No merge-blocking risk is evident from the supplied files. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 2📝 Generate docstrings 💡
🛠️ Fix failing CI checks 💡
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. Comment |
cc27a67 to
bd60d4a
Compare
e7c9ba0 to
245a6c7
Compare
ELI5
Orca selects its bundled runtime through a small launcher before loading the server and its dependencies.
What Changed
Previously
orcad.jscontained the server. It now verifies and loads a separateorcad-server.js; the launcher remains compatible with Node 18. Host Node 18 support and the current SSH runtime default remain unchanged.The launcher embeds the server digest while preserving the public hash older clients calculate. POSIX remote startup keeps
orcad.jsin the process arguments so older clients recognize the serving PID. Packaging, preflights, local startup and Windows startup include the separate server file and retain support for older single-file slots.Runtime and digest faults exit with configuration-error code 78. Server import crashes retain Node's exit code 1, allowing supervisors to retry them.
Why
Runtime selection must happen before server dependencies are parsed. A small JavaScript launcher provides that boundary without another native binary and distribution pipeline. Keeping server crash handling outside launcher validation preserves the previous restart behavior.
Linked Issue
N/A — maintainer change.
Visual Proof
N/A — runtime startup and packaging changes have no visible UI change.
Testing
On macOS: focused runtime, SSH, artifact and worker suites pass, along with typecheck, changed-code quality and
pnpm build:orcad. The crash regression test reproduced exit 78 before the fix and passes with exit 1 afterward. Runtime and digest rejection tests still verify exit 78.A fresh built launcher ran through real Node 18, handed off to pinned Node 24, paired a client, created a private worktree and real terminal, returned command output, and shut down gracefully. Fresh relay integration tests pass with main's upstream reconnect-holdoff fixture fix (#26389). CI on final head 245a6c7 passed all 57 applicable checks (15 skipped), including Linux, macOS, Windows and remote/packaged startup coverage. The Docker managed-host job passed an unchanged retry after an SSH cancellation assertion; a deterministic reproduction identified a reachable race in unchanged reconnect code, preserved separately for follow-up.
Post-merge verification at acd298a: fresh server and CLI builds succeeded. Real Node 18 launched the bundled runtime; client pairing, private worktree creation, real terminal command output and graceful shutdown passed again. The merged runtime suites passed 35 tests with one deliberate skip.
Review
Fresh adversarial reviews from all three sub-agents are CLEAN at 245a6c7. Final Claude Opus 5.5 review via Orca orchestration also returned CLEAN after those reviews, with 191 focused tests passed and one deliberate skip. The review loop found and corrected the server import crash exit-code regression.
Agent skill upstream boundary
Notes
The Node 24 runtime policy remains separate in #26171. No remote wire format change. The relay fixture fix is already on main and contributes no files to this PR.
Checklist
N/Awith reasonpnpm lint,pnpm typecheck,pnpm test, andpnpm buildpass (or CI will cover; local preferred)