← the Atlas

Pre-2.0 hardening — the shortlist

Analysis·budding·proposed·

Ship-status board for the 2.0 tag: what can hurt the user, in their words, with a mark per item. ✅ done · 🔶 in flight · ⬜ not started.

One rule: fix what a user would feel. ✅ done · 🔶 in flight · ⬜ not started.

🔴 Red alert — blocks the tag

Issue What the user feels
#1334 Kolu’s own dev/test can kill the live kolu you are using — the state-root default is deleted; the path is chosen out loud or the process dies. (PR #1933; the full arc: state isolation.)
#1375 A local vitest run forks 30+ real daemons and OOM-reaps prod kaval — real-daemon suites are off by default now. (PR #1921)
#1754 The dock says “thinking” forever after the agent already finished — append-poll floor under fs.watch. (PR #1914, deliberately Refs not Closes: the issue stays open until the e2e asserts descoped in PR #1751 are restored by a follow-up once #1751 merges.)
#1859 One corrupt message makes a connection play dead while it keeps listening — “settled ⟹ stopped” holds by construction. (PR #1901)
#1900 Refresh yanks you to another host with a lying toast — boot honors the consumed stamp; the gone-verdict waits for an authoritative census. (PR #1903)
#1177 An agent that needs you always chimes now. (PR #1894)
#1763 “Connecting to local…” can no longer spin forever — a stuck boot names its failure and offers Reload. (PR #1898)

🟡 Yellow alert — land next

Issue What the user feels
#1667 Closing the last terminals can focus a dead one — focus clamps past all departing tiles. (PR #1677)
#1680 On a remote mac, agent state freezes silently until restart.
#1076 A terminal is left frozen (raw mode) after a TUI app exits.
#1875 A reconnect race can dial the same host twice.
#1701 Branch-mode Code tab is dead over a remote host (“base branch not found” for one that exists).
#1715 A wire naming collision can cross two channels’ data — silent landmine.
#1668 A file deleted at the wrong moment shows “Loading…” forever.
#1492 Waking a sleeping terminal doesn’t resume a nix run agent.

🟢 Condition green — recurrence guards

Issue What it prevents
#1706 + #1693 Regenerated agent skills silently regressing to a stale commit.
#1707 Big pastes to a Claude terminal not submitting.
#1885 A renew toast that lies about success.
#1339 An opaque 30s hang where a one-line refusal reason exists.
#1679 + #1695 The two remote-padi test flakes.

Verify & close — fix already shipped, confirm it

Issue The fact
#1681 Gray-chip fix merged 2026-07-05 (#1687), no recurrence since. Confirm, close.
#901 Kaval survivors are this feature — redeploys don’t kill PTYs. Confirm, close.
#1793 Closed — presence-only dialogs (#1892).

Deferred past 2.0

Cut at the 2026-07-22 triage, closed not-planned (#1658 state backup on start · #1666 worktree-remove strands a terminal) · features (#1240, #1218, #1295) · render polish (#1305 / #1306) · no-current-victim ledgers (#1688, #1863) · #706 full containment (needs a VM) · the campaign-surface build-out.

Standing facts (coordinator)

# Fact
1 CI venue law. ~/.config/odu/hosts.json on the coordinator’s machine must name real venues: aarch64-darwin → rasam ([email protected]); no x86_64-linux venue exists yet — once pureintent retires from agent duty it is the natural candidate. odu ≥ #47 fails fast when the config is missing (never silent localhost). Workers must verify host ≠ localhost in run records before claiming CI.
2 The watcher era should end. #1904 (kolu MCP standing subscription / supervision-edge delivery) exists because hand-rolled watcher agents dropped worker reports at four seams in one day. Until it lands: every dispatched ask gets a listener attached in the same breath, re-attached after every restart.
3 Standing law unchanged: srid merges all PRs; full /be for every code PR (docs-only exempt); no pattern kills; reproduce-first per #1690; adversarial gate before fix code, every time.