Findings No. 5
Safari does not render a worklet that nothing pulls
An AudioWorkletNode whose output connects to nowhere never runs its process callback on Safari. Connect it through a zero-gain GainNode to the destination.
On Safari, an AudioWorkletNode whose output connects to nothing never runs its process callback. There is no error and no warning; the worklet simply does not execute, which is exactly wrong for capture and analysis nodes whose whole job is to observe a signal rather than produce one.
The fix costs one node: connect the worklet through a zero-gain GainNode to ctx.destination, so the rendering graph has a reason to pull samples through it. The gain of zero keeps the tap silent; the connection keeps it alive.
Receipt: Stem Shovel (inputs.svelte.ts #tapSource; the same pattern in looper.svelte.ts).