v4 Phase 4: generalized sample-event roles (state.sampleEvents)

One vocabulary replaces the need for per-idea special fields: sampleEvents:[{pool, placement, sync, sections, treatment, gain, prob}] with seven placements (bed/slice/oneShot/opener/cadence/ buried/response), section filters (all/first/quiet/name-regex), and a treatment block…

• Deletion REFUSED, justified: the charter's full deletion of the bespoke handlers (toState specials + engine L571-751) is the full-adoption vision

• Pilots (fixture drift exactly 20 entries, state+events only, features byte-identical so the matrix holds by construction): bigbeat opener air-horn (fires once at beat 0.25), dinosynth response paleontologist…

Verified: verify.sh --no-cache PASS: matrix 63/63, validate 5/1/0 with gate 6 at 0 dangling, engine smoke. Perf 1.44 -> 1.38 ms/state (pass gated off for 59/61 genres).

▶ Play it: Cretaceous Vespers → Airhorn Apocrypha — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=dinosynth&seed=8663&path=289.13893,893.15798&xdur=0.375

e9872ec https://github.com/aboard-io/stellate/commit/e9872ec726095c2e1011e739735aa5ada1847f44