Pre-2.0 hardening — the shortlist
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 | |
| ✅ | #1375 | vitest run forks 30+ real daemons and OOM-reaps prod kaval |
| ✅ | #1754 | 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 | |
| ✅ | #1900 | |
| ✅ | #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 | |
| ⬜ | #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. |