From the 0.9.14 refactor backlog.
core/engine.rs ~1508 tx_subagent_completion and ~6965 progress_tx are mpsc::unbounded_channel. A pathological tool emitting progress in a tight loop grows memory without bound inside the one actor the whole product depends on. ~33 other unbounded sites exist outside the engine.
Fix per channel semantics: progress is telemetry — try_send with drop-oldest (or a capped VecDeque the engine already owns). Sub-agent completions must not be lost — bounded channel with backpressure to the sender, or fold into the existing active state under the tokio Mutex.
Size: S, high value per line.
From the 0.9.14 refactor backlog.
core/engine.rs~1508tx_subagent_completionand ~6965progress_txarempsc::unbounded_channel. A pathological tool emitting progress in a tight loop grows memory without bound inside the one actor the whole product depends on. ~33 other unbounded sites exist outside the engine.Fix per channel semantics: progress is telemetry —
try_sendwith drop-oldest (or a cappedVecDequethe engine already owns). Sub-agent completions must not be lost — bounded channel with backpressure to the sender, or fold into the existingactivestate under the tokio Mutex.Size: S, high value per line.