spawn_tool_event_forwarder bridges the tool-call broadcast channel (cap 32) into the orchestration event mpsc (cap 100) with a plain send().await, and that send sits outside the cancellation select arm (orchestrator.rs:325-339 as of 2026-07-17).
When the downstream channel is full (the #231 slow-client case is the obvious way), the forwarder cannot observe cancellation while blocked. Meanwhile the upstream broadcast ages out and silently drops tool events as RecvError::Lagged.
spawn_tool_event_forwarder bridges the tool-call broadcast channel (cap 32) into the orchestration event mpsc (cap 100) with a plain send().await, and that send sits outside the cancellation select arm (orchestrator.rs:325-339 as of 2026-07-17).
When the downstream channel is full (the #231 slow-client case is the obvious way), the forwarder cannot observe cancellation while blocked. Meanwhile the upstream broadcast ages out and silently drops tool events as RecvError::Lagged.