Instrument-library upgrade wave 1: real crunch, real breath, a real upright

Roadmap items 1-5 from the guitar-research report (scratch/guitar-research/ REPORT.md), all CC0 except one CC-BY row, all fetched by the NEW reproducible recipe tools/fetch-guitar-samples.sh (idempotent: sha256-checked cache, 7z/ py7zr fallback, extract-gm.js, 8s+fade trim pass for unlooped guitar…

• 1. tenor_sax REPLACED in place (FreePats/VCSL CC0): 8 zones, ALL with infinite sustain loops, 4.3MB (was 6-zone FluidR3).

• attribution row added to SOURCES.md): pc_ds2_open/pc_ds2_pm/pc_ds2_pm2/ pc_as2_open in SAMPLES (kind:hit, measured D#2/A#2 roots, 0.26-12.5s).

• Fixture drift CLASSIFIED (derived, not committed): all 1140 genre-seed pairs drift because sampled-by-default injects the ENTIRE SAMPLERS library into every state (samplerLib + vol-0 foundSources + events…

• Known pre-existing red (NOT this change, proven on stashed HEAD): test/meter.test.js head_byte_identity copies a fixed HEAD file list that lacks the new engine/columns.js - its temp require fails.

Verified: verify.sh --no-cache FULLY GREEN (matrix 228/228 diagonal-dominant, validate PASS, engine presses PASS, prove PASS, matproof PASS).

▶ Play it: Molten Horsepower → Rail Replacement Rapture → Smoke Arithmetic — the three genres this change names, as one path https://stellate.app/?genre=heavymetal&seed=9261&path=430.3999,749.12558,292.16891&xdur=0.058

07142ef https://github.com/aboard-io/stellate/commit/07142efd02fc2aa4ff3c54882f98f480388841ed