AI-assisted; verified with the tests and tools listed above. Environment for BOTH recordings: Linux x64, CPU inference, Electron 44.10.1, headless-desktop/Xvfb, 1100x780 app viewport, light theme. Separate worktrees, each independently installed and built with vp run --filter @t3tools/desktop build. No tests are offered as evidence. Fresh per-worktree desktop data directories; no live database was copied. Each has one synthetic project, Dictation evidence, and an empty new composer. The same pinned default local speech artifact was installed into each isolated speech model directory and recognized by the server. The same synthetic dictation.wav was fed using Chromium's fake microphone flags. Base d756fed7aaac06134bc68cbe0047e6f14b0e9aa2 Head 2803724d813f3c41ae1b8fff738b1f87e14b832c Base is git merge-base origin/main HEAD for the supplied head commit. Launch each independently with T3CODE_DEV_SEED=0, distinct T3CODE_HOME and T3CODE_PORT, headless-desktop --no-sandbox --disable-gpu --remote-debugging-port= --use-fake-ui-for-media-stream --use-fake-device-for-media-stream --use-file-for-fake-audio-capture=. Only one desktop runs at a time due to the app's single-instance guard. setup.cjs records the synthetic project and local-transcription settings actions. If welcome/project setup is already complete, use Settings > Voice and select the current local environment, then close Settings. Attach strace BEFORE starting dictation: sudo strace -f -e trace=process -e signal=all -p -o Run capture.cjs from the corresponding checkout root: node capture.cjs The SAME capture driver on both sides: 1. Click Start voice input in the real composer. 2. Wait for a real speech WebSocket update containing nonempty live text. 3. Wait one second, identify the native speech child and observe a running thread. 4. SIGKILL only this disposable desktop backend. 5. Read that worker's actual signal termination from strace and show it in an explicitly labelled observer overlay on the real app recording. 6. Retain the recording for eight seconds after interruption. Observed base: orphan worker SIGSEGV (core dumped). Observed head: worker calls kill(self, SIGKILL), then terminates with SIGKILL; zero SIGSEGV lines in that run's trace. Backend interruption on both is expected. These are single matched runs; no claim is made about all timing windows or GPUs. The base was warmed by an earlier capture-driver attempt that stopped without killing the backend because it checked the wrong speech-event field. The final same capture driver correctly checks the real text field on both revisions. Privacy: unrelated agent-selection labels are hidden in the UI. The environment label region is masked in BOTH exported recordings. Original captures and full traces stayed private; shared signal excerpts contain only actual termination lines. The overlay reports observations; it does not change the worker code.