The lock audit found 124 control-path entries, 103 of which could tear; the family where a tear is a torn float set — a filter that is briefly the wrong filter: a click, not a fault — is unfixed. Locking it wholesale would mean holding the lock across an allocation (Waveshaper's curve, Dynamics' lookahead) or across a raise on a bad kwarg, both of which the lock's contract forbids. Each one's allocation and validation has to move ahead of the swap. From #107.
The lock audit found 124 control-path entries, 103 of which could tear; the family where a tear is a torn float set — a filter that is briefly the wrong filter: a click, not a fault — is unfixed. Locking it wholesale would mean holding the lock across an allocation (
Waveshaper's curve,Dynamics' lookahead) or across a raise on a bad kwarg, both of which the lock's contract forbids. Each one's allocation and validation has to move ahead of the swap. From #107.