Diagnosed defects and their fix direction — what's broken, the root cause, and the shape of the repair.
- Agent spawn is a face verb — fixing #1872 (Dock detection + transcript loss)Both #1872 bugs happen because an agent was launched through a path that doesn't know it's launching an agent. The fix: kolu's faces (mcp, the coming tui) own 'launch an agent' as a proper operation; kaval-tui builds a clean environment instead of copying the caller's; kaval itself stays a dumb PTY daemon.
- Bug — a gate-less socket squatter wedges kolu foreverA kaval orphan whose gate file is gone but which still holds the rendezvous socket wedges kolu permanently: recycle only ever kills gate-recorded pids, so the squatter survives every recycle and the incompatible card's renew loops forever (field case: sincereintent 25494, 8 days). The fix gives the supervisor identity over its OWN socket: OS socket-holder lookup + kaval handshake → recycle the verified orphan; a non-kaval process is never killed.
- Bug — atlas-sync shiki flake: the embedded-grammar load racerelease-workflow.html byte-shrinks under load because whether an ```mdx code block gets embedded-YAML highlighting depends on whether some other file's ```yaml block happened to be highlighted first. Fix: derive the langs list from the content itself and preload it in both astro configs, with a fail-fast guard so a fence the scan misses can never silently reopen the race.
- Bug — remote host: kaval didn't start, Restart → Internal server error (contract skew)A newer local kolu binds a stale remote host whose kaval speaks an older pty-host contract. The skew is well-typed at its source but flattens to a generic error, the Restart button is a dead end, and the remote log bridge crashes per line. Fix in two tiers — the instances, and the surface-framework fortification that makes the class inexpressible.
- Phantom running_background — Claude shows "running" foreverWhy the spinner survives a Claude restart — an orphaned background-launch marker has no completion, so the waiting→running_background promotion never decays. Diagnosis + fix.
- pulam-web: a dead mirror lies as an empty fleet — surface the connectionpulam-web shows a green connected dot + no terminals when the backend↔remote ssh mirror is actually down/failed (build mismatch, unreachable host). Root cause — the browser only ever sees its own socket health, never the mirror's. Fix (one PR) — graduate a thin onState→cell projection into @kolu/surface-nix-host, declare a gate-closed connection cell on the surface, pipe the session's health into it, and gate the browser UI on it (drishti's proven shape, now shared).
- Remote bind — what's left before it fully worksThe definitive list of everything standing between today and "kolu fully works over a remote bind" — found by W3.4's full-suite run, held here as a working ledger so each item can be attacked separately.
- Session timers must not immortalize the host processPer-timer census of makeSession's un-unref'd timers with honest unref-vs-must-fire verdicts — an abandoned session must let its host process exit; timers that settle a caller's promise stay ref'd.
- State Isolation — Plan of RecordDev/test can never sit in production's chair: delete the padi state-root default; the path is chosen out loud or the process dies. No role vocabulary. Rebuilt after PR #1911 was closed.