Findings No. 3
Turning off the voice processors is a request, not a result
Request echoCancellation, noiseSuppression, and autoGainControl off, then read track.getSettings() and treat that as the truth. Chrome on macOS leaves them on.
Recording an instrument means turning off the three voice processors built for meetings: echoCancellation, noiseSuppression, and autoGainControl. The trap is that requesting them off is not the same as getting them off. Chrome on macOS has an open bug that leaves them on. Safari ignores your channelCount request when cancellation is off and may omit the sample rate and channel count from the settings it reports back.
The honest pattern: request the constraints, then read track.getSettings() and treat that as the truth. Our recorder's format line reports what the track actually gave, not what was asked for, so a user can see when a take went through a voice processor despite the app's request.
Receipt: Stem Shovel (DemoRecorder.svelte format line; docs/demo-recording.md "Capture"; docs/multitrack-recorder.md research notes).