2c29504c75
Four cases in lane-lifecycle.test.js call /start without stubbing PATH, so they spawn the real system `claude` binary in a real tmux session to simulate a stuck/live run. Each then mocks tmux's own exec calls to fake has-session/kill-session for the app's checks, but never touches the real spawned process — the mock only fools the app, not the OS. Two of these leaked past every prior test run undetected (ccam-lane-22, ccam-lane-24), surfacing in the dashboard's live "Dashboard runs" list with no DB record and a garbage started_at, and reappearing in a Workspace split pane pointed at a deleted temp directory. Stub a lightweight fake `claude` on PATH (same pattern already used correctly elsewhere in this file) instead of spawning the real CLI, and explicitly kill the real tmux session in each test's teardown since the app-level mock never reaches the OS process.