Summary
On the in-process task runner (a session running omo directly, not through the shared RPC daemon host), spawning a new child task terminates the child that is already running: the running child reports transport_gone 1-2 seconds after the new spawn. Children running on a shared daemon host coexist normally.
Reproduction
Observed 3/3 on a long-lived session (engine 0.0.0-omob.8fd4c01.cd317ee, ~5h uptime, in-process runner):
| new spawn |
running child dies |
| 08:36:24 |
08:36:26 |
| 08:48:15 |
08:48:16 |
| 08:52:16 |
08:52:17 |
Same session, same day: children that had been placed on the shared daemon host (omo --mode rpc --multi-session) were not affected by later spawns.
Expected
Spawning a second child on the in-process runner leaves the first child running; both complete independently.
Actual
The first child's transport is torn down when the second is admitted. The parent records the first as lost; work in its worktree is orphaned.
Evidence
Evidence held locally (session ledger + notepad on a dev machine). Related but distinct from #8579 (oh-my-openagent: duplicate child sessions after a lost admission reply) and from #1905 (host stall -> peer cut): here the host is not stalled and the parent itself triggers the cut by spawning.
Scope / acceptance
- RED: in-process runner test that spawns child A, waits until it is running, spawns child B, asserts A is still running and completes.
- GREEN: both children complete; no
transport_gone on A.
- Verify on the shared-host path as a regression guard (should already pass).
Workaround in use: limit the in-process runner to one concurrent child.
Summary
On the in-process task runner (a session running
omodirectly, not through the shared RPC daemon host), spawning a new child task terminates the child that is already running: the running child reportstransport_gone1-2 seconds after the new spawn. Children running on a shared daemon host coexist normally.Reproduction
Observed 3/3 on a long-lived session (engine
0.0.0-omob.8fd4c01.cd317ee, ~5h uptime, in-process runner):Same session, same day: children that had been placed on the shared daemon host (
omo --mode rpc --multi-session) were not affected by later spawns.Expected
Spawning a second child on the in-process runner leaves the first child running; both complete independently.
Actual
The first child's transport is torn down when the second is admitted. The parent records the first as lost; work in its worktree is orphaned.
Evidence
Evidence held locally (session ledger + notepad on a dev machine). Related but distinct from #8579 (oh-my-openagent: duplicate child sessions after a lost admission reply) and from #1905 (host stall -> peer cut): here the host is not stalled and the parent itself triggers the cut by spawning.
Scope / acceptance
transport_goneon A.Workaround in use: limit the in-process runner to one concurrent child.