Milestone 1: WebGL2 engine spike (v0 substrate) master
Hand-written WebGL2 engine for the v0 Fluodditylike substrate, driven by the hardcoded 244-float Wild7 anchor rule (docs/golden/Wild7-tweak3.json). Proves the substrate runs in-browser. - engine/: imperative Engine (no Svelte) — ping-pong RGBA32F particle texture + RGBA16F field/deposit, 4-pass loop: particle_update (2 sensors -> symmetrized 244-float plane-wave rule -> integrate) / deposit (additive gl.POINTS gaussian scatter) / field_update (5-tap diffuse + persist) / display (HSV flow). - Math per docs/v0_normalization.md (world_size = 1); rule layout per generalized_engine_spec.md. - Robustness found via Firefox debugging: field/deposit are RGBA16F so additive blending needs no EXT_float_blend; textures are explicitly zero-filled because drivers don't reliably honour null texImage2D init. CPU readback auto-exposure dropped (Firefox blocks canvas readPixels) in favour of a fixed/tunable exposure plus a GPU-side diagnostic display. - state/inspector + ui/Controls.svelte: live sliders for the 10 v0 params (+ deposit gain, exposure, diagnostic toggle), pushed into the engine through the orchestrator seam ($effect snapshot). Plain reactive data only — no GL in $state. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>