Split out of PR #512 review (declared deviation, see discussion there).
TaskManager allocates ids per-process starting at 1 (a1, b1, ...) and task_output_path places all output in one global cache dir. Two concurrent agent-code processes therefore collide on the same .out files: child stdout redirection overwrites them, and since #512 registration also pre-truncates them. A single session is consistent; concurrent sessions can clobber each other's still-visible task output.
Durable fix options:
- session-scoped output directories (tasks//.out), with adopt() handling the previous session's dir
- collision-resistant task ids (per-process nonce or persisted global counter)
Either changes task identity/persistence surfaces (adopt, /tasks, drill-in), so it deserves its own change rather than riding a TUI PR.
Split out of PR #512 review (declared deviation, see discussion there).
TaskManager allocates ids per-process starting at 1 (a1, b1, ...) and task_output_path places all output in one global cache dir. Two concurrent agent-code processes therefore collide on the same .out files: child stdout redirection overwrites them, and since #512 registration also pre-truncates them. A single session is consistent; concurrent sessions can clobber each other's still-visible task output.
Durable fix options:
Either changes task identity/persistence surfaces (adopt, /tasks, drill-in), so it deserves its own change rather than riding a TUI PR.