fix: bound automatic terminal recovery - #609
Conversation
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
6e93e9d to
d3af207
Compare
07d6f99 to
31099c8
Compare
|
#612 has a fix for the reviewer stuff, might need a rebase |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
✅ Looks good Reviewed the tmux terminal-recovery rework (typed preparation outcomes, UUID-scoped recovery budget, deletion tombstones) against its own design spec ( A guard/safety-shaped premise audit confirmed the load-bearing claims hold: the 2-attempt budget can't be bypassed, the tmux-absence classifier fails closed on ambiguous probes, in-flight/deletion bookkeeping is paired up correctly on every branch (including via 0 findings were filtered out as invalid/persnickety during merge — the single minor item below is the only one either specialist raised. Minor items
Finding dispositions
Review diagnosticsNo tool calls failed or were denied for either specialist. One environment note for workflow tuning: this checkout is a shallow clone with no common ancestor between Posted by the claude-review check — the review of this PR's diff at patch-id |
Summary
Root cause
Every tmux preparation failure was previously treated as a missing window. The coordinator then recreated the window, but its retry counter lived on the coordinator and reset whenever SwiftUI rebuilt the view, allowing an unbounded recreation storm. Follow-up review also identified that process spawn, unordered terminal snapshots, and deletion races were insufficient evidence for resetting or discarding persistent recovery state.
Design record
docs/specs/2026-08-11-bounded-terminal-recovery-design.mdrecords the approved recovery design: evidence thresholds, UUID-scoped budget lifetime, attachment-positive reset, authoritative deletion versus observational snapshots, bounded tombstone TTL, diagnostics, and rejected alternatives.Verification
scripts/swift-safe buildswiftlint --strict— zero violations across 687 filesDependencies
main; this PR is independently mergeable./usr/bin/env tmuxand viewer executable-resolution contract.