Two related reliability problems, both recurring (3+ occurrences over 2026-07-25/26, shannon workspace)
1. Idle-wedge: builders stop processing queued messages
Builder sessions repeatedly go idle with messages sitting unprocessed in their queue, after any of: an in-session /clear, an API-500 session death, or simply overnight. The builder process is alive, afx status shows it, sends return [ok] — but nothing is consumed until the terminal is poked. One overnight occurrence cost 15 idle hours on a hot lane.
Working wake recipe (reproducible): a normal afx send <builder> "<msg>" followed by a separate afx send <builder> --raw "status?" — the raw send with Enter is what actually unwedges the prompt.
Ask: Tower-side detection (message queued + no consumption within N minutes → nudge or flag in afx status), or at minimum a documented afx wake <builder>.
2. Registration-loss: a live session silently loses its Tower registry row
A builder worktree's session can lose its Tower registration while its shellper process keeps running (observed sequence: wedge → wake → registration gone). Effects observed:
Ask: (a) persist/re-establish registry rows on Tower or session hiccups rather than losing them while the PTY lives; (b) an afx doctor-style check that diffs live shellper processes against registry rows and reports orphans, so operators can see 'alive but unaddressable' instead of inferring it from NOT_FOUND archaeology.
Related: #1254.
Two related reliability problems, both recurring (3+ occurrences over 2026-07-25/26, shannon workspace)
1. Idle-wedge: builders stop processing queued messages
Builder sessions repeatedly go idle with messages sitting unprocessed in their queue, after any of: an in-session
/clear, an API-500 session death, or simply overnight. The builder process is alive,afx statusshows it, sends return[ok]— but nothing is consumed until the terminal is poked. One overnight occurrence cost 15 idle hours on a hot lane.Working wake recipe (reproducible): a normal
afx send <builder> "<msg>"followed by a separateafx send <builder> --raw "status?"— the raw send with Enter is what actually unwedges the prompt.Ask: Tower-side detection (message queued + no consumption within N minutes → nudge or flag in
afx status), or at minimum a documentedafx wake <builder>.2. Registration-loss: a live session silently loses its Tower registry row
A builder worktree's session can lose its Tower registration while its shellper process keeps running (observed sequence: wedge → wake → registration gone). Effects observed:
afx send <id>, affinityarchitect, explicitarchitect:<name>), including agents it had successfully messaged minutes earlier.pgrepshows the session alive; no afx surface shows the discrepancy (status says nothing, sends just NOT_FOUND).Ask: (a) persist/re-establish registry rows on Tower or session hiccups rather than losing them while the PTY lives; (b) an
afx doctor-style check that diffs live shellper processes against registry rows and reports orphans, so operators can see 'alive but unaddressable' instead of inferring it from NOT_FOUND archaeology.Related: #1254.