Auto-invent 8 genres in empty vector regions: 110 -> 118

tools/invent-genres.js: deterministic gap-finder -> inventor -> algorithmic namer -> verifier gate. Embeds every genre in the verifier's own 22 scored dims (Euclidean distance == genre distinctness), ranks the largest empty regions by farthest-point selection, clones the nearest neighbor for a valid…

• 8 accepted at seed 7 (7 rejected for colliding with existing columns -- the honest signal that the far gaps are real but finite): picnicswing, rosinamblelilt, subwooferbalm, sepiadrive, moltenhouse, sparkbreak…

• genre-tool.js refactored to export measure/derive/splice behind a require.main guard so the new tool reuses the proven machinery. inventGenreName added to namebank.js.

Verified: matrix 118/118 diagonal-dominant (zero off-diagonal), validate --quick PASS, engine smoke ALL PASS, 6 renders non-silent with names correlating.

▶ Play it: Gingham Event Horizon → Prize Inside → Rosin Parallax — the three genres this change names, as one path https://stellate.app/?genre=picnicswing&seed=1388&path=1234.1889,987.5821,361.5351&xdur=0.181

6cdef27 https://github.com/aboard-io/stellate/commit/6cdef274cfabada3d92530d23126c721de6cfaf1