v4 Phase 2: pattern-transform algebra as a blendable dimension

The Strudel per-cycle transform pass is no longer a hardcoded 5-case switch: state.transforms = {pool, rate, schedule, everyN, targets} drives ONE generic lane-tagged pass in buildEvents.

• Kernel resolution is zero-rng (the reverbColor dominant-parent law): pool UNION across declaring parents in weight order + rate LERP; schedule/everyN/targets from the dominant declaring parent

• Three pilot adopters (fixtures regenerated, drift confined exactly to their 41 entries): idm full 7-op pool @ rate .5 (drum tangles that never repeat, now literally true), minimal reductive pool everyN:8 (one…

Verified: verify.sh --no-cache PASS (matrix 63/63, validate, engine). Perf 1.488 -> 1.389 ms/state (315-state harness) — the unification is free

▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=5435&path=694.13834,713.13867,675.13867&xdur=13.122

b991e96 https://github.com/aboard-io/stellate/commit/b991e96beacce34d253562390a45e91113b691c0