Stage E1: 810 KB of data out of the kernel, byte for byte

engine/genre-kernel.js was 966 KB and 8,956 lines, of which 82% was inert literal data, and it shipped a node-only CLI to every browser. It is now 193 KB and 2,739 lines -- a file a person can read.

• engine/genres-data.js 648 KB the 274 anchors engine/registry-data.js 131 KB SOURCES / SOURCE_POOLS / SAMPLES / VOXBANK / SAMPLERS / PERCBANK

• THE DATA MOVED AS SOURCE TEXT, NOT AS JSON. The obvious implementation is to load the kernel and JSON.stringify each object, and that is the one that loses: round-tripping normalizes -0 to 0, drops undefined…

• Classic scripts, not JSON-over-fetch, because app/access.js and app/starmap.js read the kernel synchronously at module top level -- the data has to exist the moment genre-kernel.js runs.

• Everything that reached into the kernel by path was repointed, not left to fail quietly later: genre-tool.js (including TERM.genres, whose terminator was the kernel section that used to follow the literal and…

Verified: rather than assumed, at every layer: kerneldata GENRES + 4 registries byte-identical vs HEAD, same order, 5 resolved tracks identical (the only reach into the module-private VOXBANK and…

▶ Play it: Stationary Weather — the accessible text version, where the same music arrives as prose https://stellate.app/access.html?genre=ambient&seed=6362

8508e00 https://github.com/aboard-io/stellate/commit/8508e002d8894269196ac0bf013b0ed2eb810e9b