Stage E1 step 1: a gate that proves the genre data survived the move

Stage E1 lifts ~810 KB of inert data out of genre-kernel.js into generated classic scripts. The plan says to build the check before anything moves, and it is right to: GENRES is 99.8% literal, but a generator that round-trips through JSON can reorder a key, normalize -0, drop an undefined, or…

• The gate compares the WORKING TREE against HEAD, the way meter.test.js's head_byte_identity already does, so it is a no-op green today, the proof during the split, and self-healing on commit afterwards -- an…

• genre_order Object.keys(GENRES) drives matrix row order and the star layout. A pure reordering is invisible to a sorted hash and catastrophic downstream, so the order is compared as an ordered array and the…

• Wired into verify.sh as "kerneldata": 12/12 PASS.

• The split itself is the next commit. Nothing has moved yet.

Verified: it actually fails, rather than assuming: a one-digit cutoff change (1700 -> 1701, buried 547 KB into GENRES) is caught twice independently -- by the byte hash, which points straight at the…

▶ Play it: Rapture Logistics — parked on the genre this change names https://stellate.app/?genre=gospel&seed=3652&path=171.7064,190.7097,152.7097&xdur=13.122

bebf85b https://github.com/aboard-io/stellate/commit/bebf85bc9e425590a759f4f88dcd260bfff6a191