PR 14875: headless Linux proof Base: 1451e7cb23034d29774338608368a15d8845df36 Published candidate: 14699c500852f678f732f2df558fa27d525387ab Real child-process handoff, isolated filesystem; actual Launcher and ServiceLauncherClient, minimal startup driver. No full HTTP server, systemd or launchd service was run. BASELINE: actual main ServiceLauncherClient with real launcher IPC commits 1.0.0 -> 2.0.0, but custom-bin and PATH links remain at 1.5.0. FRESH TRIAL: real launcher IPC committed 1.0.0 -> 2.0.0; both custom-bin and PATH links moved 1.5.0 -> 2.0.0 only after acknowledgement. STORED COMMIT RESTART: actual child received committed history; both user pins remained at 1.5.0. PASS: isolated filesystem, real child processes/IPC, actual Launcher and ServiceLauncherClient; no installed service or HTTP server used. Regression experiments (production bytes restored): - Disable reconciliation: pending trial fails, stored outcome passes. - Remove only pending guard: pending trial passes, stored outcome fails. - Before custom service environment fix: both new Linux/macOS service-definition cases fail. Round 2 regressions: restoring the previous candidate produces three failures: both ordinary-CLI custom-directory retention scenarios and cleanup-defect startup. Fixed candidate passes all three; production bytes restored exactly. Final focused suite: note: You are running `vp test` as a Vite+ built-in command. If you meant to run the test npm script, use `vpr test` instead. RUN v5.0.1 /home/ubuntu/wt/desktop-app-05 Test Files 6 passed (6) Tests 79 passed (79) Start at 10:06:09 Duration 10.53s (transform 58%, import 35%, tests 5%, setup 2%) Transform transforming modules took 14.54s ยท 58% of tracked time, re-done on every run persist transforms across runs with fsModuleCache: true learn more: https://vitest.dev/guide/improving-performance#caching-between-reruns Server-only typecheck, scoped lint, formatting and whitespace pass. One pre-existing unused-layer lint warning remains. Current-candidate real process proof repeated after review fixes: FRESH TRIAL: real launcher IPC committed 1.0.0 -> 2.0.0; both custom-bin and PATH links moved 1.5.0 -> 2.0.0 only after acknowledgement. STORED COMMIT RESTART: actual child received committed history; both user pins remained at 1.5.0. PASS: isolated filesystem, real child processes/IPC, actual Launcher and ServiceLauncherClient; no installed service or HTTP server used. Limits: no installed systemd/launchd update, full HTTP server, native macOS/Windows/Electron/iOS/Android. Existing custom units without a stored directory still need local reinstall with T3CODE_INSTALL_BIN_DIR available. Stored directory survives later CLI status/reinstall/update; explicit replacement wins. Published-head proof rerun: FRESH TRIAL: real launcher IPC committed 1.0.0 -> 2.0.0; both custom-bin and PATH links moved 1.5.0 -> 2.0.0 only after acknowledgement. STORED COMMIT RESTART: actual child received committed history; both user pins remained at 1.5.0. PASS: isolated filesystem, real child processes/IPC, actual Launcher and ServiceLauncherClient; no installed service or HTTP server used.