- test.mjs: a failing test no longer aborts the run, so a mutation shows every test that kills it.
- New test: the noise slider is live (noise 20 vs 100 differ, rasp-band ratio 0.2 at rpm 4800) while noise 100 stays identical to thruster.dsp.
- logic.js dspHash (CRLF folded to LF, then sha-256) is the one normalisation; the page export and analyze.mjs both use it. LF text hashes as before, so old exports stay valid.
- Tests: CRLF == LF hash, LF == plain sha-256, analyze CLI raises no foreign-DSP warning for a CRLF checkout.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>