[Bug] Subagent duplicate spawning due to misinterpreted watch-armed status reports
Bug Description
Fable spawned two subagents to execute on the same task. As it describes it
"Duplicate seats. The harness sends me a "finished" notice every time a subagent ends its turn, including when it only stops to wait on a watch it armed. Three times I read "finished" as "dead" and spawned a replacement without checking. The check was available and cheap: each of those reports literally said "holding on the armed watch" or "monitor armed". I did not read for that; I pattern-matched the status line and applied the "never message a stopped agent, spawn fresh" rule reflexively. The old seats then woke on their watches and worked the same worktree as the new ones. Cost: roughly three full Opus seats of duplicated work plus the OOM and false-red churn. Rule I now follow: a report that names a wake source is not a dead seat; wait for the wake, never replace it."
The "never message a stopped agent" rule is due to another bug where resuming a subagent reattaches it under the main session instead of its proper parent.
Environment Info
- Platform: darwin
- Terminal: ghostty
- Version: 2.1.270
- Feedback ID: cd5e179c-1f99-4f56-832d-d2b2a8354521