# Iteration 03 Request - Task: 20260831-105824-plan-code-ui-audit - Requested by: build after runtime and device-path logic audit - Owner: coder - Status: changes-requested ## Required Corrections 1. Make transcript cross-source dedupe symmetric. Add tests for data final followed by identical primary final as well as primary then data, asserting one visible event and one history entry. Bound role/text dedupe to a short time window so legitimate repeated utterances are not permanently suppressed; do not rely only on `events.last` because user/agent events may interleave. 2. Fix microphone interruption state. `handleAudioInterruption(.ended)` currently resumes whenever `isMuted`, so a user who was already muted before the interruption can be unmuted. Track whether this interruption actually muted the mic and resume only in that case; clear the flag safely on disconnect/new interruption. 3. Fix media interruption behavior. Poll reconciliation currently sees server `desired=playing` and can call `player.play()` during an active interruption immediately after `.began` pauses it. Track interruption state and prior playback, prevent reconciliation-driven play while interrupted, honor `.shouldResume`, and keep server desired state coherent (pause/resume control as needed) so a no-resume ending does not immediately restart on the next poll. 4. Correct `PinnedMediaResourceLoader` content length for HTTP 206. `expectedContentLength` is the returned range length, but `AVAssetResourceLoadingContentInformationRequest.contentLength` must represent the full resource. Parse the total from `Content-Range` when present, with a small focused test for the parser. Do not claim webm decode support. 5. Correct or remove the misleading `MediaAPI.streamURL(trackID:)` behavior: `/media/api/stream/{id}` returns progressive media bytes, not a text URL. Construct and return the endpoint URL without downloading/decoding the media body, preserving the public signature if minimal. 6. Update stale comments (for example `applyTextMode` still references a removed SettingsStore callback). ## Verification - Add focused unit tests where practical, regenerate only if project structure changes, and run the complete simulator test suite and build with XcodeBuildMCP. - Write `iterations/03-implementation.md`, update `implementation.md`, and append manifest history. - Preserve the validated runtime behavior and all prior fixes.