# RB-05 MAJOR: poll_inference treats IPC listener loss as session-fatal **Severity:** MAJOR **Path:** `src-tauri/src/commands/live.rs:721-813` **Source:** [2026-04-22 code review](../code-review-2026-04-22.md) **Labels:** release-blocker, major, ipc-lifecycle **Status:** RESOLVED (2026-04-22) ## Resolution `poll_inference` no longer propagates `result_channel.send(...)` with `?`. Instead, live-result delivery is routed through a small helper that tracks whether the frontend listener has already been lost: - First send failure: mark the result listener as unavailable, log a warning, and best-effort send a `LiveStatusMessage::Warning` explaining that transcription will continue in the background until the user stops the session. - Subsequent chunks: skip re-sending to the dead result channel and keep the worker running. Crucially, this path is now separate from actual transcription failure: inference errors still emit `LiveStatusMessage::Error` and stop the session, while listener-loss just stops live preview delivery. Regression test: - `result_listener_loss_is_warned_once_and_not_treated_as_inference_failure` simulates a dead result channel, confirms the first processed chunk downgrades to a warning, and confirms a second chunk still processes successfully without a second warning. ## Problem `result_channel.send(...)` propagates with `?`, so closing the listening frontend or reloading the webview terminates the whole live session — even when capture and inference are healthy. Tauri channel-lifecycle events are not transcription failures and should not kill the worker. ## Acceptance - Channel-send errors log a warning and continue the session (if recoverable) or terminate gracefully (if the session was going to end anyway). - The distinction between "transcription failed" and "no listener to report to" is explicit in the error handling. - Regression test: simulate channel close mid-session, assert the worker keeps capturing and produces a valid WAV file. ## Fix scope Medium. Isolated to `poll_inference` and its error handling; interacts with RB-04 (monolith refactor) since that restructures the same function family. ## Dependencies - **Related:** RB-04.