LiveKit's setProcessor swaps the sender track behind an optional chain; when Safari's timing leaves the sender unset at that instant, the swap is skipped silently and the raw microphone stays on the wire. The fork now verifies and enforces the swap. Also records two instructive diagnostic dead ends: a sine tone is noise to a speech model, and two devices in one room invalidate any listening test. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>