{
 "version": "https://jsonfeed.org/version/1.1",
 "title": "STELLATE — the complete release archive",
 "home_page_url": "https://stellate.app/",
 "feed_url": "https://stellate.app/feed-archive.json",
 "description": "Every release note in STELLATE's history, back to the first commit on 2026-06-06. The live feed (https://stellate.app/feed.xml) carries the most recent 50.",
 "icon": "https://stellate.app/assets/icon-180.png",
 "favicon": "https://stellate.app/assets/icon-32.png",
 "language": "en-US",
 "authors": [
  {
   "name": "Paul Ford",
   "url": "https://www.ftrain.com/"
  }
 ],
 "_stellate": {
  "about": "Release notes generated from the git log by tools/build/gen-feed.js at deploy time. Every item links to a mix that shows off what changed.",
  "colophon": "https://stellate.app/colophon.html",
  "repository": "https://github.com/aboard-io/stellate",
  "archive": "https://stellate.app/feed-archive.json",
  "license": "MIT"
 },
 "items": [
  {
   "id": "27407e31d7cfc124cf50de209f6b344908221c50",
   "url": "https://stellate.app/embed.html?genre=citypop&seed=9033&path=1530.6199,1549.6232,1511.6232&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/27407e31d7cfc124cf50de209f6b344908221c50",
   "title": "the planets get a gig, the swap ducks, and staging stops lying about what shipped",
   "summary": "A STAGING SERVER, AND IT IS THE DEFAULT. ship.sh now deploys to test.stellate.app; stellate.app moves only on `ship.sh --prod`. Same droplet, second vhost over /srv/stellate-test, noindexed twice over (X-Robots-Tag plus its own robots.txt), and /found is a SYMLINK to prod's media so the ~900 MB…",
   "content_html": "<p>A STAGING SERVER, AND IT IS THE DEFAULT. ship.sh now deploys to test.stellate.app; stellate.app moves only on `ship.sh --prod`. Same droplet, second vhost over /srv/stellate-test, noindexed twice over (X-Robots-Tag plus its own robots.txt), and /found is a SYMLINK to prod's media so the ~900 MB…</p>\n<ul><li>face eye-ring 600/822 (73%) -&gt; 7 families, largest 30% archetype 7 of 9 alien forms won ZERO draws -&gt; 12 appear, largest 22% plan stalk+insectoid = 91% -&gt; 6 plans</li><li>None of it was new capability. The face test opened on `body.eyes &gt;= 4` and eyes tops out at exactly 4, so the eye count — the weakest, saturating signal — took first refusal from five better ones.</li><li>THE HORIZON IS NOT EMPTY. backdrop.js — 1,300 lines of tested city/farm shape grammar — was replaced by an empty Object3D and drew nothing.</li><li>THE SOUNDFONT SWAP DUCKS. It stalled: zone ids are font-qualified so two fonts can coexist, which means every zone of an incoming sampled font is a cache miss</li></ul>\n<p><em>Verified:</em> verify.sh 13/13; font-rotation, starcruise and backdrop gates pass. -&gt; v56.</p>\n<p><a href=\"https://stellate.app/embed.html?genre=citypop&amp;seed=9033&amp;path=1530.6199,1549.6232,1511.6232&amp;xdur=13.122\">▶ Play it: Neon Fiscal Year — the embeddable player, in someone else's page</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/27407e31d7cfc124cf50de209f6b344908221c50\">27407e3</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "A STAGING SERVER, AND IT IS THE DEFAULT. ship.sh now deploys to test.stellate.app; stellate.app moves only on `ship.sh --prod`. Same droplet, second vhost over /srv/stellate-test, noindexed twice over (X-Robots-Tag plus its own robots.txt), and /found is a SYMLINK to prod's media so the ~900 MB…\n\n• face eye-ring 600/822 (73%) -> 7 families, largest 30% archetype 7 of 9 alien forms won ZERO draws -> 12 appear, largest 22% plan stalk+insectoid = 91% -> 6 plans\n\n• None of it was new capability. The face test opened on `body.eyes >= 4` and eyes tops out at exactly 4, so the eye count — the weakest, saturating signal — took first refusal from five better ones.\n\n• THE HORIZON IS NOT EMPTY. backdrop.js — 1,300 lines of tested city/farm shape grammar — was replaced by an empty Object3D and drew nothing.\n\n• THE SOUNDFONT SWAP DUCKS. It stalled: zone ids are font-qualified so two fonts can coexist, which means every zone of an incoming sampled font is a cache miss\n\nVerified: verify.sh 13/13; font-rotation, starcruise and backdrop gates pass. -> v56.\n\n▶ Play it: Neon Fiscal Year — the embeddable player, in someone else's page https://stellate.app/embed.html?genre=citypop&seed=9033&path=1530.6199,1549.6232,1511.6232&xdur=13.122\n\n27407e3 https://github.com/aboard-io/stellate/commit/27407e31d7cfc124cf50de209f6b344908221c50",
   "date_published": "2026-07-30T00:00:35.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "embed"
   ]
  },
  {
   "id": "454e2848003aef89ae7ace9d0085dee8ce81611f",
   "url": "https://stellate.app/?genre=bigband&seed=5024&path=814.14134,833.14167,795.14167&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/454e2848003aef89ae7ace9d0085dee8ce81611f",
   "title": "call it analog, open zoomed out, and stop the bass walking over the mix",
   "summary": "FIVE THINGS FROM LISTENING, plus one measurement that answers a question.",
   "content_html": "<p>FIVE THINGS FROM LISTENING, plus one measurement that answers a question.</p>\n<ul><li>CALL IT ANALOG. The font key was `minimoog`; this is an analog-style subtractive voice, not a Model D, and naming it after a specific instrument claims something untrue.</li><li>OPEN FULLY ZOOMED OUT. The first view has one job — show the whole journey — and the only way to be sure of that is to show the whole world.</li><li>THE BASS WAS WALKING OVER THE MIX, and it is the widening's fault. Instruments that were never basses now sit in the bass chair, and the strip they inherited is written for a bass GUITAR: at lpf 5200 a bass…</li><li>THE BASS WAS NOT ON THE BUSES AT ALL. &quot;Never mud / bass stays centered&quot; is right in principle and had been taken all the way to dry</li></ul>\n<p><em>Verified:</em> verify.sh 13/13; all-sampled, segment-parity, strip-fuzz, font-rotation, explorer-ui and genre-viz pass. -&gt; v54.</p>\n<p><a href=\"https://stellate.app/?genre=bigband&amp;seed=5024&amp;path=814.14134,833.14167,795.14167&amp;xdur=13.122\">▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/454e2848003aef89ae7ace9d0085dee8ce81611f\">454e284</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "FIVE THINGS FROM LISTENING, plus one measurement that answers a question.\n\n• CALL IT ANALOG. The font key was `minimoog`; this is an analog-style subtractive voice, not a Model D, and naming it after a specific instrument claims something untrue.\n\n• OPEN FULLY ZOOMED OUT. The first view has one job — show the whole journey — and the only way to be sure of that is to show the whole world.\n\n• THE BASS WAS WALKING OVER THE MIX, and it is the widening's fault. Instruments that were never basses now sit in the bass chair, and the strip they inherited is written for a bass GUITAR: at lpf 5200 a bass…\n\n• THE BASS WAS NOT ON THE BUSES AT ALL. \"Never mud / bass stays centered\" is right in principle and had been taken all the way to dry\n\nVerified: verify.sh 13/13; all-sampled, segment-parity, strip-fuzz, font-rotation, explorer-ui and genre-viz pass. -> v54.\n\n▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments https://stellate.app/?genre=bigband&seed=5024&path=814.14134,833.14167,795.14167&xdur=13.122\n\n454e284 https://github.com/aboard-io/stellate/commit/454e2848003aef89ae7ace9d0085dee8ce81611f",
   "date_published": "2026-07-29T17:21:48.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bigband",
    "sampler"
   ]
  },
  {
   "id": "776415345172c583515ed5cb033d18a741ad1c64",
   "url": "https://stellate.app/?genre=citypop&seed=8732&path=1530.6199,1549.6232,1511.6232&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/776415345172c583515ed5cb033d18a741ad1c64",
   "title": "the set changes instruments every 32 bars, and keeps coming home to the analog one",
   "summary": "fluidr3 → Pure Analog → SGM Pro 15 → Pure Analog → Seattle Glass Factory → Pure Analog → Pure FM → Pure Analog. A full tour every 256 bars, analog on four of the eight steps. app/audio/fonts.js FONT_CYCLE.",
   "content_html": "<p>fluidr3 → Pure Analog → SGM Pro 15 → Pure Analog → Seattle Glass Factory → Pure Analog → Pure FM → Pure Analog. A full tour every 256 bars, analog on four of the eight steps. app/audio/fonts.js FONT_CYCLE.</p>\n<ul><li>THE BLOCKER WAS THAT ZONE IDS WERE NOT FONT-QUALIFIED. Every font reused the same `ins_&lt;instr&gt;_&lt;n&gt;` id pointing at a different file</li><li>THE GENTLE PART NEEDED NOTHING NEW. Set the font, re-target, and the flip queue walks the voices over one at a time — one flip per two bars, HOLD_BARS apart, identity dims first.</li><li><strong>ONE THING WAS GENUINELY MISSING</strong> — state.samplerLib was in no flip. It is the map forceSampled resolves a voice through when the voice carries no sampler of its own, and while every state was built under one soundfont it never mattered.</li><li>Also fixed, my own from earlier this round: warmSetFor's memo key stringified `one.instruments` to &quot;[object Object]&quot;, so the key was really just genre+seed and the warm set never invalidated when the…</li></ul>\n<p><em>Verified:</em> browser/font-rotation.test.js gates it — and NOT with handle.rms(). That is an instantaneous meter: the quietest bar of four identical rides came out 0.0025, 0.1617, 0.0264 and 0.1047, so no…</p>\n<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=8732&amp;path=1530.6199,1549.6232,1511.6232&amp;xdur=13.122\">▶ Play it: Neon Fiscal Year — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/776415345172c583515ed5cb033d18a741ad1c64\">7764153</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "fluidr3 → Pure Analog → SGM Pro 15 → Pure Analog → Seattle Glass Factory → Pure Analog → Pure FM → Pure Analog. A full tour every 256 bars, analog on four of the eight steps. app/audio/fonts.js FONT_CYCLE.\n\n• THE BLOCKER WAS THAT ZONE IDS WERE NOT FONT-QUALIFIED. Every font reused the same `ins_<instr>_<n>` id pointing at a different file\n\n• THE GENTLE PART NEEDED NOTHING NEW. Set the font, re-target, and the flip queue walks the voices over one at a time — one flip per two bars, HOLD_BARS apart, identity dims first.\n\nONE THING WAS GENUINELY MISSING — state.samplerLib was in no flip. It is the map forceSampled resolves a voice through when the voice carries no sampler of its own, and while every state was built under one soundfont it never mattered.\n\n• Also fixed, my own from earlier this round: warmSetFor's memo key stringified `one.instruments` to \"[object Object]\", so the key was really just genre+seed and the warm set never invalidated when the…\n\nVerified: browser/font-rotation.test.js gates it — and NOT with handle.rms(). That is an instantaneous meter: the quietest bar of four identical rides came out 0.0025, 0.1617, 0.0264 and 0.1047, so no…\n\n▶ Play it: Neon Fiscal Year — parked on the genre this change names https://stellate.app/?genre=citypop&seed=8732&path=1530.6199,1549.6232,1511.6232&xdur=13.122\n\n7764153 https://github.com/aboard-io/stellate/commit/776415345172c583515ed5cb033d18a741ad1c64",
   "date_published": "2026-07-29T16:37:34.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "sampler"
   ]
  },
  {
   "id": "c8a70741de63aee1136db123c3aa1f1855e56d5e",
   "url": "https://stellate.app/access.html?genre=ambient&seed=3569",
   "external_url": "https://github.com/aboard-io/stellate/commit/c8a70741de63aee1136db123c3aa1f1855e56d5e",
   "title": "the accessible page's Announce button actually announces",
   "summary": "\"🔊 Announce what's playing\" wrote its snapshot into #announce and stopped there. That element is sr-only + role=alert, so its ONLY effect is a screen reader speaking it — which means with no screen reader running the button did nothing you could see or hear.",
   "content_html": "<p>&quot;🔊 Announce what's playing&quot; wrote its snapshot into #announce and stopped there. That element is sr-only + role=alert, so its ONLY effect is a screen reader speaking it — which means with no screen reader running the button did nothing you could see or hear.</p>\n<ul><li>It now SPEAKS, through the platform's own synthesiser, with a &quot;Speak it aloud&quot; checkbox (default on, persisted) beside it.</li><li>· the live-region path cleared and re-set inside ONE requestAnimationFrame. rAF runs before paint, so both mutations can coalesce into a single accessibility-tree update and an UNCHANGED snapshot gets…</li></ul>\n<p><em>Verified:</em> browser/access-ui.test.js gates the whole contract with the synthesiser stubbed (headless Chromium has one that accepts speak() and makes no sound, which would pass vacuously): speaks once…</p>\n<p><a href=\"https://stellate.app/access.html?genre=ambient&amp;seed=3569\">▶ Play it: Stationary Weather — the accessible text version, where the same music arrives as prose</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/c8a70741de63aee1136db123c3aa1f1855e56d5e\">c8a7074</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "\"🔊 Announce what's playing\" wrote its snapshot into #announce and stopped there. That element is sr-only + role=alert, so its ONLY effect is a screen reader speaking it — which means with no screen reader running the button did nothing you could see or hear.\n\n• It now SPEAKS, through the platform's own synthesiser, with a \"Speak it aloud\" checkbox (default on, persisted) beside it.\n\n• · the live-region path cleared and re-set inside ONE requestAnimationFrame. rAF runs before paint, so both mutations can coalesce into a single accessibility-tree update and an UNCHANGED snapshot gets…\n\nVerified: browser/access-ui.test.js gates the whole contract with the synthesiser stubbed (headless Chromium has one that accepts speak() and makes no sound, which would pass vacuously): speaks once…\n\n▶ Play it: Stationary Weather — the accessible text version, where the same music arrives as prose https://stellate.app/access.html?genre=ambient&seed=3569\n\nc8a7074 https://github.com/aboard-io/stellate/commit/c8a70741de63aee1136db123c3aa1f1855e56d5e",
   "date_published": "2026-07-29T14:42:43.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ambient",
    "accessibility"
   ]
  },
  {
   "id": "069f7ba4c3a87c709a299fda0bc3bb208a5d0f46",
   "url": "https://stellate.app/?genre=transitwave&seed=2172&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/069f7ba4c3a87c709a299fda0bc3bb208a5d0f46",
   "title": "register the last 15 instruments, scope the warm-ahead, and pin the bed budget",
   "summary": "THE MISSING 15 ARE IN. Of the 26 GM presets that were extracted but never registered, 15 are instruments; they are now in SAMPLERS with their extractor zone metadata and named in the pools that should always have had them.",
   "content_html": "<p>THE MISSING 15 ARE IN. Of the 26 GM presets that were extracted but never registered, 15 are instruments; they are now in SAMPLERS with their extractor zone metadata and named in the pools that should always have had them.</p>\n<ul><li>registered in SAMPLERS 108 -&gt; 123 reached by some state 102 -&gt; 122 (only synth_drum, an unpitched GM drum patch, goes unused) overall effective 62.1 -&gt; 95.0 bass distinct / effective 21/10.4 -&gt; 43/35.9 pad…</li><li>Checked: 825,424 pitched sampler notes across the catalogue, every one resolving to a real zone; every registered zone file present on disk; matrix 274/274.</li><li>THE WARM-AHEAD WAS FETCHING THE WHOLE LIBRARY, and counting the bed budget is how that surfaced. A state's foundSources carries the ENTIRE candidate sampler library — measured 629 zone rows, ~105 MB</li><li>BEDS 3.44 per track (max 6), 1.31 MB BBC reach 38.5% FOUND 3.98 per track, 1.51 MB (beds+breaks+chops+hits+vox) INSTRUMENT 23 zones per track, 3.21 MB (what the song can voice) a track's fetched media: 4.72 MB</li></ul>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=2172&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/069f7ba4c3a87c709a299fda0bc3bb208a5d0f46\">069f7ba</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "THE MISSING 15 ARE IN. Of the 26 GM presets that were extracted but never registered, 15 are instruments; they are now in SAMPLERS with their extractor zone metadata and named in the pools that should always have had them.\n\n• registered in SAMPLERS 108 -> 123 reached by some state 102 -> 122 (only synth_drum, an unpitched GM drum patch, goes unused) overall effective 62.1 -> 95.0 bass distinct / effective 21/10.4 -> 43/35.9 pad…\n\n• Checked: 825,424 pitched sampler notes across the catalogue, every one resolving to a real zone; every registered zone file present on disk; matrix 274/274.\n\n• THE WARM-AHEAD WAS FETCHING THE WHOLE LIBRARY, and counting the bed budget is how that surfaced. A state's foundSources carries the ENTIRE candidate sampler library — measured 629 zone rows, ~105 MB\n\n• BEDS 3.44 per track (max 6), 1.31 MB BBC reach 38.5% FOUND 3.98 per track, 1.51 MB (beds+breaks+chops+hits+vox) INSTRUMENT 23 zones per track, 3.21 MB (what the song can voice) a track's fetched media: 4.72 MB\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=2172&path=749.12536,768.12569,730.12569&xdur=13.122\n\n069f7ba https://github.com/aboard-io/stellate/commit/069f7ba4c3a87c709a299fda0bc3bb208a5d0f46",
   "date_published": "2026-07-29T13:15:51.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "bf33eb086222e23fb79eb569544f4cd04d2e7154",
   "url": "https://stellate.app/?genre=sequinfreight&seed=8760&path=1231.7188,859.2784,1530.6221&xdur=0.168",
   "external_url": "https://github.com/aboard-io/stellate/commit/bf33eb086222e23fb79eb569544f4cd04d2e7154",
   "title": "the bass chair is not restricted to basses, and the flip queue stops missing re-picks",
   "summary": "WIDEN THE POOLS. The bass was the narrowest voice in the instrument by a distance — 21 distinct, an EFFECTIVE 10.4 (2^entropy), one upright on 22% of every sampled bass in the catalogue — while the lead ran 81 distinct / 54.5 effective.",
   "content_html": "<p>WIDEN THE POOLS. The bass was the narrowest voice in the instrument by a distance — 21 distinct, an EFFECTIVE 10.4 (2^entropy), one upright on 22% of every sampled bass in the catalogue — while the lead ran 81 distinct / 54.5 effective.</p>\n<ul><li>The list is now &quot;what can HOLD DOWN THE BOTTOM&quot;, not &quot;what is sold as a bass&quot;: a tuba is the bass of a brass band, a bari sax the bass of a ska horn line, a cello and a bassoon are bass instruments with other…</li><li>bass distinct / effective 21 / 10.4 -&gt; 41 / 25.4 pad distinct / effective 45 / 21.9 -&gt; 54 / 35.3 library reached 102 of 108 -&gt; 106 of 108 overall effective 62.1 -&gt; 79.1 top 10 share of voices 35.5% -&gt; 25.1%</li><li>seed 1 22 distinct / effective 8.1 -&gt; 40 / 30.8 (was yamaha_grand_piano on 31% of genres) seed 7 20 distinct / effective 6.0 -&gt; 39 / 29.4 (was picked_bass on 40%)</li><li>At one seed it now reads: citypop pizzicato strings, jazz upright, dub contrabass, ambient harp, disco church organ, neoclassical felt piano</li></ul>\n<p><a href=\"https://stellate.app/?genre=sequinfreight&amp;seed=8760&amp;path=1231.7188,859.2784,1530.6221&amp;xdur=0.168\">▶ Play it: Mirrorball Tonnage → Requiem Appendix → Neon Fiscal Year — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/bf33eb086222e23fb79eb569544f4cd04d2e7154\">bf33eb0</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "WIDEN THE POOLS. The bass was the narrowest voice in the instrument by a distance — 21 distinct, an EFFECTIVE 10.4 (2^entropy), one upright on 22% of every sampled bass in the catalogue — while the lead ran 81 distinct / 54.5 effective.\n\n• The list is now \"what can HOLD DOWN THE BOTTOM\", not \"what is sold as a bass\": a tuba is the bass of a brass band, a bari sax the bass of a ska horn line, a cello and a bassoon are bass instruments with other…\n\n• bass distinct / effective 21 / 10.4 -> 41 / 25.4 pad distinct / effective 45 / 21.9 -> 54 / 35.3 library reached 102 of 108 -> 106 of 108 overall effective 62.1 -> 79.1 top 10 share of voices 35.5% -> 25.1%\n\n• seed 1 22 distinct / effective 8.1 -> 40 / 30.8 (was yamaha_grand_piano on 31% of genres) seed 7 20 distinct / effective 6.0 -> 39 / 29.4 (was picked_bass on 40%)\n\n• At one seed it now reads: citypop pizzicato strings, jazz upright, dub contrabass, ambient harp, disco church organ, neoclassical felt piano\n\n▶ Play it: Mirrorball Tonnage → Requiem Appendix → Neon Fiscal Year — the three genres this change names, as one path https://stellate.app/?genre=sequinfreight&seed=8760&path=1231.7188,859.2784,1530.6221&xdur=0.168\n\nbf33eb0 https://github.com/aboard-io/stellate/commit/bf33eb086222e23fb79eb569544f4cd04d2e7154",
   "date_published": "2026-07-29T12:41:42.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "sequinfreight",
    "neoclassical",
    "citypop",
    "sampler"
   ]
  },
  {
   "id": "95b800f6c99e653d94214c73825c0e760b7f90e7",
   "url": "https://stellate.app/?genre=spokenword&seed=1054&path=196.11721,215.11754,177.11754&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/95b800f6c99e653d94214c73825c0e760b7f90e7",
   "title": "the gates ask the engine instead of repeating it, and the landing stops yanking",
   "summary": "Nine red gates, diagnosed. Eight were the SAME failure in different clothes: a gate that spelled out a fact the engine owns, and went red when the engine moved.",
   "content_html": "<p>Nine red gates, diagnosed. Eight were the SAME failure in different clothes: a gate that spelled out a fact the engine owns, and went red when the engine moved.</p>\n<ul><li>all-sampled / segment-parity / vocoder spelled found/&lt;id&gt;.mp3. The engine names fetched media found/&lt;id&gt;.64.mp3 (the bitrate rides in the name because found/ is immutable-by-name) and a synthText source has NO…</li><li>STARCRUISE-BARCADENCE WAS REAL. The descent is built to arrive at SURFACE_POSE at essentially zero velocity (0.0036 units on the last transit frame), and the landed camera's establish ease then ran a…</li><li>Also, from the instrument analysis: the ⓘ read General MIDI catalog indices out loud. GM numbers its variants — &quot;Synth Bass 2&quot;, &quot;Synth Strings 1&quot;</li></ul>\n<p><em>Verified:</em> verify.sh 13/13. -&gt; v49.</p>\n<p><a href=\"https://stellate.app/?genre=spokenword&amp;seed=1054&amp;path=196.11721,215.11754,177.11754&amp;xdur=13.122\">▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/95b800f6c99e653d94214c73825c0e760b7f90e7\">95b800f</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Nine red gates, diagnosed. Eight were the SAME failure in different clothes: a gate that spelled out a fact the engine owns, and went red when the engine moved.\n\n• all-sampled / segment-parity / vocoder spelled found/<id>.mp3. The engine names fetched media found/<id>.64.mp3 (the bitrate rides in the name because found/ is immutable-by-name) and a synthText source has NO…\n\n• STARCRUISE-BARCADENCE WAS REAL. The descent is built to arrive at SURFACE_POSE at essentially zero velocity (0.0036 units on the last transit frame), and the landed camera's establish ease then ran a…\n\n• Also, from the instrument analysis: the ⓘ read General MIDI catalog indices out loud. GM numbers its variants — \"Synth Bass 2\", \"Synth Strings 1\"\n\nVerified: verify.sh 13/13. -> v49.\n\n▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices https://stellate.app/?genre=spokenword&seed=1054&path=196.11721,215.11754,177.11754&xdur=13.122\n\n95b800f https://github.com/aboard-io/stellate/commit/95b800f6c99e653d94214c73825c0e760b7f90e7",
   "date_published": "2026-07-29T11:46:58.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "spokenword",
    "voice"
   ]
  },
  {
   "id": "075d2b1188e747408bc7879b852d3c9d6190628f",
   "url": "https://stellate.app/?genre=spokenword&seed=4385&path=196.11721,215.11754,177.11754&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/075d2b1188e747408bc7879b852d3c9d6190628f",
   "title": "every station has a name to say, the flat shelves are cast, and the horizon is halved",
   "summary": "Three decisions and the work they imply.",
   "content_html": "<p>Three decisions and the work they imply.</p>\n<ul><li>THE IDENT TIER GETS ITS 45 MISSING BANKS. A genre whose form is dj/drop/vamp speaks a station ident over its own NameBank identity, but 45 of the 65 had no per-genre bank and fell back to GENERIC</li><li>Two defects found while writing them. A band name may not also be a title or an album inside its own bank — the exact collision the ident code cut two frames over</li><li>THE FLAT VOICE SHELVES ARE CAST, and the remaining drops turn out to be structural rather than a curation gap.</li><li>THE PRECACHE HORIZON IS HALVED, 10 minutes -&gt; 5 (HORIZON_MIN). Everything downstream is derived from it, so the fences, the moving horizon and resume are unchanged</li></ul>\n<p><em>Verified:</em> gates/speech.test.js was red before this branch and is now green and doing more: its &quot;no other genre grows a synthText source&quot; law had been superseded by the IDENT tier (techno's form is…</p>\n<p><a href=\"https://stellate.app/?genre=spokenword&amp;seed=4385&amp;path=196.11721,215.11754,177.11754&amp;xdur=13.122\">▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/075d2b1188e747408bc7879b852d3c9d6190628f\">075d2b1</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Three decisions and the work they imply.\n\n• THE IDENT TIER GETS ITS 45 MISSING BANKS. A genre whose form is dj/drop/vamp speaks a station ident over its own NameBank identity, but 45 of the 65 had no per-genre bank and fell back to GENERIC\n\n• Two defects found while writing them. A band name may not also be a title or an album inside its own bank — the exact collision the ident code cut two frames over\n\n• THE FLAT VOICE SHELVES ARE CAST, and the remaining drops turn out to be structural rather than a curation gap.\n\n• THE PRECACHE HORIZON IS HALVED, 10 minutes -> 5 (HORIZON_MIN). Everything downstream is derived from it, so the fences, the moving horizon and resume are unchanged\n\nVerified: gates/speech.test.js was red before this branch and is now green and doing more: its \"no other genre grows a synthText source\" law had been superseded by the IDENT tier (techno's form is…\n\n▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices https://stellate.app/?genre=spokenword&seed=4385&path=196.11721,215.11754,177.11754&xdur=13.122\n\n075d2b1 https://github.com/aboard-io/stellate/commit/075d2b1188e747408bc7879b852d3c9d6190628f",
   "date_published": "2026-07-29T10:42:39.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "spokenword",
    "voice"
   ]
  },
  {
   "id": "9fed970d54e708aa8a9e2643f0f370839c11ebf6",
   "url": "https://stellate.app/?genre=citypop&seed=6045&path=1530.6221,1747.7896&xdur=0.444",
   "external_url": "https://github.com/aboard-io/stellate/commit/9fed970d54e708aa8a9e2643f0f370839c11ebf6",
   "title": "the readout tells the truth about the bar it is hearing, and the loop opens on a song",
   "summary": "Two reports from the field, both invisible to verify.sh because neither the release suite nor CI rides the live path.",
   "content_html": "<p>Two reports from the field, both invisible to verify.sh because neither the release suite nor CI rides the live path.</p>\n<ul><li>&quot;All the tracks are playing but only two show notes in the ⓘ.&quot; The live walk picks its section BY INDEX — secs[secIdx]; the name is only a label</li><li>&quot;crunch guitar says it is missing.&quot; Two defects, one of them not the reported one. The ring route kicked a sampler zone's decode on the first bar that SOUNDED it, so the transit form's metal solo</li><li>The opening loop spawns on city pop instead of on the geometric middle of the chart, and climbs: candidates for each vertex must be at least as danceable as the spawn, the pick maximizes ENERGY less an…</li><li>the pure-node starcruise probes needed a package-type MARKER, not a package-type decision: three &quot;type&quot;: &quot;module&quot; files in app/, vendor/simplex-noise/ and vendor/three/, matching the one vendor/espeak-ng/…</li></ul>\n<p><em>Verified:</em> verify.sh 13/13. → v46.</p>\n<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=6045&amp;path=1530.6221,1747.7896&amp;xdur=0.444\">▶ Play it: Neon Fiscal Year → Nichrome Panic — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/9fed970d54e708aa8a9e2643f0f370839c11ebf6\">9fed970</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Two reports from the field, both invisible to verify.sh because neither the release suite nor CI rides the live path.\n\n• \"All the tracks are playing but only two show notes in the ⓘ.\" The live walk picks its section BY INDEX — secs[secIdx]; the name is only a label\n\n• \"crunch guitar says it is missing.\" Two defects, one of them not the reported one. The ring route kicked a sampler zone's decode on the first bar that SOUNDED it, so the transit form's metal solo\n\n• The opening loop spawns on city pop instead of on the geometric middle of the chart, and climbs: candidates for each vertex must be at least as danceable as the spawn, the pick maximizes ENERGY less an…\n\n• the pure-node starcruise probes needed a package-type MARKER, not a package-type decision: three \"type\": \"module\" files in app/, vendor/simplex-noise/ and vendor/three/, matching the one vendor/espeak-ng/…\n\nVerified: verify.sh 13/13. → v46.\n\n▶ Play it: Neon Fiscal Year → Nichrome Panic — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=citypop&seed=6045&path=1530.6221,1747.7896&xdur=0.444\n\n9fed970 https://github.com/aboard-io/stellate/commit/9fed970d54e708aa8a9e2643f0f370839c11ebf6",
   "date_published": "2026-07-29T04:54:07.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "toastercore",
    "voice"
   ]
  },
  {
   "id": "c8b889b648d34ebcabf86b72a06011d721e6cc87",
   "url": "https://stellate.app/?genre=vaporwave&seed=8078&path=1679.4415,292.16891,1718.20526&xdur=0.046",
   "external_url": "https://github.com/aboard-io/stellate/commit/c8b889b648d34ebcabf86b72a06011d721e6cc87",
   "title": "the opening loop is spread in the direction that is cheap",
   "summary": "Two corrections to the previous attempt, both found by measuring rather than by looking.",
   "content_html": "<p>Two corrections to the previous attempt, both found by measuring rather than by looking.</p>\n<ul><li>FIRST, the radius was circular in a space that is not. drawMap fits each axis to the viewport independently (X = x*width/WORLD_W, Y = y*height/WORLD_H) and the world is ~10x taller than wide, so one world unit…</li><li>SECOND, and this is what the gate caught: the previous commit claimed loop duration was unaffected because paceSpeed scales with the perimeter.</li><li>So the shape changed instead of the size. The triangle now uses its two LOWER vertices rather than the top one, because the dropped vertex pointed straight up — the expensive direction.</li><li>Screen legs 373/695/389 px against a 67px halo — a 239px clear gap where the nearest pair used to overlap. Perimeter 4432, under the 4523 that already walked cleanly.</li></ul>\n<p><em>Verified:</em> verify.sh 13/13; explorer-ui, share-url, full-boot, feed-links, genre-viz pass.</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=8078&amp;path=1679.4415,292.16891,1718.20526&amp;xdur=0.046\">▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/c8b889b648d34ebcabf86b72a06011d721e6cc87\">c8b889b</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Two corrections to the previous attempt, both found by measuring rather than by looking.\n\n• FIRST, the radius was circular in a space that is not. drawMap fits each axis to the viewport independently (X = x*width/WORLD_W, Y = y*height/WORLD_H) and the world is ~10x taller than wide, so one world unit…\n\n• SECOND, and this is what the gate caught: the previous commit claimed loop duration was unaffected because paceSpeed scales with the perimeter.\n\n• So the shape changed instead of the size. The triangle now uses its two LOWER vertices rather than the top one, because the dropped vertex pointed straight up — the expensive direction.\n\n• Screen legs 373/695/389 px against a 67px halo — a 239px clear gap where the nearest pair used to overlap. Perimeter 4432, under the 4523 that already walked cleanly.\n\nVerified: verify.sh 13/13; explorer-ui, share-url, full-boot, feed-links, genre-viz pass.\n\n▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix https://stellate.app/?genre=vaporwave&seed=8078&path=1679.4415,292.16891,1718.20526&xdur=0.046\n\nc8b889b https://github.com/aboard-io/stellate/commit/c8b889b648d34ebcabf86b72a06011d721e6cc87",
   "date_published": "2026-07-29T03:34:45.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "jazz",
    "jungle",
    "travel"
   ]
  },
  {
   "id": "e642db2d7122f68f8ffa06422669c396e4fb8f37",
   "url": "https://stellate.app/?genre=doomdrone&seed=9165&path=1579.13027,1107.11381,1161.12218&xdur=0.433",
   "external_url": "https://github.com/aboard-io/stellate/commit/e642db2d7122f68f8ffa06422669c396e4fb8f37",
   "title": "the opening loop opens wider",
   "summary": "The three numbered waypoints sat close enough together that the default loop read as one cluster rather than a journey. Radius x3, which buys 2.4x of actual spread: perimeter 1853 -> 4523, legs 414/911/529 -> 1251/2087/1185.",
   "content_html": "<p>The three numbered waypoints sat close enough together that the default loop read as one cluster rather than a journey. Radius x3, which buys 2.4x of actual spread: perimeter 1853 -&gt; 4523, legs 414/911/529 -&gt; 1251/2087/1185.</p>\n<ul><li>The multiplier and the result differ because the spread saturates — the two outer points snap to the nearest genre, so past a point a bigger radius just picks a different neighbour.</li><li>Loop DURATION is unchanged, which is the reason this is safe to do: paceSpeed scales with the perimeter and loopDuration does not, so the traveler moves faster in world units and crosses more genres in the…</li><li>The loop now opens on standbylightdrive and silkmist rather than lasertemple and doomdrone.</li></ul>\n<p><em>Verified:</em> verify.sh 13/13; explorer-ui, share-url, full-boot and feed-links all pass.</p>\n<p><a href=\"https://stellate.app/?genre=doomdrone&amp;seed=9165&amp;path=1579.13027,1107.11381,1161.12218&amp;xdur=0.433\">▶ Play it: Subduction Hymnal → Diode Vigil → Collimated Chapel — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/e642db2d7122f68f8ffa06422669c396e4fb8f37\">e642db2</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The three numbered waypoints sat close enough together that the default loop read as one cluster rather than a journey. Radius x3, which buys 2.4x of actual spread: perimeter 1853 -> 4523, legs 414/911/529 -> 1251/2087/1185.\n\n• The multiplier and the result differ because the spread saturates — the two outer points snap to the nearest genre, so past a point a bigger radius just picks a different neighbour.\n\n• Loop DURATION is unchanged, which is the reason this is safe to do: paceSpeed scales with the perimeter and loopDuration does not, so the traveler moves faster in world units and crosses more genres in the…\n\n• The loop now opens on standbylightdrive and silkmist rather than lasertemple and doomdrone.\n\nVerified: verify.sh 13/13; explorer-ui, share-url, full-boot and feed-links all pass.\n\n▶ Play it: Subduction Hymnal → Diode Vigil → Collimated Chapel — the three genres this change names, as one path https://stellate.app/?genre=doomdrone&seed=9165&path=1579.13027,1107.11381,1161.12218&xdur=0.433\n\ne642db2 https://github.com/aboard-io/stellate/commit/e642db2d7122f68f8ffa06422669c396e4fb8f37",
   "date_published": "2026-07-29T03:08:05.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "doomdrone",
    "standbylightdrive",
    "lasertemple",
    "mix"
   ]
  },
  {
   "id": "ccbf8f0752ba47266d8c9087cd858e5c97fc3b1e",
   "url": "https://stellate.app/?genre=jungle&seed=5055&path=1718.20504,1737.20537,1699.20537&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/ccbf8f0752ba47266d8c9087cd858e5c97fc3b1e",
   "title": "tidy: retire the finished queue, keep the reasoning",
   "summary": "docs/TODO.md was 1,192 lines describing work that is done, and it held 38 of the 48 citations in this repo that point at files no longer there. Rewritten to 113 lines of what is actually open, keeping the measurements that make each item decidable",
   "content_html": "<p>docs/TODO.md was 1,192 lines describing work that is done, and it held 38 of the 48 citations in this repo that point at files no longer there. Rewritten to 113 lines of what is actually open, keeping the measurements that make each item decidable</p>\n<ul><li>Dead path citations across the tree: 48 -&gt; 17. The four that survive in source are deliberate: two documented dead pointers, a HEAD-compatibility fallback that must name the old path to work, and one…</li><li>WHAT I DID NOT DO. Roughly a hundred comments in app/ and engine/ narrate the past — &quot;the live granular bed used to mint ~28 buffers&quot;, &quot;on touchdown the landed camera used to SNAP&quot;.</li><li>Removed instead: five dated attributions in test/ that narrate a reorg rather than explain a mechanism, and a stray jungle-s7.state.json at the repo root.</li><li>The three starcruise pure-node probes are renamed .mjs and given a createRequire shim, which fixes the half-converted CJS/ESM mixing inside them.</li></ul>\n<p><em>Verified:</em> verify.sh 13/13.</p>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=5055&amp;path=1718.20504,1737.20537,1699.20537&amp;xdur=13.122\">▶ Play it: Barometric Stampede — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/ccbf8f0752ba47266d8c9087cd858e5c97fc3b1e\">ccbf8f0</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "docs/TODO.md was 1,192 lines describing work that is done, and it held 38 of the 48 citations in this repo that point at files no longer there. Rewritten to 113 lines of what is actually open, keeping the measurements that make each item decidable\n\n• Dead path citations across the tree: 48 -> 17. The four that survive in source are deliberate: two documented dead pointers, a HEAD-compatibility fallback that must name the old path to work, and one…\n\n• WHAT I DID NOT DO. Roughly a hundred comments in app/ and engine/ narrate the past — \"the live granular bed used to mint ~28 buffers\", \"on touchdown the landed camera used to SNAP\".\n\n• Removed instead: five dated attributions in test/ that narrate a reorg rather than explain a mechanism, and a stray jungle-s7.state.json at the repo root.\n\n• The three starcruise pure-node probes are renamed .mjs and given a createRequire shim, which fixes the half-converted CJS/ESM mixing inside them.\n\nVerified: verify.sh 13/13.\n\n▶ Play it: Barometric Stampede — parked on the genre this change names https://stellate.app/?genre=jungle&seed=5055&path=1718.20504,1737.20537,1699.20537&xdur=13.122\n\nccbf8f0 https://github.com/aboard-io/stellate/commit/ccbf8f0752ba47266d8c9087cd858e5c97fc3b1e",
   "date_published": "2026-07-29T02:44:58.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "found"
   ]
  },
  {
   "id": "2afdfaf24443b5be8a48cb90c68dea54316a157e",
   "url": "https://stellate.app/access.html?genre=ambient&seed=1922",
   "external_url": "https://github.com/aboard-io/stellate/commit/2afdfaf24443b5be8a48cb90c68dea54316a157e",
   "title": "Stage F: the docs describe this repository",
   "summary": "Every documented command was executed or path-resolved — 502 invocations across 177 distinct targets — and every quantitative claim checked against the code rather than against the last person who wrote it down.",
   "content_html": "<p>Every documented command was executed or path-resolved — 502 invocations across 177 distinct targets — and every quantitative claim checked against the code rather than against the last person who wrote it down.</p>\n<ul><li>CLAUDE.md and ARCHITECTURE.md now document engine/genres-data.js and engine/registry-data.js, which held the entire genre catalogue and the sample registries while being mentioned nowhere.</li><li>Descriptions ARE generated, and both files now say hand-editing them is forbidden. That is the failure that rotted genre-specs the first time.</li><li>ARCHITECTURE's load order was wrong in content as well as in paths: it omitted two engine scripts and put an async counter inside the ordered chain.</li><li><strong>FIXED IN THE LEDGER</strong> — SOURCES.md pointed at engine/faust/voices/sf2.js. There is no such file — it is build/sf2.js, and the wrong path was introduced by this session's own doc pass, in the one file whose rows are legally…</li></ul>\n<p><em>Verified:</em> verify.sh 13/13.</p>\n<p><a href=\"https://stellate.app/access.html?genre=ambient&amp;seed=1922\">▶ Play it: Stationary Weather — the accessible text version, where the same music arrives as prose</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/2afdfaf24443b5be8a48cb90c68dea54316a157e\">2afdfaf</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Every documented command was executed or path-resolved — 502 invocations across 177 distinct targets — and every quantitative claim checked against the code rather than against the last person who wrote it down.\n\n• CLAUDE.md and ARCHITECTURE.md now document engine/genres-data.js and engine/registry-data.js, which held the entire genre catalogue and the sample registries while being mentioned nowhere.\n\n• Descriptions ARE generated, and both files now say hand-editing them is forbidden. That is the failure that rotted genre-specs the first time.\n\n• ARCHITECTURE's load order was wrong in content as well as in paths: it omitted two engine scripts and put an async counter inside the ordered chain.\n\nFIXED IN THE LEDGER — SOURCES.md pointed at engine/faust/voices/sf2.js. There is no such file — it is build/sf2.js, and the wrong path was introduced by this session's own doc pass, in the one file whose rows are legally…\n\nVerified: verify.sh 13/13.\n\n▶ Play it: Stationary Weather — the accessible text version, where the same music arrives as prose https://stellate.app/access.html?genre=ambient&seed=1922\n\n2afdfaf https://github.com/aboard-io/stellate/commit/2afdfaf24443b5be8a48cb90c68dea54316a157e",
   "date_published": "2026-07-28T23:21:04.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ambient",
    "accessibility"
   ]
  },
  {
   "id": "0a76d1bafc1437fa5a230e6c53ece1687e67cd34",
   "url": "https://stellate.app/access.html?genre=ambient&seed=6098",
   "external_url": "https://github.com/aboard-io/stellate/commit/0a76d1bafc1437fa5a230e6c53ece1687e67cd34",
   "title": "Stage D: the tree says what it is",
   "summary": "app/ is five folders instead of seventeen loose modules: core (state, world, share), audio (live, targeting, fonts, precache, export, notefeed), map, panels, entries. engine/faust/ separates the three unrelated things it had been holding in one place — live/ press/ voices/ codec/ build/ data/.",
   "content_html": "<p>app/ is five folders instead of seventeen loose modules: core (state, world, share), audio (live, targeting, fonts, precache, export, notefeed), map, panels, entries. engine/faust/ separates the three unrelated things it had been holding in one place — live/ press/ voices/ codec/ build/ data/.</p>\n<ul><li>THE CYCLE. app/ carried two import cycles that worked only because ESM live-bindings resolve at call time.</li><li>THREE SPLITS. starcruise.js 2,297 -&gt; bridge/scene/camera/probes; starmap.js 910 -&gt; viewport/layout/draw/gestures/viz-zoom behind an unchanged import surface</li><li>THE PAGES. Six HTML files carried duplicated head and inline style; the CSS is extracted and the social head is consistent and gated.</li><li>FIVE REGRESSIONS the sweep caught and fixed, each broken-then-green: three test/unit gates and one tools/build script had require paths one level off after the move, which no import checker sees because they…</li></ul>\n<p><em>Verified:</em> verify.sh 13/13. diagonal dominant: 274/274. meter green. Structure is all any of that proves; the ears are still owed.</p>\n<p><a href=\"https://stellate.app/access.html?genre=ambient&amp;seed=6098\">▶ Play it: Stationary Weather — the accessible text version, where the same music arrives as prose</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/0a76d1bafc1437fa5a230e6c53ece1687e67cd34\">0a76d1b</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "app/ is five folders instead of seventeen loose modules: core (state, world, share), audio (live, targeting, fonts, precache, export, notefeed), map, panels, entries. engine/faust/ separates the three unrelated things it had been holding in one place — live/ press/ voices/ codec/ build/ data/.\n\n• THE CYCLE. app/ carried two import cycles that worked only because ESM live-bindings resolve at call time.\n\n• THREE SPLITS. starcruise.js 2,297 -> bridge/scene/camera/probes; starmap.js 910 -> viewport/layout/draw/gestures/viz-zoom behind an unchanged import surface\n\n• THE PAGES. Six HTML files carried duplicated head and inline style; the CSS is extracted and the social head is consistent and gated.\n\n• FIVE REGRESSIONS the sweep caught and fixed, each broken-then-green: three test/unit gates and one tools/build script had require paths one level off after the move, which no import checker sees because they…\n\nVerified: verify.sh 13/13. diagonal dominant: 274/274. meter green. Structure is all any of that proves; the ears are still owed.\n\n▶ Play it: Stationary Weather — the accessible text version, where the same music arrives as prose https://stellate.app/access.html?genre=ambient&seed=6098\n\n0a76d1b https://github.com/aboard-io/stellate/commit/0a76d1bafc1437fa5a230e6c53ece1687e67cd34",
   "date_published": "2026-07-28T19:52:37.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ambient",
    "accessibility"
   ]
  },
  {
   "id": "61a699435187be41feb2780fcf77f57d3a12c98c",
   "url": "https://stellate.app/?genre=transitwave&seed=3163&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/61a699435187be41feb2780fcf77f57d3a12c98c",
   "title": "sw: v43 -> v44, so the deployed build actually reaches a browser",
   "summary": "The last deploy shipped new engine code under an unchanged service-worker version. sw.js was byte-identical between the two deploys, so no browser ever saw a new worker, no install fired, APP_CACHE kept its name, and every returning client went on being served the previous app shell cache-first.",
   "content_html": "<p>The last deploy shipped new engine code under an unchanged service-worker version. sw.js was byte-identical between the two deploys, so no browser ever saw a new worker, no install fired, APP_CACHE kept its name, and every returning client went on being served the previous app shell cache-first.</p>\n<ul><li>The visible symptom was a wall of 404s for found/&lt;id&gt;.mp3 — the pre-diet filenames, requested by the stale shell, against a server that now holds only found/&lt;id&gt;.64.mp3.</li><li>This is what the comment on VERSION has always said to do.</li></ul>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=3163&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/61a699435187be41feb2780fcf77f57d3a12c98c\">61a6994</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The last deploy shipped new engine code under an unchanged service-worker version. sw.js was byte-identical between the two deploys, so no browser ever saw a new worker, no install fired, APP_CACHE kept its name, and every returning client went on being served the previous app shell cache-first.\n\n• The visible symptom was a wall of 404s for found/<id>.mp3 — the pre-diet filenames, requested by the stale shell, against a server that now holds only found/<id>.64.mp3.\n\n• This is what the comment on VERSION has always said to do.\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=3163&path=749.12536,768.12569,730.12569&xdur=13.122\n\n61a6994 https://github.com/aboard-io/stellate/commit/61a699435187be41feb2780fcf77f57d3a12c98c",
   "date_published": "2026-07-28T18:23:41.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "d09417e61a4b00da140e9750941daa179c80cdda",
   "url": "https://stellate.app/?genre=meadhallbellow&seed=5374&path=461.14316,1405.21491,1237.17819&xdur=0.103",
   "external_url": "https://github.com/aboard-io/stellate/commit/d09417e61a4b00da140e9750941daa179c80cdda",
   "title": "export the specs: 274 descriptions and two fences, round-tripped",
   "summary": "genre-specs mirror the kernel's info string and the verifier's target row, so the generated descriptions and the dub/meadhallbellow fence moves both land here. Regenerated with `node tools/genre-tool.js export --all`, not by hand — the diff is 274 info lines and the two fences, nothing else.",
   "content_html": "<p>genre-specs mirror the kernel's info string and the verifier's target row, so the generated descriptions and the dub/meadhallbellow fence moves both land here. Regenerated with `node tools/genre-tool.js export --all`, not by hand — the diff is 274 info lines and the two fences, nothing else.</p>\n<p><a href=\"https://stellate.app/?genre=meadhallbellow&amp;seed=5374&amp;path=461.14316,1405.21491,1237.17819&amp;xdur=0.103\">▶ Play it: Diaphragm Muster → Titration Rapture → Polyrhythm Senate — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/d09417e61a4b00da140e9750941daa179c80cdda\">d09417e</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "genre-specs mirror the kernel's info string and the verifier's target row, so the generated descriptions and the dub/meadhallbellow fence moves both land here. Regenerated with `node tools/genre-tool.js export --all`, not by hand — the diff is 274 info lines and the two fences, nothing else.\n\n▶ Play it: Diaphragm Muster → Titration Rapture → Polyrhythm Senate — the three genres this change names, as one path https://stellate.app/?genre=meadhallbellow&seed=5374&path=461.14316,1405.21491,1237.17819&xdur=0.103\n\nd09417e https://github.com/aboard-io/stellate/commit/d09417e61a4b00da140e9750941daa179c80cdda",
   "date_published": "2026-07-28T15:28:48.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "meadhallbellow",
    "acidhouse",
    "afrobeat",
    "voice"
   ]
  },
  {
   "id": "dc447ca477d0b0c4b64be7ae8dc97ba2e4671c8c",
   "url": "https://stellate.app/?genre=boombap&seed=4876&path=205.10395,461.14316&xdur=0.191",
   "external_url": "https://github.com/aboard-io/stellate/commit/dc447ca477d0b0c4b64be7ae8dc97ba2e4671c8c",
   "title": "the found layer gets heard, the ⓘ tells the truth, aliens leave the boot path",
   "summary": "Nine measured changes, each gated on its own numbers rather than on a hunch.",
   "content_html": "<p>Nine measured changes, each gated on its own numbers rather than on a hunch.</p>\n<ul><li>The found layer was diluted and rare. Bed/narration pools now expand wider and cap at 12 (break/chops deliberately untouched</li><li>The hits coin was the real rarity: 70% of tracks carried no one-shot layer at all. Lifting each genre's authored probability through p -&gt; 1-(1-p)^5 preserves the endpoints and the per-genre ordering while…</li><li>The speech idents kept their tier but lost two of five forms. Read as text across all 2480 realized lines, the split was total: three forms are station idiom and score 100% plausible-or-filler</li><li>The 274 descriptions are repaired in the generator as value-keyed tables, never per-genre overrides. 45% of them said &quot;a light shuffle&quot; because one swing bucket spanned .02-.08</li></ul>\n<p><a href=\"https://stellate.app/?genre=boombap&amp;seed=4876&amp;path=205.10395,461.14316&amp;xdur=0.191\">▶ Play it: Milk Crate Scripture → Diaphragm Muster — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/dc447ca477d0b0c4b64be7ae8dc97ba2e4671c8c\">dc447ca</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Nine measured changes, each gated on its own numbers rather than on a hunch.\n\n• The found layer was diluted and rare. Bed/narration pools now expand wider and cap at 12 (break/chops deliberately untouched\n\n• The hits coin was the real rarity: 70% of tracks carried no one-shot layer at all. Lifting each genre's authored probability through p -> 1-(1-p)^5 preserves the endpoints and the per-genre ordering while…\n\n• The speech idents kept their tier but lost two of five forms. Read as text across all 2480 realized lines, the split was total: three forms are station idiom and score 100% plausible-or-filler\n\n• The 274 descriptions are repaired in the generator as value-keyed tables, never per-genre overrides. 45% of them said \"a light shuffle\" because one swing bucket spanned .02-.08\n\n▶ Play it: Milk Crate Scripture → Diaphragm Muster — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=boombap&seed=4876&path=205.10395,461.14316&xdur=0.191\n\ndc447ca https://github.com/aboard-io/stellate/commit/dc447ca477d0b0c4b64be7ae8dc97ba2e4671c8c",
   "date_published": "2026-07-28T15:27:11.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "boombap",
    "meadhallbellow",
    "embed"
   ]
  },
  {
   "id": "9b72aeedd5e4e12cc70be370ccd2add980fe8807",
   "url": "https://stellate.app/?genre=spokenword&seed=1365&path=196.11721,215.11754,177.11754&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/9b72aeedd5e4e12cc70be370ccd2add980fe8807",
   "title": "TODO: make the queue tell the truth before we clear context",
   "summary": "The running queue is the handoff document, and it was describing a repo that stopped existing about eighteen commits ago. Rewritten as something a fresh context can act on without re-deriving anything.",
   "content_html": "<p>The running queue is the handoff document, and it was describing a repo that stopped existing about eighteen commits ago. Rewritten as something a fresh context can act on without re-deriving anything.</p>\n<ul><li>· WHERE THINGS STAND — what is done, what is left, and the fact that SEVEN COMMITS ARE UNDEPLOYED (stellate.app is running 76c905e) · the commit-by-commit ledger of what landed and what each one was · the new…</li><li>And FOUR TRAPS, written down because every one of them looked like a confident result and was wrong: the homoglyph label match, the guessed WORLD_W projection, calling a correct intro a frozen viz and telling…</li><li>Stage headers now say DONE where they are done, so nobody redoes Stage C. Stage F carries its own known-wrong list, since tonight moved the ground under it: CLAUDE.md still describes a 996 KB kernel with an…</li></ul>\n<p><em>Verified:</em> verify.sh 13/13, doc-counts PASS.</p>\n<p><a href=\"https://stellate.app/?genre=spokenword&amp;seed=1365&amp;path=196.11721,215.11754,177.11754&amp;xdur=13.122\">▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/9b72aeedd5e4e12cc70be370ccd2add980fe8807\">9b72aee</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The running queue is the handoff document, and it was describing a repo that stopped existing about eighteen commits ago. Rewritten as something a fresh context can act on without re-deriving anything.\n\n• · WHERE THINGS STAND — what is done, what is left, and the fact that SEVEN COMMITS ARE UNDEPLOYED (stellate.app is running 76c905e) · the commit-by-commit ledger of what landed and what each one was · the new…\n\n• And FOUR TRAPS, written down because every one of them looked like a confident result and was wrong: the homoglyph label match, the guessed WORLD_W projection, calling a correct intro a frozen viz and telling…\n\n• Stage headers now say DONE where they are done, so nobody redoes Stage C. Stage F carries its own known-wrong list, since tonight moved the ground under it: CLAUDE.md still describes a 996 KB kernel with an…\n\nVerified: verify.sh 13/13, doc-counts PASS.\n\n▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices https://stellate.app/?genre=spokenword&seed=1365&path=196.11721,215.11754,177.11754&xdur=13.122\n\n9b72aee https://github.com/aboard-io/stellate/commit/9b72aeedd5e4e12cc70be370ccd2add980fe8807",
   "date_published": "2026-07-28T12:01:28.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "spokenword",
    "voice"
   ]
  },
  {
   "id": "85352d0a16c7255118d97b3ed25445c8844185e2",
   "url": "https://stellate.app/?genre=house&seed=2666&path=1101.20850,1405.21491,1237.17819&xdur=0.202",
   "external_url": "https://github.com/aboard-io/stellate/commit/85352d0a16c7255118d97b3ed25445c8844185e2",
   "title": "E4: the genre descriptions are generated from the anchor now",
   "summary": "274 blurbs, every one derived from the anchor that ships. Paul's direction: generate deterministically from genre mix, instrumentation and rhythmic variation rather than editing prose.",
   "content_html": "<p>274 blurbs, every one derived from the anchor that ships. Paul's direction: generate deterministically from genre mix, instrumentation and rhythmic variation rather than editing prose.</p>\n<ul><li>That fixes the tic AND the deeper problem underneath it. The old blurbs were hand-written beside live data and drifted the way that always drifts</li><li>em-dash punchlines 234 -&gt; 0 lower-case openers 241 -&gt; 0 length median 173 -&gt; 114, max 378 -&gt; 171 card-lie count 0 -&gt; 0, now by construction</li><li>A machine four at 124-140. Acid bass under an organ, with a pluck lead.</li><li>&quot;A breakbeat at 96-144&quot; card:amen/break on 6 genres. checkCardClaims reads &quot;breakbeat&quot; as the SAMPLED amen; these kits are synthesized and carry no break role.</li></ul>\n<p><a href=\"https://stellate.app/?genre=house&amp;seed=2666&amp;path=1101.20850,1405.21491,1237.17819&amp;xdur=0.202\">▶ Play it: Congregation Furnace → Titration Rapture → Polyrhythm Senate — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/85352d0a16c7255118d97b3ed25445c8844185e2\">85352d0</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "274 blurbs, every one derived from the anchor that ships. Paul's direction: generate deterministically from genre mix, instrumentation and rhythmic variation rather than editing prose.\n\n• That fixes the tic AND the deeper problem underneath it. The old blurbs were hand-written beside live data and drifted the way that always drifts\n\n• em-dash punchlines 234 -> 0 lower-case openers 241 -> 0 length median 173 -> 114, max 378 -> 171 card-lie count 0 -> 0, now by construction\n\n• A machine four at 124-140. Acid bass under an organ, with a pluck lead.\n\n• \"A breakbeat at 96-144\" card:amen/break on 6 genres. checkCardClaims reads \"breakbeat\" as the SAMPLED amen; these kits are synthesized and carry no break role.\n\n▶ Play it: Congregation Furnace → Titration Rapture → Polyrhythm Senate — the three genres this change names, as one path https://stellate.app/?genre=house&seed=2666&path=1101.20850,1405.21491,1237.17819&xdur=0.202\n\n85352d0 https://github.com/aboard-io/stellate/commit/85352d0a16c7255118d97b3ed25445c8844185e2",
   "date_published": "2026-07-28T10:35:13.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "house",
    "acidhouse",
    "afrobeat",
    "voice"
   ]
  },
  {
   "id": "277d89e74566969645f6755b894db92fcaae3b5b",
   "url": "https://stellate.app/?genre=gospel&seed=4727&path=171.7086,1101.20850,1237.17819&xdur=0.054",
   "external_url": "https://github.com/aboard-io/stellate/commit/277d89e74566969645f6755b894db92fcaae3b5b",
   "title": "Stage E4, the safe half: 241 descriptions start with a capital letter",
   "summary": "E4 lists four tics in the genre prose. This fixes the one that is unambiguous — 241 of 274 blurbs opened lower-case, which is not a style so much as an accident — and stops before the one that is not.",
   "content_html": "<p>E4 lists four tics in the genre prose. This fixes the one that is unambiguous — 241 of 274 blurbs opened lower-case, which is not a style so much as an accident — and stops before the one that is not.</p>\n<ul><li>Proved rather than eyeballed: GENRES is byte-identical to HEAD ignoring case, and zero infos differ beyond capitalisation.</li><li>gospel &quot;hand-clap church gospel ~92bpm — Hammond organ and gospel piano, a massed choir…&quot; — the em-dash is STRUCTURAL, introducing the instrumentation.</li><li>Telling a poetic punchline from a structural separator is a judgement per string, not a pattern, and these are 274 user-visible strings.</li><li>There is also a gate coupling worth stating: musicality's checkCardClaims parses `info` for instrument nouns, so rewriting prose can create or hide card-lies.</li></ul>\n<p><em>Verified:</em> verify.sh otherwise green, card-lie 0, specs round-trip PASS.</p>\n<p><a href=\"https://stellate.app/?genre=gospel&amp;seed=4727&amp;path=171.7086,1101.20850,1237.17819&amp;xdur=0.054\">▶ Play it: Rapture Logistics → Congregation Furnace → Polyrhythm Senate — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/277d89e74566969645f6755b894db92fcaae3b5b\">277d89e</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "E4 lists four tics in the genre prose. This fixes the one that is unambiguous — 241 of 274 blurbs opened lower-case, which is not a style so much as an accident — and stops before the one that is not.\n\n• Proved rather than eyeballed: GENRES is byte-identical to HEAD ignoring case, and zero infos differ beyond capitalisation.\n\n• gospel \"hand-clap church gospel ~92bpm — Hammond organ and gospel piano, a massed choir…\" — the em-dash is STRUCTURAL, introducing the instrumentation.\n\n• Telling a poetic punchline from a structural separator is a judgement per string, not a pattern, and these are 274 user-visible strings.\n\n• There is also a gate coupling worth stating: musicality's checkCardClaims parses `info` for instrument nouns, so rewriting prose can create or hide card-lies.\n\nVerified: verify.sh otherwise green, card-lie 0, specs round-trip PASS.\n\n▶ Play it: Rapture Logistics → Congregation Furnace → Polyrhythm Senate — the three genres this change names, as one path https://stellate.app/?genre=gospel&seed=4727&path=171.7086,1101.20850,1237.17819&xdur=0.054\n\n277d89e https://github.com/aboard-io/stellate/commit/277d89e74566969645f6755b894db92fcaae3b5b",
   "date_published": "2026-07-28T10:20:55.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "gospel",
    "house",
    "afrobeat",
    "voice"
   ]
  },
  {
   "id": "465d3779cf1e876b8b079304156963711c1ddc95",
   "url": "https://stellate.app/?genre=gospel&seed=3169&path=171.7064,190.7097,152.7097&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/465d3779cf1e876b8b079304156963711c1ddc95",
   "title": "the ⓘ piano roll is telling the truth; the audit hatching is not",
   "summary": "Chased Paul's report that the inside view sometimes shows empty lanes while everything plays fine. Conclusion: the LANES ARE CORRECT, and I could not reproduce the freeze.",
   "content_html": "<p>Chased Paul's report that the inside view sometimes shows empty lanes while everything plays fine. Conclusion: the LANES ARE CORRECT, and I could not reproduce the freeze.</p>\n<ul><li>WHAT THE LANES DO. Replayed barVoiceEvents' exact windowing in node — no browser, no timing, no flake</li><li>verse 2 {pad:16, bass:4, drums:59, sfx:1} — no melody events at all bridge {pad:16, bass:4, melody:10} — no drum events at all</li><li>gospel's bridge genuinely drops the kit and verse 2 genuinely has no lead line. The viz drawing melody:0 and drums:0 there is the truth, not a bug.</li><li>I ALSO COULD NOT REPRODUCE &quot;doesn't update at all&quot;, and I twice mistook a too-short sample for a freeze: 24 samples over 19s of a 92bpm chordEvery-8 track is about three chord bars, so seeing two distinct…</li></ul>\n<p><em>Verified:</em> verify.sh 13/13, comment-only proof clean.</p>\n<p><a href=\"https://stellate.app/?genre=gospel&amp;seed=3169&amp;path=171.7064,190.7097,152.7097&amp;xdur=13.122\">▶ Play it: Rapture Logistics — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/465d3779cf1e876b8b079304156963711c1ddc95\">465d377</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Chased Paul's report that the inside view sometimes shows empty lanes while everything plays fine. Conclusion: the LANES ARE CORRECT, and I could not reproduce the freeze.\n\n• WHAT THE LANES DO. Replayed barVoiceEvents' exact windowing in node — no browser, no timing, no flake\n\n• verse 2 {pad:16, bass:4, drums:59, sfx:1} — no melody events at all bridge {pad:16, bass:4, melody:10} — no drum events at all\n\n• gospel's bridge genuinely drops the kit and verse 2 genuinely has no lead line. The viz drawing melody:0 and drums:0 there is the truth, not a bug.\n\n• I ALSO COULD NOT REPRODUCE \"doesn't update at all\", and I twice mistook a too-short sample for a freeze: 24 samples over 19s of a 92bpm chordEvery-8 track is about three chord bars, so seeing two distinct…\n\nVerified: verify.sh 13/13, comment-only proof clean.\n\n▶ Play it: Rapture Logistics — parked on the genre this change names https://stellate.app/?genre=gospel&seed=3169&path=171.7064,190.7097,152.7097&xdur=13.122\n\n465d377 https://github.com/aboard-io/stellate/commit/465d3779cf1e876b8b079304156963711c1ddc95",
   "date_published": "2026-07-28T03:13:49.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "gospel",
    "harmony"
   ]
  },
  {
   "id": "422eb07e191b9770869605e1a018694fc6ef9570",
   "url": "https://stellate.app/?genre=jungle&seed=9094&path=1718.20526,1101.20850,2103.13302&xdur=0.096",
   "external_url": "https://github.com/aboard-io/stellate/commit/422eb07e191b9770869605e1a018694fc6ef9570",
   "title": "speech reaches 99 of 274 genres: station idents for the mix forms",
   "summary": "The bespoke cast is twelve genres that had a voice waiting in their own card — the OYEZ, the ATC read-back, the auction chant. That does not scale to a hundred: writing ninety more idioms by hand is ninety chances to write a bad one, and most genres have no such line in them.",
   "content_html": "<p>The bespoke cast is twelve genres that had a voice waiting in their own card — the OYEZ, the ATC read-back, the auction chant. That does not scale to a hundred: writing ninety more idioms by hand is ninety chances to write a bad one, and most genres have no such line in them.</p>\n<ul><li>So the derived tier is picked by a STRUCTURAL property rather than by me choosing forty-one names out of a hat. Genres whose FORM is a mix — dj, drop, vamp, the ones built to be beat-matched and talked over</li><li>genres with speech 58 -&gt; 99 of 274 bespoke cast 12 (unchanged; a bespoke voice always beats an ident) derived idents 41 (dj 20, drop 12, vamp 9)</li><li>The VOICE is hashed from the genre name, not the track seed, so every station sounds like a different station and the same genre always gets the same announcer: house is a fast m2, jungle a mid m1, disco an f3.</li><li>A REAL BUG CAUGHT ON THE WAY, and the reason the samples are worth printing: the first cut used `&gt;&gt;`, which is a SIGNED 32-bit shift, so any hash above 2^31 went negative and dragged the modulo with it.</li></ul>\n<p><em>Verified:</em> determinism identical on repeat, no out-of-range voice anywhere, and house and jungle both synthesize live in a real browser with zero console errors.</p>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=9094&amp;path=1718.20526,1101.20850,2103.13302&amp;xdur=0.096\">▶ Play it: Barometric Stampede → Congregation Furnace → Stationary Weather — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/422eb07e191b9770869605e1a018694fc6ef9570\">422eb07</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The bespoke cast is twelve genres that had a voice waiting in their own card — the OYEZ, the ATC read-back, the auction chant. That does not scale to a hundred: writing ninety more idioms by hand is ninety chances to write a bad one, and most genres have no such line in them.\n\n• So the derived tier is picked by a STRUCTURAL property rather than by me choosing forty-one names out of a hat. Genres whose FORM is a mix — dj, drop, vamp, the ones built to be beat-matched and talked over\n\n• genres with speech 58 -> 99 of 274 bespoke cast 12 (unchanged; a bespoke voice always beats an ident) derived idents 41 (dj 20, drop 12, vamp 9)\n\n• The VOICE is hashed from the genre name, not the track seed, so every station sounds like a different station and the same genre always gets the same announcer: house is a fast m2, jungle a mid m1, disco an f3.\n\n• A REAL BUG CAUGHT ON THE WAY, and the reason the samples are worth printing: the first cut used `>>`, which is a SIGNED 32-bit shift, so any hash above 2^31 went negative and dragged the modulo with it.\n\nVerified: determinism identical on repeat, no out-of-range voice anywhere, and house and jungle both synthesize live in a real browser with zero console errors.\n\n▶ Play it: Barometric Stampede → Congregation Furnace → Stationary Weather — the three genres this change names, as one path https://stellate.app/?genre=jungle&seed=9094&path=1718.20526,1101.20850,2103.13302&xdur=0.096\n\n422eb07 https://github.com/aboard-io/stellate/commit/422eb07e191b9770869605e1a018694fc6ef9570",
   "date_published": "2026-07-28T02:54:11.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "house",
    "ambient",
    "voice"
   ]
  },
  {
   "id": "700d9f99a1e937add65a886172e1de0201bb2697",
   "url": "https://stellate.app/?genre=jungle&seed=4017&path=1718.20526,1679.4415,1089.13532&xdur=0.046",
   "external_url": "https://github.com/aboard-io/stellate/commit/700d9f99a1e937add65a886172e1de0201bb2697",
   "title": "speech: 230 pre-rendered clips become live synthesis, 12 genres become 58",
   "summary": "Every kind:\"speech\" id in the registry was espeak output — sp_ (203), hp_ (the hogcore cast, 24), wd_ (budstep strain names, 16). Checked BEFORE touching anything: the Naropa readings (vx_, 49) and the BBC material carry no `kind` at all, so they were never in this set and are never at risk.",
   "content_html": "<p>Every kind:&quot;speech&quot; id in the registry was espeak output — sp_ (203), hp_ (the hogcore cast, 24), wd_ (budstep strain names, 16). Checked BEFORE touching anything: the Naropa readings (vx_, 49) and the BBC material carry no `kind` at all, so they were never in this set and are never at risk.</p>\n<ul><li>Because it is all espeak, the engine can simply say it. A registry entry with synthText is synthesized by engine/speech.js at play time — what the transit PA already did.</li><li>genres emitting live speech 12 -&gt; 58 distinct live ids in play 1 -&gt; 221</li><li>THE BUG THAT MADE IT A NO-OP AT FIRST. Converting the registry changed nothing: still 12 genres, still one id.</li><li><strong>WHAT IS DELIBERATELY NOT CONVERTED</strong> — saytransit's station voices are not plain espeak. They are a three-voice harmonized robot choir — root, a fifth above, an octave below, rubberband-shifted and mixed time-aligned.</li></ul>\n<p><em>Verified:</em> rather than assumed: determinism holds (same seed twice, identical), jungle gains nothing, and sp_paleo_rex — a CONVERTED id, not the organ</p>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=4017&amp;path=1718.20526,1679.4415,1089.13532&amp;xdur=0.046\">▶ Play it: Barometric Stampede → Food Court Eternity → Amen Monolith — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/700d9f99a1e937add65a886172e1de0201bb2697\">700d9f9</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Every kind:\"speech\" id in the registry was espeak output — sp_ (203), hp_ (the hogcore cast, 24), wd_ (budstep strain names, 16). Checked BEFORE touching anything: the Naropa readings (vx_, 49) and the BBC material carry no `kind` at all, so they were never in this set and are never at risk.\n\n• Because it is all espeak, the engine can simply say it. A registry entry with synthText is synthesized by engine/speech.js at play time — what the transit PA already did.\n\n• genres emitting live speech 12 -> 58 distinct live ids in play 1 -> 221\n\n• THE BUG THAT MADE IT A NO-OP AT FIRST. Converting the registry changed nothing: still 12 genres, still one id.\n\nWHAT IS DELIBERATELY NOT CONVERTED — saytransit's station voices are not plain espeak. They are a three-voice harmonized robot choir — root, a fifth above, an octave below, rubberband-shifted and mixed time-aligned.\n\nVerified: rather than assumed: determinism holds (same seed twice, identical), jungle gains nothing, and sp_paleo_rex — a CONVERTED id, not the organ\n\n▶ Play it: Barometric Stampede → Food Court Eternity → Amen Monolith — the three genres this change names, as one path https://stellate.app/?genre=jungle&seed=4017&path=1718.20526,1679.4415,1089.13532&xdur=0.046\n\n700d9f9 https://github.com/aboard-io/stellate/commit/700d9f99a1e937add65a886172e1de0201bb2697",
   "date_published": "2026-07-28T02:48:33.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "vaporwave",
    "budstep",
    "voice"
   ]
  },
  {
   "id": "712cceb2f6d238aa80845da96a9820d25f5b4442",
   "url": "https://stellate.app/?genre=ragtime&seed=5906&path=753.14457,292.16891,1405.21491&xdur=0.105",
   "external_url": "https://github.com/aboard-io/stellate/commit/712cceb2f6d238aa80845da96a9820d25f5b4442",
   "title": "Stage E2: the spec folder describes the genres that actually ship",
   "summary": "genre-specs/ was one-directional for its whole life. genre-tool wrote a spec when a genre was born; every later edit happened by hand in the kernel and nothing was ever written back.",
   "content_html": "<p>genre-specs/ was one-directional for its whole life. genre-tool wrote a spec when a genre was born; every later edit happened by hand in the kernel and nothing was ever written back.</p>\n<ul><li>`genre-tool.js export &lt;genre&gt; | --all` is the direction that was missing: it reads the LIVE anchor and emits the spec that would produce it.</li><li>274 specs, one per genre, uniform shape: name label info pos anchor mind 274 targets 274 perc 52 (only genres with a perc style)</li><li>Three of those keys are NEW, and they are what closes the authorability gap the plan measured — the kernel reads 289 anchor paths, specs could express 184: mind the derived theory/pipes/rhythm axes, whose only…</li><li>Four keys are dropped because nothing reads them: clips (GENRE_CLIPS is gone), materials, invented, damp. genre-specs/invented/ is flattened</li></ul>\n<p><em>Verified:</em> genre-specs.test.js is what stops the rot returning: coverage, no orphans, required keys, no retired keys, trailing newline, and the one that matters</p>\n<p><a href=\"https://stellate.app/?genre=ragtime&amp;seed=5906&amp;path=753.14457,292.16891,1405.21491&amp;xdur=0.105\">▶ Play it: Perforated Afterlife → Smoke Arithmetic → Titration Rapture — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/712cceb2f6d238aa80845da96a9820d25f5b4442\">712cceb</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "genre-specs/ was one-directional for its whole life. genre-tool wrote a spec when a genre was born; every later edit happened by hand in the kernel and nothing was ever written back.\n\n• `genre-tool.js export <genre> | --all` is the direction that was missing: it reads the LIVE anchor and emits the spec that would produce it.\n\n• 274 specs, one per genre, uniform shape: name label info pos anchor mind 274 targets 274 perc 52 (only genres with a perc style)\n\n• Three of those keys are NEW, and they are what closes the authorability gap the plan measured — the kernel reads 289 anchor paths, specs could express 184: mind the derived theory/pipes/rhythm axes, whose only…\n\n• Four keys are dropped because nothing reads them: clips (GENRE_CLIPS is gone), materials, invented, damp. genre-specs/invented/ is flattened\n\nVerified: genre-specs.test.js is what stops the rot returning: coverage, no orphans, required keys, no retired keys, trailing newline, and the one that matters\n\n▶ Play it: Perforated Afterlife → Smoke Arithmetic → Titration Rapture — the three genres this change names, as one path https://stellate.app/?genre=ragtime&seed=5906&path=753.14457,292.16891,1405.21491&xdur=0.105\n\n712cceb https://github.com/aboard-io/stellate/commit/712cceb2f6d238aa80845da96a9820d25f5b4442",
   "date_published": "2026-07-28T02:23:43.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ragtime",
    "jazz",
    "acidhouse",
    "voice"
   ]
  },
  {
   "id": "43ffe4dd4a7d604748eac046f808123ec93aefca",
   "url": "https://stellate.app/?genre=crimsoncourt&seed=4741&path=1109.13089,265.13466,1854.5732&xdur=0.093",
   "external_url": "https://github.com/aboard-io/stellate/commit/43ffe4dd4a7d604748eac046f808123ec93aefca",
   "title": "redraw the star map: label-box packing with headroom for 400 genres",
   "summary": "Names were being culled at default zoom -- 254 of 274 on a 1600px screen, 229 at 1280, 113 on a phone. I first argued against a redraw, on the grounds that zoom recovers most of them (254 -> 271 by k=6) and only two genres, crimsoncourt and folk, were never labelled at any zoom.",
   "content_html": "<p>Names were being culled at default zoom -- 254 of 274 on a 1600px screen, 229 at 1280, 113 on a phone. I first argued against a redraw, on the grounds that zoom recovers most of them (254 -&gt; 271 by k=6) and only two genres, crimsoncourt and folk, were never labelled at any zoom.</p>\n<ul><li>THE CAUSE. drawMap fits each axis to the viewport INDEPENDENTLY, so the world's own aspect is invisible in the render -- only the distribution in normalized space matters.</li><li>It was never an area problem. At default zoom the rendered world is 12.5M px² and 400 labels want 2.7M of it.</li><li>THE FACTOR I GOT WRONG FIRST, and it is the whole thing: drawMap grows type with zoom, fs = min(3, max(1, k^0.85)), so at the default k=2.8 the font is 2.4x, not 1x.</li><li>tools/relayout-map.js relaxes label RECTANGLES until none overlap, each star on a weak spring to where it started, boxes inflated sqrt(400/274) so genres that do not exist yet still get a name.</li></ul>\n<p><em>Verified:</em> verify.sh 12/12, matrix 274/274, explorer-ui PASS (was FAIL on the separation floor), pos-coverage 274/274, full-boot healthy.</p>\n<p><a href=\"https://stellate.app/?genre=crimsoncourt&amp;seed=4741&amp;path=1109.13089,265.13466,1854.5732&amp;xdur=0.093\">▶ Play it: Non Euclidean Court → Teatime Anomaly → Kettle Eschaton — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/43ffe4dd4a7d604748eac046f808123ec93aefca\">43ffe4d</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Names were being culled at default zoom -- 254 of 274 on a 1600px screen, 229 at 1280, 113 on a phone. I first argued against a redraw, on the grounds that zoom recovers most of them (254 -> 271 by k=6) and only two genres, crimsoncourt and folk, were never labelled at any zoom.\n\n• THE CAUSE. drawMap fits each axis to the viewport INDEPENDENTLY, so the world's own aspect is invisible in the render -- only the distribution in normalized space matters.\n\n• It was never an area problem. At default zoom the rendered world is 12.5M px² and 400 labels want 2.7M of it.\n\n• THE FACTOR I GOT WRONG FIRST, and it is the whole thing: drawMap grows type with zoom, fs = min(3, max(1, k^0.85)), so at the default k=2.8 the font is 2.4x, not 1x.\n\n• tools/relayout-map.js relaxes label RECTANGLES until none overlap, each star on a weak spring to where it started, boxes inflated sqrt(400/274) so genres that do not exist yet still get a name.\n\nVerified: verify.sh 12/12, matrix 274/274, explorer-ui PASS (was FAIL on the separation floor), pos-coverage 274/274, full-boot healthy.\n\n▶ Play it: Non Euclidean Court → Teatime Anomaly → Kettle Eschaton — the three genres this change names, as one path https://stellate.app/?genre=crimsoncourt&seed=4741&path=1109.13089,265.13466,1854.5732&xdur=0.093\n\n43ffe4d https://github.com/aboard-io/stellate/commit/43ffe4dd4a7d604748eac046f808123ec93aefca",
   "date_published": "2026-07-28T02:19:32.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "crimsoncourt",
    "crumpetwhirl",
    "folk",
    "harmony"
   ]
  },
  {
   "id": "76c905e3c8436b10a215b8224545d3be7116d923",
   "url": "https://stellate.app/?genre=transitwave&seed=7731&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/76c905e3c8436b10a215b8224545d3be7116d923",
   "title": "deploy: excluded must mean GONE from the droplet, not merely unsent",
   "summary": "I claimed the last commit took 28 MB off the deploy. It took 28 MB off the TRANSFER and left every byte of it live on stellate.app, which I should have checked before saying so.",
   "content_html": "<p>I claimed the last commit took 28 MB off the deploy. It took 28 MB off the TRANSFER and left every byte of it live on stellate.app, which I should have checked before saying so.</p>\n<ul><li>rsync's plain --delete only removes receiver files that are absent from the SOURCE. It deliberately PROTECTS anything matching an --exclude, on the theory that you may be excluding files you want left alone on…</li><li>154 engine/faust/node_modules the @grame cut that did not take 134 found/samples/*/zones.json extractor output nothing fetches ~600 tools/node_modules better-sqlite3, semver, tar-fs and friends -- build-time…</li><li>Nothing outside those buckets is touched. MEDIA_MANIFEST appears in the deletion list and is irrelevant: it is not in the source tree, so plain --delete already removed it on every deploy, and the very next…</li><li>This is the same failure shape as the found/midi leak that had to be scrubbed from the droplet by hand: an exclusion that everyone believed was removing something when it was only declining to send it.</li></ul>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=7731&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/76c905e3c8436b10a215b8224545d3be7116d923\">76c905e</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "I claimed the last commit took 28 MB off the deploy. It took 28 MB off the TRANSFER and left every byte of it live on stellate.app, which I should have checked before saying so.\n\n• rsync's plain --delete only removes receiver files that are absent from the SOURCE. It deliberately PROTECTS anything matching an --exclude, on the theory that you may be excluding files you want left alone on…\n\n• 154 engine/faust/node_modules the @grame cut that did not take 134 found/samples/*/zones.json extractor output nothing fetches ~600 tools/node_modules better-sqlite3, semver, tar-fs and friends -- build-time…\n\n• Nothing outside those buckets is touched. MEDIA_MANIFEST appears in the deletion list and is irrelevant: it is not in the source tree, so plain --delete already removed it on every deploy, and the very next…\n\n• This is the same failure shape as the found/midi leak that had to be scrubbed from the droplet by hand: an exclusion that everyone believed was removing something when it was only declining to send it.\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=7731&path=749.12536,768.12569,730.12569&xdur=13.122\n\n76c905e https://github.com/aboard-io/stellate/commit/76c905e3c8436b10a215b8224545d3be7116d923",
   "date_published": "2026-07-28T01:52:50.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "5f6aa3b69f548c40aaba47e10368c221ec4817ed",
   "url": "https://stellate.app/?genre=spokenword&seed=4246&path=196.11721,215.11754,177.11754&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/5f6aa3b69f548c40aaba47e10368c221ec4817ed",
   "title": "espeak is an ES module; say so, and the speech gate goes green",
   "summary": "vendor/espeak-ng/espeak-ng.js is emscripten ESM glue: it reads import.meta.url to locate espeak-ng.data beside itself. But node resolves a .js file against the nearest package.json, and the nearest one is the repo root, which is type=commonjs -- so the glue was parsed as CommonJS, where import.meta…",
   "content_html": "<p>vendor/espeak-ng/espeak-ng.js is emscripten ESM glue: it reads import.meta.url to locate espeak-ng.data beside itself. But node resolves a .js file against the nearest package.json, and the nearest one is the repo root, which is type=commonjs -- so the glue was parsed as CommonJS, where import.meta…</p>\n<ul><li>prove-browser.js is the single CommonJS script in that directory, so it becomes prove-browser.cjs (README and its own header updated). prove.js was already ESM and needed nothing.</li><li>This closes a real hole rather than a cosmetic one: the artifact's DETERMINISM LAW -- same text twice must give byte-identical PCM from a fresh worker per call -- was documented in engine/speech.js and never…</li><li>Browser path is untouched -- package.json type affects node resolution only, and the browser loads the glue by URL.</li><li>speech.test: 5/5 ALL PASS, up from 4/5.</li></ul>\n<p><em>Verified:</em> speech.test.js has been failing synth_determinism with &quot;Cannot use 'import.meta' outside a module&quot; -- and because tools/ship.sh gates on that test under `set -e`, the project's one deploy…</p>\n<p><a href=\"https://stellate.app/?genre=spokenword&amp;seed=4246&amp;path=196.11721,215.11754,177.11754&amp;xdur=13.122\">▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/5f6aa3b69f548c40aaba47e10368c221ec4817ed\">5f6aa3b</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "vendor/espeak-ng/espeak-ng.js is emscripten ESM glue: it reads import.meta.url to locate espeak-ng.data beside itself. But node resolves a .js file against the nearest package.json, and the nearest one is the repo root, which is type=commonjs -- so the glue was parsed as CommonJS, where import.meta…\n\n• prove-browser.js is the single CommonJS script in that directory, so it becomes prove-browser.cjs (README and its own header updated). prove.js was already ESM and needed nothing.\n\n• This closes a real hole rather than a cosmetic one: the artifact's DETERMINISM LAW -- same text twice must give byte-identical PCM from a fresh worker per call -- was documented in engine/speech.js and never…\n\n• Browser path is untouched -- package.json type affects node resolution only, and the browser loads the glue by URL.\n\n• speech.test: 5/5 ALL PASS, up from 4/5.\n\nVerified: speech.test.js has been failing synth_determinism with \"Cannot use 'import.meta' outside a module\" -- and because tools/ship.sh gates on that test under `set -e`, the project's one deploy…\n\n▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices https://stellate.app/?genre=spokenword&seed=4246&path=196.11721,215.11754,177.11754&xdur=13.122\n\n5f6aa3b https://github.com/aboard-io/stellate/commit/5f6aa3b69f548c40aaba47e10368c221ec4817ed",
   "date_published": "2026-07-28T01:48:48.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "spokenword",
    "voice"
   ]
  },
  {
   "id": "e62dada64b32fd48f2dfcd9e4ab2821ec7cfd79b",
   "url": "https://stellate.app/?genre=jungle&seed=7254&path=1718.20504,1737.20537,1699.20537&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/e62dada64b32fd48f2dfcd9e4ab2821ec7cfd79b",
   "title": "Stage E1 complete: the kernel is a library again",
   "summary": "The last E1 bullet. 243 lines of CLI lived at the bottom of engine/genre-kernel.js behind `isNode && require.main===module`, so every browser downloaded and parsed fs, child_process, ffmpeg shelling and WAV muxing that it could never run.",
   "content_html": "<p>The last E1 bullet. 243 lines of CLI lived at the bottom of engine/genre-kernel.js behind `isNode &amp;&amp; require.main===module`, so every browser downloaded and parsed fs, child_process, ffmpeg shelling and WAV muxing that it could never run.</p>\n<ul><li>engine/genre-kernel.js 193 KB -&gt; 180 KB, 2,798 -&gt; 2,554 lines tools/kernel-cli.js 260 lines</li><li>The kernel now contains zero require(&quot;fs&quot;), zero require(&quot;child_process&quot;) and zero execFileSync -- checked, not assumed.</li><li>The extraction was mechanical but not blind: the block was brace-matched rather than sliced at a guessed line (the first attempt was off by one and its assertion caught it before anything was written), and its…</li><li>Every documented invocation was repointed, since `node engine/genre-kernel.js track ...` now silently does nothing: CLAUDE.md, README.md, docs/SETUP.md, docs/GENRE-SPACE.md, three fetch recipes…</li></ul>\n<p><em>Verified:</em> verify.sh 12/12, matrix --no-cache 274/274 diagonal dominant, kerneldata byte-identical, boot-smoke 16/16, full-boot healthy in a real browser, and `kernel-cli.js anchors` + `track jungle…</p>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=7254&amp;path=1718.20504,1737.20537,1699.20537&amp;xdur=13.122\">▶ Play it: Barometric Stampede — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/e62dada64b32fd48f2dfcd9e4ab2821ec7cfd79b\">e62dada</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The last E1 bullet. 243 lines of CLI lived at the bottom of engine/genre-kernel.js behind `isNode && require.main===module`, so every browser downloaded and parsed fs, child_process, ffmpeg shelling and WAV muxing that it could never run.\n\n• engine/genre-kernel.js 193 KB -> 180 KB, 2,798 -> 2,554 lines tools/kernel-cli.js 260 lines\n\n• The kernel now contains zero require(\"fs\"), zero require(\"child_process\") and zero execFileSync -- checked, not assumed.\n\n• The extraction was mechanical but not blind: the block was brace-matched rather than sliced at a guessed line (the first attempt was off by one and its assertion caught it before anything was written), and its…\n\n• Every documented invocation was repointed, since `node engine/genre-kernel.js track ...` now silently does nothing: CLAUDE.md, README.md, docs/SETUP.md, docs/GENRE-SPACE.md, three fetch recipes…\n\nVerified: verify.sh 12/12, matrix --no-cache 274/274 diagonal dominant, kerneldata byte-identical, boot-smoke 16/16, full-boot healthy in a real browser, and `kernel-cli.js anchors` + `track jungle…\n\n▶ Play it: Barometric Stampede — parked on the genre this change names https://stellate.app/?genre=jungle&seed=7254&path=1718.20504,1737.20537,1699.20537&xdur=13.122\n\ne62dada https://github.com/aboard-io/stellate/commit/e62dada64b32fd48f2dfcd9e4ab2821ec7cfd79b",
   "date_published": "2026-07-28T01:31:33.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "voice"
   ]
  },
  {
   "id": "4807f9866c3ed386d41cf0273e8327fc9e7e89d9",
   "url": "https://stellate.app/?genre=transitwave&seed=8182&path=749.12558,1026.13988,1968.25160&xdur=0.059",
   "external_url": "https://github.com/aboard-io/stellate/commit/4807f9866c3ed386d41cf0273e8327fc9e7e89d9",
   "title": "the speech organ gets a cast: 1 producer -> 12 voices",
   "summary": "Phase 4 of the found-layer plan. Live espeak synthesis had exactly ONE trigger in 274 genres -- transitwave's PA, fired once as an opener -- so the organ in engine/speech.js was effectively unwired and everything else that SOUNDED like espeak was a pre-rendered mp3.",
   "content_html": "<p>Phase 4 of the found-layer plan. Live espeak synthesis had exactly ONE trigger in 274 genres -- transitwave's PA, fired once as an opener -- so the organ in engine/speech.js was effectively unwired and everything else that SOUNDED like espeak was a pre-rendered mp3.</p>\n<ul><li>Twelve genres speak now, and the text is not invented for them: each one already carried the vocabulary in its own card.</li><li>transitwave f3 165 the arrivals PA airtrafficdrone m3 190 flight levels and runway assignments towncrier m1 120 OYEZ, slow and grave auctioncore m2 260 the chant, and it is FAST dmvstep f2 150 now serving…</li><li>The per-speaker variant/pitch/speed is the point: one voice at twelve texts would be one narrator in twelve hats.</li><li>Every law the transit PA established is preserved, because they are what make this safe: text derives purely from (seed, genre) through NameBank, so ZERO rng draws on the resolve stream</li></ul>\n<p><em>Verified:</em> not assumed: determinism (same seed twice, identical), jungle gains nothing, a 20% towncrier blend stays silent, and three of the new voices -- including the croak -- synthesize live in a…</p>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=8182&amp;path=749.12558,1026.13988,1968.25160&amp;xdur=0.059\">▶ Play it: Rail Replacement Rapture → Oyez Oblivion → Heated Dry Eternity — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/4807f9866c3ed386d41cf0273e8327fc9e7e89d9\">4807f98</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Phase 4 of the found-layer plan. Live espeak synthesis had exactly ONE trigger in 274 genres -- transitwave's PA, fired once as an opener -- so the organ in engine/speech.js was effectively unwired and everything else that SOUNDED like espeak was a pre-rendered mp3.\n\n• Twelve genres speak now, and the text is not invented for them: each one already carried the vocabulary in its own card.\n\n• transitwave f3 165 the arrivals PA airtrafficdrone m3 190 flight levels and runway assignments towncrier m1 120 OYEZ, slow and grave auctioncore m2 260 the chant, and it is FAST dmvstep f2 150 now serving…\n\n• The per-speaker variant/pitch/speed is the point: one voice at twelve texts would be one narrator in twelve hats.\n\n• Every law the transit PA established is preserved, because they are what make this safe: text derives purely from (seed, genre) through NameBank, so ZERO rng draws on the resolve stream\n\nVerified: not assumed: determinism (same seed twice, identical), jungle gains nothing, a 20% towncrier blend stays silent, and three of the new voices -- including the croak -- synthesize live in a…\n\n▶ Play it: Rail Replacement Rapture → Oyez Oblivion → Heated Dry Eternity — the three genres this change names, as one path https://stellate.app/?genre=transitwave&seed=8182&path=749.12558,1026.13988,1968.25160&xdur=0.059\n\n4807f98 https://github.com/aboard-io/stellate/commit/4807f9866c3ed386d41cf0273e8327fc9e7e89d9",
   "date_published": "2026-07-28T01:26:17.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "towncrier",
    "dishwasherwave",
    "voice"
   ]
  },
  {
   "id": "8508e002d8894269196ac0bf013b0ed2eb810e9b",
   "url": "https://stellate.app/access.html?genre=ambient&seed=6362",
   "external_url": "https://github.com/aboard-io/stellate/commit/8508e002d8894269196ac0bf013b0ed2eb810e9b",
   "title": "Stage E1: 810 KB of data out of the kernel, byte for byte",
   "summary": "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.",
   "content_html": "<p>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.</p>\n<ul><li>engine/genres-data.js 648 KB the 274 anchors engine/registry-data.js 131 KB SOURCES / SOURCE_POOLS / SAMPLES / VOXBANK / SAMPLERS / PERCBANK</li><li>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…</li><li>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.</li><li>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…</li></ul>\n<p><em>Verified:</em> 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…</p>\n<p><a href=\"https://stellate.app/access.html?genre=ambient&amp;seed=6362\">▶ Play it: Stationary Weather — the accessible text version, where the same music arrives as prose</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/8508e002d8894269196ac0bf013b0ed2eb810e9b\">8508e00</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "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.\n\n• engine/genres-data.js 648 KB the 274 anchors engine/registry-data.js 131 KB SOURCES / SOURCE_POOLS / SAMPLES / VOXBANK / SAMPLERS / PERCBANK\n\n• 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…\n\n• 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.\n\n• 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…\n\nVerified: 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…\n\n▶ Play it: Stationary Weather — the accessible text version, where the same music arrives as prose https://stellate.app/access.html?genre=ambient&seed=6362\n\n8508e00 https://github.com/aboard-io/stellate/commit/8508e002d8894269196ac0bf013b0ed2eb810e9b",
   "date_published": "2026-07-28T00:45:05.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ambient",
    "accessibility"
   ]
  },
  {
   "id": "bebf85bc9e425590a759f4f88dcd260bfff6a191",
   "url": "https://stellate.app/?genre=gospel&seed=3652&path=171.7064,190.7097,152.7097&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/bebf85bc9e425590a759f4f88dcd260bfff6a191",
   "title": "Stage E1 step 1: a gate that proves the genre data survived the move",
   "summary": "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…",
   "content_html": "<p>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…</p>\n<ul><li>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…</li><li>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…</li><li>Wired into verify.sh as &quot;kerneldata&quot;: 12/12 PASS.</li><li>The split itself is the next commit. Nothing has moved yet.</li></ul>\n<p><em>Verified:</em> it actually fails, rather than assuming: a one-digit cutoff change (1700 -&gt; 1701, buried 547 KB into GENRES) is caught twice independently -- by the byte hash, which points straight at the…</p>\n<p><a href=\"https://stellate.app/?genre=gospel&amp;seed=3652&amp;path=171.7064,190.7097,152.7097&amp;xdur=13.122\">▶ Play it: Rapture Logistics — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/bebf85bc9e425590a759f4f88dcd260bfff6a191\">bebf85b</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "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…\n\n• 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…\n\n• 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…\n\n• Wired into verify.sh as \"kerneldata\": 12/12 PASS.\n\n• The split itself is the next commit. Nothing has moved yet.\n\nVerified: 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…\n\n▶ 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\n\nbebf85b https://github.com/aboard-io/stellate/commit/bebf85bc9e425590a759f4f88dcd260bfff6a191",
   "date_published": "2026-07-28T00:11:32.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "gospel",
    "harmony"
   ]
  },
  {
   "id": "2a6960886808f35398d9e7db10810547840e5bdf",
   "url": "https://stellate.app/?genre=gospel&seed=1064&path=171.7086,2296.6531&xdur=0.341",
   "external_url": "https://github.com/aboard-io/stellate/commit/2a6960886808f35398d9e7db10810547840e5bdf",
   "title": "gospel gets its piano, yachtrock its guitar",
   "summary": "The last two card-lies, fixed the way the cards asked rather than by editing the cards down. gospel's blurb promises \"Hammond organ and gospel piano\" and yachtrock's promises \"Rhodes and clean electric guitar\"",
   "content_html": "<p>The last two card-lies, fixed the way the cards asked rather than by editing the cards down. gospel's blurb promises &quot;Hammond organ and gospel piano&quot; and yachtrock's promises &quot;Rhodes and clean electric guitar&quot;</p>\n<ul><li>Both go in the COMP pool, not the lead. Each card names its own hook -- a massed choir for gospel, a lyrical alto sax for yachtrock -- and those stay where they are</li><li>gospel + bright_yamaha_grand (not felt/upright: gospel piano is percussive and forward, and it comps against the Hammond) yachtrock + clean_guitar (the card's own words)</li><li>Capability, drawn: over 12 seeds the gospel comp resolves church_organ / rock_organ / strings / bright_yamaha_grand and yachtrock's rhodes_ep / electric_piano / strings / clean_guitar, each new instrument…</li><li>This is a kernel change and therefore a matrix change, so it was gated as one rather than assumed: matrix --no-cache still prints diagonal dominant 274/274, and no column moved off its own row.</li></ul>\n<p><em>Verified:</em> verify.sh 11/11, matrix --no-cache 274/274, musicality ALL GREEN (card-lie count 3 -&gt; 0), meter byte-identity green.</p>\n<p><a href=\"https://stellate.app/?genre=gospel&amp;seed=1064&amp;path=171.7086,2296.6531&amp;xdur=0.341\">▶ Play it: Rapture Logistics → Isobar Regatta — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/2a6960886808f35398d9e7db10810547840e5bdf\">2a69608</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The last two card-lies, fixed the way the cards asked rather than by editing the cards down. gospel's blurb promises \"Hammond organ and gospel piano\" and yachtrock's promises \"Rhodes and clean electric guitar\"\n\n• Both go in the COMP pool, not the lead. Each card names its own hook -- a massed choir for gospel, a lyrical alto sax for yachtrock -- and those stay where they are\n\n• gospel + bright_yamaha_grand (not felt/upright: gospel piano is percussive and forward, and it comps against the Hammond) yachtrock + clean_guitar (the card's own words)\n\n• Capability, drawn: over 12 seeds the gospel comp resolves church_organ / rock_organ / strings / bright_yamaha_grand and yachtrock's rhodes_ep / electric_piano / strings / clean_guitar, each new instrument…\n\n• This is a kernel change and therefore a matrix change, so it was gated as one rather than assumed: matrix --no-cache still prints diagonal dominant 274/274, and no column moved off its own row.\n\nVerified: verify.sh 11/11, matrix --no-cache 274/274, musicality ALL GREEN (card-lie count 3 -> 0), meter byte-identity green.\n\n▶ Play it: Rapture Logistics → Isobar Regatta — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=gospel&seed=1064&path=171.7086,2296.6531&xdur=0.341\n\n2a69608 https://github.com/aboard-io/stellate/commit/2a6960886808f35398d9e7db10810547840e5bdf",
   "date_published": "2026-07-27T23:42:17.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "gospel",
    "yachtrock",
    "harmony"
   ]
  },
  {
   "id": "d52b8ed96ee5dddf1d91592c32ae37bd92677481",
   "url": "https://stellate.app/?genre=gospel&seed=9625&path=171.7086,2296.6531&xdur=0.341",
   "external_url": "https://github.com/aboard-io/stellate/commit/d52b8ed96ee5dddf1d91592c32ae37bd92677481",
   "title": "gates: a negated noun is not a promise, and 33 was never the number",
   "summary": "Two long-standing red gates, both stale in the same way -- an assertion that had drifted from what it was actually describing.",
   "content_html": "<p>Two long-standing red gates, both stale in the same way -- an assertion that had drifted from what it was actually describing.</p>\n<ul><li>musicality card-lie: the catalog reported 3 over-promises. One was the checker's fault. chamber's card says &quot;NO piano and NO drums&quot;, and checkCardClaims scanned for instrument nouns with no notion of negation…</li><li>Audited rather than assumed: across all 274 cards that strip suppresses exactly one claim, chamber's piano. No other genre's warnings move.</li><li>starcruise-nav 1A/1C hardcoded 33 clusters against a clusterer that emits 34, so a healthy galaxy reported as a failure.</li><li>STILL RED, and deliberately left for a human: card-lie is now 2, not 0. gospel's card promises &quot;gospel piano&quot; and yachtrock's promises &quot;clean electric guitar&quot;, and neither pool contains the instrument -…</li></ul>\n<p><em>Verified:</em> verify.sh 11/11, matrix --no-cache 274/274 diagonal dominant, starcruise-nav ALL PASS.</p>\n<p><a href=\"https://stellate.app/?genre=gospel&amp;seed=9625&amp;path=171.7086,2296.6531&amp;xdur=0.341\">▶ Play it: Rapture Logistics → Isobar Regatta — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/d52b8ed96ee5dddf1d91592c32ae37bd92677481\">d52b8ed</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Two long-standing red gates, both stale in the same way -- an assertion that had drifted from what it was actually describing.\n\n• musicality card-lie: the catalog reported 3 over-promises. One was the checker's fault. chamber's card says \"NO piano and NO drums\", and checkCardClaims scanned for instrument nouns with no notion of negation…\n\n• Audited rather than assumed: across all 274 cards that strip suppresses exactly one claim, chamber's piano. No other genre's warnings move.\n\n• starcruise-nav 1A/1C hardcoded 33 clusters against a clusterer that emits 34, so a healthy galaxy reported as a failure.\n\n• STILL RED, and deliberately left for a human: card-lie is now 2, not 0. gospel's card promises \"gospel piano\" and yachtrock's promises \"clean electric guitar\", and neither pool contains the instrument -…\n\nVerified: verify.sh 11/11, matrix --no-cache 274/274 diagonal dominant, starcruise-nav ALL PASS.\n\n▶ Play it: Rapture Logistics → Isobar Regatta — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=gospel&seed=9625&path=171.7086,2296.6531&xdur=0.341\n\nd52b8ed https://github.com/aboard-io/stellate/commit/d52b8ed96ee5dddf1d91592c32ae37bd92677481",
   "date_published": "2026-07-27T23:31:52.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "gospel",
    "yachtrock",
    "harmony"
   ]
  },
  {
   "id": "a6499598585054772e1afa23498997c3efdb6cdd",
   "url": "https://stellate.app/?genre=spokenword&seed=3280&path=196.11721,215.11754,177.11754&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/a6499598585054772e1afa23498997c3efdb6cdd",
   "title": "SOURCES: stop promising what the deploy does not do",
   "summary": "The media policy said tier-3 material is \"never redistributed, in any form: never committed, never in a packaged build, never in a distributed render.\" The deploy has been contradicting that: tools/deploy-stellate.sh rsyncs found/, the root-anchored --exclude '/*.wav' never touches it, and…",
   "content_html": "<p>The media policy said tier-3 material is &quot;never redistributed, in any form: never committed, never in a packaged build, never in a distributed render.&quot; The deploy has been contradicting that: tools/deploy-stellate.sh rsyncs found/, the root-anchored --exclude '/*.wav' never touches it, and…</p>\n<ul><li>Decision: keep the deploy, drop the promise. So this rewrites the policy header to say what actually happens -- the fetched media is served from the public web -- and rewrites the per-item promises into…</li><li>What is deliberately NOT removed: the licence facts. Every ⚠, every &quot;no licence chain&quot;, every NC/ND flag stays exactly where it was, and the header now says plainly that the terms still bind, that serving…</li><li>Also added: a note for anyone forking, since the risk is a decision the repo owner made and does not travel with the code -- with a pointer at the rsync filter that is where a stricter policy would be enforced.</li><li>One &quot;never redistributed&quot; survives, at the MIDI trove, because it is true: found/midi/ is excluded from the rsync and the corpus lives off-repo on the external drive.</li></ul>\n<p><em>Verified:</em> doc-counts PASS.</p>\n<p><a href=\"https://stellate.app/?genre=spokenword&amp;seed=3280&amp;path=196.11721,215.11754,177.11754&amp;xdur=13.122\">▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/a6499598585054772e1afa23498997c3efdb6cdd\">a649959</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The media policy said tier-3 material is \"never redistributed, in any form: never committed, never in a packaged build, never in a distributed render.\" The deploy has been contradicting that: tools/deploy-stellate.sh rsyncs found/, the root-anchored --exclude '/*.wav' never touches it, and…\n\n• Decision: keep the deploy, drop the promise. So this rewrites the policy header to say what actually happens -- the fetched media is served from the public web -- and rewrites the per-item promises into…\n\n• What is deliberately NOT removed: the licence facts. Every ⚠, every \"no licence chain\", every NC/ND flag stays exactly where it was, and the header now says plainly that the terms still bind, that serving…\n\n• Also added: a note for anyone forking, since the risk is a decision the repo owner made and does not travel with the code -- with a pointer at the rsync filter that is where a stricter policy would be enforced.\n\n• One \"never redistributed\" survives, at the MIDI trove, because it is true: found/midi/ is excluded from the rsync and the corpus lives off-repo on the external drive.\n\nVerified: doc-counts PASS.\n\n▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices https://stellate.app/?genre=spokenword&seed=3280&path=196.11721,215.11754,177.11754&xdur=13.122\n\na649959 https://github.com/aboard-io/stellate/commit/a6499598585054772e1afa23498997c3efdb6cdd",
   "date_published": "2026-07-27T23:25:58.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "spokenword",
    "voice"
   ]
  },
  {
   "id": "b96a25b592ce76c4c51d42e7fc43dab00cbcddd5",
   "url": "https://stellate.app/?genre=bigband&seed=9429&path=814.14134,833.14167,795.14167&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/b96a25b592ce76c4c51d42e7fc43dab00cbcddd5",
   "title": "LOFO: 28 MB off the deploy, and two \"free\" cuts that measured otherwise",
   "summary": "The free-cuts phase of the LOFO plan (docs/TODO.md). Two of the four listed cuts are genuinely free and land here; the other two were mis-scoped, and the measurements are what changed the answer.",
   "content_html": "<p>The free-cuts phase of the LOFO plan (docs/TODO.md). Two of the four listed cuts are genuinely free and land here; the other two were mis-scoped, and the measurements are what changed the answer.</p>\n<ul><li>Landed, both rsync filters -- no app code moves. Measured with --dry-run --stats, old filters vs new: 526.18 MB / 9,591 files -&gt; 497.88 MB / 9,303.</li><li>zones.json + _gm-extract-summary.json: 134 files, 544 KB of extractor output that nothing fetches. The browser reads zone geometry from K.SAMPLERS, and faust/sf2.js says so outright.</li><li>@grame narrowed 28 MB -&gt; 194 KB. The web needs exactly one file of that tree, dist/esm/index.js, from which live.js / stream-worker.js / stem-worker.js import FaustWasmInstantiator and FaustMonoDspGenerator to…</li><li>dx7-presets.json. The 671 KB in the plan is the raw size; the live server sends it gzipped at 74.7 KB.</li></ul>\n<p><em>Verified:</em> verify.sh 11/11; deploy script syntax-checked and its filters dry-run verified to ship exactly dist/esm/index.js and no zones.json.</p>\n<p><a href=\"https://stellate.app/?genre=bigband&amp;seed=9429&amp;path=814.14134,833.14167,795.14167&amp;xdur=13.122\">▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/b96a25b592ce76c4c51d42e7fc43dab00cbcddd5\">b96a25b</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The free-cuts phase of the LOFO plan (docs/TODO.md). Two of the four listed cuts are genuinely free and land here; the other two were mis-scoped, and the measurements are what changed the answer.\n\n• Landed, both rsync filters -- no app code moves. Measured with --dry-run --stats, old filters vs new: 526.18 MB / 9,591 files -> 497.88 MB / 9,303.\n\n• zones.json + _gm-extract-summary.json: 134 files, 544 KB of extractor output that nothing fetches. The browser reads zone geometry from K.SAMPLERS, and faust/sf2.js says so outright.\n\n• @grame narrowed 28 MB -> 194 KB. The web needs exactly one file of that tree, dist/esm/index.js, from which live.js / stream-worker.js / stem-worker.js import FaustWasmInstantiator and FaustMonoDspGenerator to…\n\n• dx7-presets.json. The 671 KB in the plan is the raw size; the live server sends it gzipped at 74.7 KB.\n\nVerified: verify.sh 11/11; deploy script syntax-checked and its filters dry-run verified to ship exactly dist/esm/index.js and no zones.json.\n\n▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments https://stellate.app/?genre=bigband&seed=9429&path=814.14134,833.14167,795.14167&xdur=13.122\n\nb96a25b https://github.com/aboard-io/stellate/commit/b96a25b592ce76c4c51d42e7fc43dab00cbcddd5",
   "date_published": "2026-07-27T23:18:42.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bigband",
    "sampler"
   ]
  },
  {
   "id": "4e0f650a8d0e82861e5eba25fddee1538a052396",
   "url": "https://stellate.app/?genre=trap&seed=6754&path=1504.8922,1523.8955,1485.8955&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/4e0f650a8d0e82861e5eba25fddee1538a052396",
   "title": "strip the session out of the source: no dates, no attributions, no branches",
   "summary": "Stage C of the 1.0 source cleanup (docs/TODO.md). The comments kept every technical claim they were making and lost the provenance around it: dated attributions, quoted session speech, git SHAs, branch-name narration, and ~330 bare dates that told a reader when something happened rather than what it…",
   "content_html": "<p>Stage C of the 1.0 source cleanup (docs/TODO.md). The comments kept every technical claim they were making and lost the provenance around it: dated attributions, quoted session speech, git SHAs, branch-name narration, and ~330 bare dates that told a reader when something happened rather than what it…</p>\n<ul><li>Also in scope, all named in the plan: glyphs.js's 15-line ARCHAEOLOGY block; four test files still heading themselves &quot;// faust/...&quot; from before they moved into test/</li><li>Deliberately kept: author metadata, the visible credits and the MIT line -- that is attribution, not narration. Citations of docs that still exist (TIMING-AUDIT, ENGINE-AUDIT)</li><li>The tool needed fixing first. Its walker knew about strings but not regex literals, so a literal like /['&quot;]/ flipped it into &quot;inside a string&quot; and it silently stopped stripping comments for the rest of the…</li><li>Two failures predate this and are untouched, confirmed identical against a stashed clean tree: musicality.test's card-lie count (3 genre cards promise an instrument their recipe cannot realize) and…</li></ul>\n<p><em>Verified:</em> comment-only.js is the tool for this pass: it strips comments and whitespace from both revisions and diffs what is left, so &quot;I only edited comments&quot; is checkable instead of merely claimed.</p>\n<p><a href=\"https://stellate.app/?genre=trap&amp;seed=6754&amp;path=1504.8922,1523.8955,1485.8955&amp;xdur=13.122\">▶ Play it: Locust Arithmetic — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/4e0f650a8d0e82861e5eba25fddee1538a052396\">4e0f650</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Stage C of the 1.0 source cleanup (docs/TODO.md). The comments kept every technical claim they were making and lost the provenance around it: dated attributions, quoted session speech, git SHAs, branch-name narration, and ~330 bare dates that told a reader when something happened rather than what it…\n\n• Also in scope, all named in the plan: glyphs.js's 15-line ARCHAEOLOGY block; four test files still heading themselves \"// faust/...\" from before they moved into test/\n\n• Deliberately kept: author metadata, the visible credits and the MIT line -- that is attribution, not narration. Citations of docs that still exist (TIMING-AUDIT, ENGINE-AUDIT)\n\n• The tool needed fixing first. Its walker knew about strings but not regex literals, so a literal like /['\"]/ flipped it into \"inside a string\" and it silently stopped stripping comments for the rest of the…\n\n• Two failures predate this and are untouched, confirmed identical against a stashed clean tree: musicality.test's card-lie count (3 genre cards promise an instrument their recipe cannot realize) and…\n\nVerified: comment-only.js is the tool for this pass: it strips comments and whitespace from both revisions and diffs what is left, so \"I only edited comments\" is checkable instead of merely claimed.\n\n▶ Play it: Locust Arithmetic — parked on the genre this change names https://stellate.app/?genre=trap&seed=6754&path=1504.8922,1523.8955,1485.8955&xdur=13.122\n\n4e0f650 https://github.com/aboard-io/stellate/commit/4e0f650a8d0e82861e5eba25fddee1538a052396",
   "date_published": "2026-07-27T23:18:24.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "trap",
    "accessibility"
   ]
  },
  {
   "id": "0d0fea6baf00b9dd23c6cb59e79daee15adeb38a",
   "url": "https://stellate.app/embed.html?genre=citypop&seed=6859&path=1530.6199,1549.6232,1511.6232&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/0d0fea6baf00b9dd23c6cb59e79daee15adeb38a",
   "title": "delete what is actually dead; keep what only looked dead",
   "summary": "The audit that proposed this pass graded far too much as dead, because it grepped for test wrappers instead of the requires. Checking each claim first:",
   "content_html": "<p>The audit that proposed this pass graded far too much as dead, because it grepped for test wrappers instead of the requires. Checking each claim first:</p>\n<ul><li>engine/checks/ (5 files, 899 lines) — &quot;zero CI reach&quot;. WRONG.</li><li>tools/make-mix-page.js — &quot;zero references&quot;. WRONG. genre-kernel.js:8942 and :8978 execFileSync it from the playlist and journey CLIs.</li><li>tools/fetch-found-voice.sh — &quot;dead&quot;. It is the committed recipe SOURCES.md cites as the provenance for the voice tier, which is the whole media policy: we ship the recipe, not the media.</li><li>What was genuinely unreferenced, and is now gone (1,431 lines): seven probe-*.js with no citation anywhere, and the four starcruise screenshot scripts, which produce PNGs and assert nothing.</li></ul>\n<p><em>Verified:</em> probe-reverb.js and friends — &quot;unreferenced one-offs&quot;. Five .dsp source files and engine/faust/VOICES.md cite them by name as the tuning instruments for those DSPs.</p>\n<p><a href=\"https://stellate.app/embed.html?genre=citypop&amp;seed=6859&amp;path=1530.6199,1549.6232,1511.6232&amp;xdur=13.122\">▶ Play it: Neon Fiscal Year — the embeddable player, in someone else's page</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/0d0fea6baf00b9dd23c6cb59e79daee15adeb38a\">0d0fea6</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The audit that proposed this pass graded far too much as dead, because it grepped for test wrappers instead of the requires. Checking each claim first:\n\n• engine/checks/ (5 files, 899 lines) — \"zero CI reach\". WRONG.\n\n• tools/make-mix-page.js — \"zero references\". WRONG. genre-kernel.js:8942 and :8978 execFileSync it from the playlist and journey CLIs.\n\n• tools/fetch-found-voice.sh — \"dead\". It is the committed recipe SOURCES.md cites as the provenance for the voice tier, which is the whole media policy: we ship the recipe, not the media.\n\n• What was genuinely unreferenced, and is now gone (1,431 lines): seven probe-*.js with no citation anywhere, and the four starcruise screenshot scripts, which produce PNGs and assert nothing.\n\nVerified: probe-reverb.js and friends — \"unreferenced one-offs\". Five .dsp source files and engine/faust/VOICES.md cite them by name as the tuning instruments for those DSPs.\n\n▶ Play it: Neon Fiscal Year — the embeddable player, in someone else's page https://stellate.app/embed.html?genre=citypop&seed=6859&path=1530.6199,1549.6232,1511.6232&xdur=13.122\n\n0d0fea6 https://github.com/aboard-io/stellate/commit/0d0fea6baf00b9dd23c6cb59e79daee15adeb38a",
   "date_published": "2026-07-27T21:34:21.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "embed"
   ]
  },
  {
   "id": "38286bcfa23acd43ea777f60fd046d455ebd8402",
   "url": "https://stellate.app/?genre=citypop&seed=9135&path=1530.6221,586.10667,1376.19565&xdur=0.056",
   "external_url": "https://github.com/aboard-io/stellate/commit/38286bcfa23acd43ea777f60fd046d455ebd8402",
   "title": "doc-counts: check tracked files, not the filesystem",
   "summary": "It walked the working tree and swept in a nested git worktree left lying around, then failed on THAT checkout's copies of the docs. A checkout which is not part of this commit cannot make this commit wrong. `git ls-files '*.md'` is both narrower and exactly the intent: the docs we ship.",
   "content_html": "<p>It walked the working tree and swept in a nested git worktree left lying around, then failed on THAT checkout's copies of the docs. A checkout which is not part of this commit cannot make this commit wrong. `git ls-files '*.md'` is both narrower and exactly the intent: the docs we ship.</p>\n<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=9135&amp;path=1530.6221,586.10667,1376.19565&amp;xdur=0.056\">▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/38286bcfa23acd43ea777f60fd046d455ebd8402\">38286bc</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "It walked the working tree and swept in a nested git worktree left lying around, then failed on THAT checkout's copies of the docs. A checkout which is not part of this commit cannot make this commit wrong. `git ls-files '*.md'` is both narrower and exactly the intent: the docs we ship.\n\n▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix https://stellate.app/?genre=citypop&seed=9135&path=1530.6221,586.10667,1376.19565&xdur=0.056\n\n38286bc https://github.com/aboard-io/stellate/commit/38286bcfa23acd43ea777f60fd046d455ebd8402",
   "date_published": "2026-07-27T19:58:43.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "downtempo",
    "dnb"
   ]
  },
  {
   "id": "f9ffe5dd888d5b73a8cc3e1f1ea3f30abd9a537c",
   "url": "https://stellate.app/?genre=transitwave&seed=1309&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/f9ffe5dd888d5b73a8cc3e1f1ea3f30abd9a537c",
   "title": "LOFO: the instrument zone library is MP3 now — 98.65 MB to 7.08 MB",
   "summary": "13.94x, measured, across all 108 samplers and 614 zones, at mono 22.05 kHz 48 kbps. Not a fidelity trade in disguise: instrument zones carry 0.254% mean energy above 11 kHz, so 48k/22.05k measures a HIGHER SNR (24.7 dB) than 64k/44.1k while being 25% smaller.",
   "content_html": "<p>13.94x, measured, across all 108 samplers and 614 zones, at mono 22.05 kHz 48 kbps. Not a fidelity trade in disguise: instrument zones carry 0.254% mean energy above 11 kHz, so 48k/22.05k measures a HIGHER SNR (24.7 dB) than 64k/44.1k while being 25% smaller.</p>\n<ul><li>HOSTING.md said this was impossible, because loop points are absolute sample indices and 552 of the 614 zones loop.</li><li>len — the decoded sample count, so a padded buffer can be spotted at all. sr — the zone FILE's rate.</li><li>Two ordering bugs in the tool, found by review: it deleted each sampler's WAVs as that sampler finished but spliced the metadata once at the very end, so an interrupt left media gone with nothing describing…</li><li>: the rename lives inside genre-kernel.js, which rides stale-while-revalidate, so without a bump a returning listener's first load after deploy would serve the WAV-era kernel and 404 every zone.</li></ul>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=1309&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/f9ffe5dd888d5b73a8cc3e1f1ea3f30abd9a537c\">f9ffe5d</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "13.94x, measured, across all 108 samplers and 614 zones, at mono 22.05 kHz 48 kbps. Not a fidelity trade in disguise: instrument zones carry 0.254% mean energy above 11 kHz, so 48k/22.05k measures a HIGHER SNR (24.7 dB) than 64k/44.1k while being 25% smaller.\n\n• HOSTING.md said this was impossible, because loop points are absolute sample indices and 552 of the 614 zones loop.\n\n• len — the decoded sample count, so a padded buffer can be spotted at all. sr — the zone FILE's rate.\n\n• Two ordering bugs in the tool, found by review: it deleted each sampler's WAVs as that sampler finished but spliced the metadata once at the very end, so an interrupt left media gone with nothing describing…\n\n• : the rename lives inside genre-kernel.js, which rides stale-while-revalidate, so without a bump a returning listener's first load after deploy would serve the WAV-era kernel and 404 every zone.\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=1309&path=749.12536,768.12569,730.12569&xdur=13.122\n\nf9ffe5d https://github.com/aboard-io/stellate/commit/f9ffe5dd888d5b73a8cc3e1f1ea3f30abd9a537c",
   "date_published": "2026-07-27T19:58:43.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "bd94b1ea7720a5c7bcc6edd132f6af9f8cd2083a",
   "url": "https://stellate.app/?genre=citypop&seed=3698&path=1530.6221,586.10667,1376.19565&xdur=0.056",
   "external_url": "https://github.com/aboard-io/stellate/commit/bd94b1ea7720a5c7bcc6edd132f6af9f8cd2083a",
   "title": "docs: delete three docs that were actively misleading",
   "summary": "KERNEL-MAP.md was a line-number index into genre-kernel.js in which every one of the thirteen entries was wrong — GENRES documented at 1663 and actually at 1327, toState at 7908 and actually at 8198.",
   "content_html": "<p>KERNEL-MAP.md was a line-number index into genre-kernel.js in which every one of the thirteen entries was wrong — GENRES documented at 1663 and actually at 1327, toState at 7908 and actually at 8198.</p>\n<ul><li>ROADMAP.md was a 2026-07-11 plan with 38 items already marked done, referencing four docs that were never written, and opening with a ground-truth block asserting 249 anchors while scolding other docs for…</li><li>STARCRUISE-LIBS.md was an adoption plan for five libraries; two shipped and are recorded in vendor/*/VERSION.txt and NOTICE, and the other three never existed in this tree.</li><li>Their citations are fixed rather than orphaned: ARCHITECTURE.md drops the KERNEL-MAP pointer, planet.js loses it from a code comment, TODO stops calling ROADMAP the place plans graduate to.</li><li>STARCRUISE.md said &quot;Status: SCAFFOLD (this commit)&quot; and called five modules stubs rendering a placeholder scene. They are ~7,300 lines.</li></ul>\n<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=3698&amp;path=1530.6221,586.10667,1376.19565&amp;xdur=0.056\">▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/bd94b1ea7720a5c7bcc6edd132f6af9f8cd2083a\">bd94b1e</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "KERNEL-MAP.md was a line-number index into genre-kernel.js in which every one of the thirteen entries was wrong — GENRES documented at 1663 and actually at 1327, toState at 7908 and actually at 8198.\n\n• ROADMAP.md was a 2026-07-11 plan with 38 items already marked done, referencing four docs that were never written, and opening with a ground-truth block asserting 249 anchors while scolding other docs for…\n\n• STARCRUISE-LIBS.md was an adoption plan for five libraries; two shipped and are recorded in vendor/*/VERSION.txt and NOTICE, and the other three never existed in this tree.\n\n• Their citations are fixed rather than orphaned: ARCHITECTURE.md drops the KERNEL-MAP pointer, planet.js loses it from a code comment, TODO stops calling ROADMAP the place plans graduate to.\n\n• STARCRUISE.md said \"Status: SCAFFOLD (this commit)\" and called five modules stubs rendering a placeholder scene. They are ~7,300 lines.\n\n▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix https://stellate.app/?genre=citypop&seed=3698&path=1530.6221,586.10667,1376.19565&xdur=0.056\n\nbd94b1e https://github.com/aboard-io/stellate/commit/bd94b1ea7720a5c7bcc6edd132f6af9f8cd2083a",
   "date_published": "2026-07-27T18:27:33.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "downtempo",
    "dnb"
   ]
  },
  {
   "id": "695c4cf7ee52b82a653d052f401d390c2f64cf83",
   "url": "https://stellate.app/?genre=vaporwave&seed=3695&path=1679.4415,292.16891,1718.20526&xdur=0.046",
   "external_url": "https://github.com/aboard-io/stellate/commit/695c4cf7ee52b82a653d052f401d390c2f64cf83",
   "title": "delete playlist/ — committed derived output that was deploying",
   "summary": "31 tracked files, untouched since 2026-06-11, read by no code: `track` and `journey` write a playlist.json into whatever --out you give them, and make-mix-page.js takes its directory as an argument.",
   "content_html": "<p>31 tracked files, untouched since 2026-06-11, read by no code: `track` and `journey` write a playlist.json into whatever --out you give them, and make-mix-page.js takes its directory as an argument.</p>\n<ul><li>It also contradicted the repo's headline rule in public — source is committed, audio is derived and gitignored</li><li>The .gitignore comment that kept them tracked cited &quot;playlist/ and mix/&quot;; mix/ has not existed for some time.</li></ul>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=3695&amp;path=1679.4415,292.16891,1718.20526&amp;xdur=0.046\">▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/695c4cf7ee52b82a653d052f401d390c2f64cf83\">695c4cf</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "31 tracked files, untouched since 2026-06-11, read by no code: `track` and `journey` write a playlist.json into whatever --out you give them, and make-mix-page.js takes its directory as an argument.\n\n• It also contradicted the repo's headline rule in public — source is committed, audio is derived and gitignored\n\n• The .gitignore comment that kept them tracked cited \"playlist/ and mix/\"; mix/ has not existed for some time.\n\n▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix https://stellate.app/?genre=vaporwave&seed=3695&path=1679.4415,292.16891,1718.20526&xdur=0.046\n\n695c4cf https://github.com/aboard-io/stellate/commit/695c4cf7ee52b82a653d052f401d390c2f64cf83",
   "date_published": "2026-07-27T18:27:12.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "jazz",
    "jungle",
    "travel"
   ]
  },
  {
   "id": "f6ebdd2d5cc2e4fa1e08d1dc027e3e9f9240b64a",
   "url": "https://stellate.app/?genre=vaporwave&seed=7717&path=1679.4415,292.16891,1718.20526&xdur=0.046",
   "external_url": "https://github.com/aboard-io/stellate/commit/f6ebdd2d5cc2e4fa1e08d1dc027e3e9f9240b64a",
   "title": "verify: run the load-order gate, and fix the race that hid it",
   "summary": "boot-smoke.js parses index.html, replays its classic <script> block in a vm sandbox, and fails if a script moves, disappears or stops publishing its window global. It is the gate that makes moving engine files survivable — and it lived only in `npm run test:pure`, which CI never calls.",
   "content_html": "<p>boot-smoke.js parses index.html, replays its classic &lt;script&gt; block in a vm sandbox, and fails if a script moves, disappears or stops publishing its window global. It is the gate that makes moving engine files survivable — and it lived only in `npm run test:pure`, which CI never calls.</p>\n<ul><li>Adding it surfaced a latent race. The wait loop sized itself with `jobs -rp | wc -l`, which lists only jobs still RUNNING, so any suite finishing before the count was taken went unrecorded: the loop exited…</li><li>Also adds doc-counts.test.js: the anchor count has been wrong in the docs three times over and drifts silently because nothing reads it.</li><li>And corrects the header, which advertised four suites while the body forked ten, and pointed at scratch/.verify-cache when the cache is under engine/scratch/.</li></ul>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=7717&amp;path=1679.4415,292.16891,1718.20526&amp;xdur=0.046\">▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/f6ebdd2d5cc2e4fa1e08d1dc027e3e9f9240b64a\">f6ebdd2</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "boot-smoke.js parses index.html, replays its classic <script> block in a vm sandbox, and fails if a script moves, disappears or stops publishing its window global. It is the gate that makes moving engine files survivable — and it lived only in `npm run test:pure`, which CI never calls.\n\n• Adding it surfaced a latent race. The wait loop sized itself with `jobs -rp | wc -l`, which lists only jobs still RUNNING, so any suite finishing before the count was taken went unrecorded: the loop exited…\n\n• Also adds doc-counts.test.js: the anchor count has been wrong in the docs three times over and drifts silently because nothing reads it.\n\n• And corrects the header, which advertised four suites while the body forked ten, and pointed at scratch/.verify-cache when the cache is under engine/scratch/.\n\n▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix https://stellate.app/?genre=vaporwave&seed=7717&path=1679.4415,292.16891,1718.20526&xdur=0.046\n\nf6ebdd2 https://github.com/aboard-io/stellate/commit/f6ebdd2d5cc2e4fa1e08d1dc027e3e9f9240b64a",
   "date_published": "2026-07-27T18:27:12.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "jazz",
    "jungle",
    "travel"
   ]
  },
  {
   "id": "46f5ca3f55cdb51825fc121b2b64db77830e8ec6",
   "url": "https://stellate.app/?genre=citypop&seed=3215&path=1530.6221,586.10667,1376.19565&xdur=0.056",
   "external_url": "https://github.com/aboard-io/stellate/commit/46f5ca3f55cdb51825fc121b2b64db77830e8ec6",
   "title": "hosting: don't hardcode the droplet's IP",
   "summary": "Ahead of the repo going public. The address is public via DNS anyway, so this is not a secret — but writing it down pins a box that DNS already answers for, and it goes stale the moment the droplet is replaced. `dig +short stellate.app` is both current and correct.",
   "content_html": "<p>Ahead of the repo going public. The address is public via DNS anyway, so this is not a secret — but writing it down pins a box that DNS already answers for, and it goes stale the moment the droplet is replaced. `dig +short stellate.app` is both current and correct.</p>\n<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=3215&amp;path=1530.6221,586.10667,1376.19565&amp;xdur=0.056\">▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/46f5ca3f55cdb51825fc121b2b64db77830e8ec6\">46f5ca3</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Ahead of the repo going public. The address is public via DNS anyway, so this is not a secret — but writing it down pins a box that DNS already answers for, and it goes stale the moment the droplet is replaced. `dig +short stellate.app` is both current and correct.\n\n▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix https://stellate.app/?genre=citypop&seed=3215&path=1530.6221,586.10667,1376.19565&xdur=0.056\n\n46f5ca3 https://github.com/aboard-io/stellate/commit/46f5ca3f55cdb51825fc121b2b64db77830e8ec6",
   "date_published": "2026-07-27T17:48:42.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "downtempo",
    "dnb"
   ]
  },
  {
   "id": "72b60eb762fceaa987c3ec8593b5c8a8dc162297",
   "url": "https://stellate.app/?genre=vaporwave&seed=1943&path=1679.4415,292.16891,1718.20526&xdur=0.046",
   "external_url": "https://github.com/aboard-io/stellate/commit/72b60eb762fceaa987c3ec8593b5c8a8dc162297",
   "title": "drop the verifier-catalog submodule",
   "summary": "Nothing in the app, the gates or CI ever imported it — it was reference data plus an MCP tool, already documented as optional and deliberately not checked out by the workflow.",
   "content_html": "<p>Nothing in the app, the gates or CI ever imported it — it was reference data plus an MCP tool, already documented as optional and deliberately not checked out by the workflow.</p>\n<ul><li>Removes the submodule, .gitmodules and .mcp.json, and rewrites the places that explained them: CLAUDE.md loses the catalog section, README/SETUP lose the submodule init line, CONTRIBUTING loses the…</li><li>The generator-verifier-feedback-loop idea stays — it is the thing this repo demonstrates, and it no longer needs a footnote pointing somewhere else.</li></ul>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=1943&amp;path=1679.4415,292.16891,1718.20526&amp;xdur=0.046\">▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/72b60eb762fceaa987c3ec8593b5c8a8dc162297\">72b60eb</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Nothing in the app, the gates or CI ever imported it — it was reference data plus an MCP tool, already documented as optional and deliberately not checked out by the workflow.\n\n• Removes the submodule, .gitmodules and .mcp.json, and rewrites the places that explained them: CLAUDE.md loses the catalog section, README/SETUP lose the submodule init line, CONTRIBUTING loses the…\n\n• The generator-verifier-feedback-loop idea stays — it is the thing this repo demonstrates, and it no longer needs a footnote pointing somewhere else.\n\n▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix https://stellate.app/?genre=vaporwave&seed=1943&path=1679.4415,292.16891,1718.20526&xdur=0.046\n\n72b60eb https://github.com/aboard-io/stellate/commit/72b60eb762fceaa987c3ec8593b5c8a8dc162297",
   "date_published": "2026-07-27T17:47:22.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "jazz",
    "jungle",
    "travel"
   ]
  },
  {
   "id": "63cdc83ca28430f172fefeeab0c67d8a3ac410b6",
   "url": "https://stellate.app/?genre=citypop&seed=8524&path=1530.6221,586.10667,1376.19565&xdur=0.056",
   "external_url": "https://github.com/aboard-io/stellate/commit/63cdc83ca28430f172fefeeab0c67d8a3ac410b6",
   "title": "vendor: serve the modules as .js — nginx does not map .mjs",
   "summary": "Deployed and immediately broken: stock nginx mime.types has no .mjs entry, so preact.mjs and htm.mjs went out as application/octet-stream and every browser refused them.",
   "content_html": "<p>Deployed and immediately broken: stock nginx mime.types has no .mjs entry, so preact.mjs and htm.mjs went out as application/octet-stream and every browser refused them.</p>\n<ul><li>Renaming to .js fixes it with no server config: .js is mapped to text/javascript on every host, so this cannot regress on a reinstall, a new box, or the second site served off this same tree.</li><li>This is the same failure the probe harness hit before it learned .mjs, which is the one place .mjs still needs to work: the harness serves the tree itself.</li></ul>\n<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=8524&amp;path=1530.6221,586.10667,1376.19565&amp;xdur=0.056\">▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/63cdc83ca28430f172fefeeab0c67d8a3ac410b6\">63cdc83</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Deployed and immediately broken: stock nginx mime.types has no .mjs entry, so preact.mjs and htm.mjs went out as application/octet-stream and every browser refused them.\n\n• Renaming to .js fixes it with no server config: .js is mapped to text/javascript on every host, so this cannot regress on a reinstall, a new box, or the second site served off this same tree.\n\n• This is the same failure the probe harness hit before it learned .mjs, which is the one place .mjs still needs to work: the harness serves the tree itself.\n\n▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix https://stellate.app/?genre=citypop&seed=8524&path=1530.6221,586.10667,1376.19565&xdur=0.056\n\n63cdc83 https://github.com/aboard-io/stellate/commit/63cdc83ca28430f172fefeeab0c67d8a3ac410b6",
   "date_published": "2026-07-27T17:34:07.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "downtempo",
    "dnb"
   ]
  },
  {
   "id": "392746ca2b58c1c7cb7c300a7aebfe219ac0457b",
   "url": "https://stellate.app/?genre=techno&seed=7338&path=1956.22436,1718.20526,1679.4415&xdur=0.042",
   "external_url": "https://github.com/aboard-io/stellate/commit/392746ca2b58c1c7cb7c300a7aebfe219ac0457b",
   "title": "ui: uncrop the radar labels, alienize the region names, fix the contact",
   "summary": "The feel radar's viewBox was 0 0 220 220 with axis labels centred on each spoke at r=1.26. \"adventure\" sits at exactly 180 degrees and is the longest axis name, so it ran 7.4px past x=0 and lost its first letter.",
   "content_html": "<p>The feel radar's viewBox was 0 0 220 220 with axis labels centred on each spoke at r=1.26. &quot;adventure&quot; sits at exactly 180 degrees and is the longest axis name, so it ran 7.4px past x=0 and lost its first letter.</p>\n<ul><li>The big territory watermarks on the star map now wear the same alien alphabet as the genre labels. Drawn only -- the __REGIONS debug hook still emits real names, because the headless gates match on them.</li><li>.ab-foot wore a footer's top border after moving to the top of the About card; it gets a header's bottom rule instead.</li><li>security.txt contact -&gt; paul.ford@aboard.com.</li></ul>\n<p><a href=\"https://stellate.app/?genre=techno&amp;seed=7338&amp;path=1956.22436,1718.20526,1679.4415&amp;xdur=0.042\">▶ Play it: Unblinking Interval → Barometric Stampede → Food Court Eternity — a three-star constellation to watch the map work</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/392746ca2b58c1c7cb7c300a7aebfe219ac0457b\">392746c</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The feel radar's viewBox was 0 0 220 220 with axis labels centred on each spoke at r=1.26. \"adventure\" sits at exactly 180 degrees and is the longest axis name, so it ran 7.4px past x=0 and lost its first letter.\n\n• The big territory watermarks on the star map now wear the same alien alphabet as the genre labels. Drawn only -- the __REGIONS debug hook still emits real names, because the headless gates match on them.\n\n• .ab-foot wore a footer's top border after moving to the top of the About card; it gets a header's bottom rule instead.\n\n• security.txt contact -> paul.ford@aboard.com.\n\n▶ Play it: Unblinking Interval → Barometric Stampede → Food Court Eternity — a three-star constellation to watch the map work https://stellate.app/?genre=techno&seed=7338&path=1956.22436,1718.20526,1679.4415&xdur=0.042\n\n392746c https://github.com/aboard-io/stellate/commit/392746ca2b58c1c7cb7c300a7aebfe219ac0457b",
   "date_published": "2026-07-27T17:30:13.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "techno",
    "jungle",
    "vaporwave",
    "visual"
   ]
  },
  {
   "id": "2e75c5cda03a067f7b0fee087ca302d36f0bdf2b",
   "url": "https://stellate.app/?genre=reedrush&seed=8285&path=845.15075,1137.16213,249.13036&xdur=0.227",
   "external_url": "https://github.com/aboard-io/stellate/commit/2e75c5cda03a067f7b0fee087ca302d36f0bdf2b",
   "title": "map: push the two crowded star pairs back over the separation floor",
   "summary": "world.js warned [POS] min pairwise 75.0 on every load. Two pairs were under MIN_SEP_FLOOR, not one -- only the minimum gets reported: salsa/reggaeton at 75.0 and ragtime/reedrush at 80.0.",
   "content_html": "<p>world.js warned [POS] min pairwise 75.0 on every load. Two pairs were under MIN_SEP_FLOOR, not one -- only the minimum gets reported: salsa/reggaeton at 75.0 and ragtime/reedrush at 80.0.</p>\n<ul><li>Each pair is pushed apart along its own axis with the midpoint held -- the smallest move that clears the floor, and the one that least disturbs either star's relationship to everything else.</li><li>Min pairwise is now 93.1 (flamenco/hexagonstampede) and the warning is gone.</li></ul>\n<p><a href=\"https://stellate.app/?genre=reedrush&amp;seed=8285&amp;path=845.15075,1137.16213,249.13036&amp;xdur=0.227\">▶ Play it: Bulrush Cyclotron → Benzene Cavalry → Clave Reactor — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/2e75c5cda03a067f7b0fee087ca302d36f0bdf2b\">2e75c5c</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "world.js warned [POS] min pairwise 75.0 on every load. Two pairs were under MIN_SEP_FLOOR, not one -- only the minimum gets reported: salsa/reggaeton at 75.0 and ragtime/reedrush at 80.0.\n\n• Each pair is pushed apart along its own axis with the midpoint held -- the smallest move that clears the floor, and the one that least disturbs either star's relationship to everything else.\n\n• Min pairwise is now 93.1 (flamenco/hexagonstampede) and the warning is gone.\n\n▶ Play it: Bulrush Cyclotron → Benzene Cavalry → Clave Reactor — the three genres this change names, as one path https://stellate.app/?genre=reedrush&seed=8285&path=845.15075,1137.16213,249.13036&xdur=0.227\n\n2e75c5c https://github.com/aboard-io/stellate/commit/2e75c5cda03a067f7b0fee087ca302d36f0bdf2b",
   "date_published": "2026-07-27T17:30:13.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "reedrush",
    "hexagonstampede",
    "salsa"
   ]
  },
  {
   "id": "de6c9de38b9f724897993cb5bfee377d3107915a",
   "url": "https://stellate.app/embed.html?genre=citypop&seed=9259&path=1530.6199,1549.6232,1511.6232&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/de6c9de38b9f724897993cb5bfee377d3107915a",
   "title": "vendor preact, htm and the two webfonts: nothing is fetched from anyone else",
   "summary": "app/state.js imported preact and htm from esm.sh at runtime, and five pages linked fonts.googleapis.com. Three consequences, one of them serious:",
   "content_html": "<p>app/state.js imported preact and htm from esm.sh at runtime, and five pages linked fonts.googleapis.com. Three consequences, one of them serious:</p>\n<ul><li>The PWA could not boot offline. sw.js passes cross-origin through and never caches it, so the service worker could hold the entire app and all its media and the instrument still would not start without a live…</li><li>The page is COEP require-corp and neither host sends Cross-Origin-Resource- Policy, which is what Safari was reporting -- and it means Orbitron and VT323 were very likely not rendering in production at all.</li><li>And a third party saw a request from every visitor, which undercuts the &quot;no accounts, no cookies, no data&quot; posture the security.txt advertises.</li><li>vendor/preact, vendor/htm and vendor/fonts follow the pattern the other five vendored libraries already use: exact version, upstream LICENSE, a VERSION.txt saying why.</li></ul>\n<p><a href=\"https://stellate.app/embed.html?genre=citypop&amp;seed=9259&amp;path=1530.6199,1549.6232,1511.6232&amp;xdur=13.122\">▶ Play it: Neon Fiscal Year — the embeddable player, in someone else's page</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/de6c9de38b9f724897993cb5bfee377d3107915a\">de6c9de</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "app/state.js imported preact and htm from esm.sh at runtime, and five pages linked fonts.googleapis.com. Three consequences, one of them serious:\n\n• The PWA could not boot offline. sw.js passes cross-origin through and never caches it, so the service worker could hold the entire app and all its media and the instrument still would not start without a live…\n\n• The page is COEP require-corp and neither host sends Cross-Origin-Resource- Policy, which is what Safari was reporting -- and it means Orbitron and VT323 were very likely not rendering in production at all.\n\n• And a third party saw a request from every visitor, which undercuts the \"no accounts, no cookies, no data\" posture the security.txt advertises.\n\n• vendor/preact, vendor/htm and vendor/fonts follow the pattern the other five vendored libraries already use: exact version, upstream LICENSE, a VERSION.txt saying why.\n\n▶ Play it: Neon Fiscal Year — the embeddable player, in someone else's page https://stellate.app/embed.html?genre=citypop&seed=9259&path=1530.6199,1549.6232,1511.6232&xdur=13.122\n\nde6c9de https://github.com/aboard-io/stellate/commit/de6c9de38b9f724897993cb5bfee377d3107915a",
   "date_published": "2026-07-27T17:29:50.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "embed"
   ]
  },
  {
   "id": "b66fe5a215ab510024030348162b35111ae556ff",
   "url": "https://stellate.app/?genre=vaporwave&seed=4594&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/b66fe5a215ab510024030348162b35111ae556ff",
   "title": "found: fade the layer across a blend instead of falling off a cliff",
   "summary": "FOUND-AT-90% dropped the whole found layer one notch past dominance. Measured on a vaporwave->techno sweep, that left zero found events from t=0.15 to t=0.95 -- about 89% of every crossfade -- and 75% of sampled playlist tracks with no found layer at all.",
   "content_html": "<p>FOUND-AT-90% dropped the whole found layer one notch past dominance. Measured on a vaporwave-&gt;techno sweep, that left zero found events from t=0.15 to t=0.95 -- about 89% of every crossfade -- and 75% of sampled playlist tracks with no found layer at all.</p>\n<ul><li>Two changes. The delete becomes an amplitude ramp: full out to t=0.1, linear to silence by 0.5, events under a small floor dropped rather than scheduled as inaudible voices.</li><li>And a bug the cliff was hiding: genreMeta.t is the raw blend position, not distance from the nearest anchor, so testing t alone killed the layer across the entire second half of every crossfade -- including…</li><li>FOUND_FADE_T is a named constant because the width is an ears question; no gate can settle it.</li></ul>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=4594&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/b66fe5a215ab510024030348162b35111ae556ff\">b66fe5a</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "FOUND-AT-90% dropped the whole found layer one notch past dominance. Measured on a vaporwave->techno sweep, that left zero found events from t=0.15 to t=0.95 -- about 89% of every crossfade -- and 75% of sampled playlist tracks with no found layer at all.\n\n• Two changes. The delete becomes an amplitude ramp: full out to t=0.1, linear to silence by 0.5, events under a small floor dropped rather than scheduled as inaudible voices.\n\n• And a bug the cliff was hiding: genreMeta.t is the raw blend position, not distance from the nearest anchor, so testing t alone killed the layer across the entire second half of every crossfade -- including…\n\n• FOUND_FADE_T is a named constant because the width is an ears question; no gate can settle it.\n\n▶ Play it: Food Court Eternity — parked on the genre this change names https://stellate.app/?genre=vaporwave&seed=4594&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\nb66fe5a https://github.com/aboard-io/stellate/commit/b66fe5a215ab510024030348162b35111ae556ff",
   "date_published": "2026-07-27T17:29:36.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "mix"
   ]
  },
  {
   "id": "27e62ad42d591d583adc6f32e74f70a7c94fd048",
   "url": "https://stellate.app/?genre=transitwave&seed=3668&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/27e62ad42d591d583adc6f32e74f70a7c94fd048",
   "title": "precache: warm the set the engine actually asks for",
   "summary": "genreFiles read s.file and instruments.pad.sampler. Neither shape exists: found sources carry samplePath, and the voice objects have no .sampler key at all, so addSampler returned at its first guard every time.",
   "content_html": "<p>genreFiles read s.file and instruments.pad.sampler. Neither shape exists: found sources carry samplePath, and the voice objects have no .sampler key at all, so addSampler returned at its first guard every time.</p>\n<ul><li>It now reads the same set live.js schedules from -- sch.found srcIds union the sampler zone srcIds -- via buildSchedule, and resolves them through the player's own local resolver rather than s.url, which is…</li><li>Deliberately NOT keyed off state.foundSources: the resolved state declares the whole crate, not the draw set, which would pull ~625 files / 100MB per genre.</li></ul>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=3668&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/27e62ad42d591d583adc6f32e74f70a7c94fd048\">27e62ad</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "genreFiles read s.file and instruments.pad.sampler. Neither shape exists: found sources carry samplePath, and the voice objects have no .sampler key at all, so addSampler returned at its first guard every time.\n\n• It now reads the same set live.js schedules from -- sch.found srcIds union the sampler zone srcIds -- via buildSchedule, and resolves them through the player's own local resolver rather than s.url, which is…\n\n• Deliberately NOT keyed off state.foundSources: the resolved state declares the whole crate, not the draw set, which would pull ~625 files / 100MB per genre.\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=3668&path=749.12536,768.12569,730.12569&xdur=13.122\n\n27e62ad https://github.com/aboard-io/stellate/commit/27e62ad42d591d583adc6f32e74f70a7c94fd048",
   "date_published": "2026-07-27T17:29:22.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "22608f864f8b672c92429e4cea583038853f3358",
   "url": "https://stellate.app/?genre=transitwave&seed=7542&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/22608f864f8b672c92429e4cea583038853f3358",
   "title": "found: never fetch from archive.org again",
   "summary": "The player resolved a source url through found-manifest.json's byUrl map and, on a miss, streamed the original from archive.org in escalating Range requests. 79 of 192 sources were unmapped -- and every one of them already had a local twin on disk, deployed, unused.",
   "content_html": "<p>The player resolved a source url through found-manifest.json's byUrl map and, on a miss, streamed the original from archive.org in escalating Range requests. 79 of 192 sources were unmapped -- and every one of them already had a local twin on disk, deployed, unused.</p>\n<ul><li>localCacheFor becomes a convention resolver: url -&gt; SOURCES id -&gt; found/&lt;id&gt;.mp3, with byUrl kept only as an override for names that don't follow it.</li></ul>\n<p><em>Verified:</em> no-remote-sources.test.js makes it permanent: every source must resolve to a found/ path that exists on disk, and the decoder must contain no remote path.</p>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=7542&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/22608f864f8b672c92429e4cea583038853f3358\">22608f8</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The player resolved a source url through found-manifest.json's byUrl map and, on a miss, streamed the original from archive.org in escalating Range requests. 79 of 192 sources were unmapped -- and every one of them already had a local twin on disk, deployed, unused.\n\n• localCacheFor becomes a convention resolver: url -> SOURCES id -> found/<id>.mp3, with byUrl kept only as an override for names that don't follow it.\n\nVerified: no-remote-sources.test.js makes it permanent: every source must resolve to a found/ path that exists on disk, and the decoder must contain no remote path.\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=7542&path=749.12536,768.12569,730.12569&xdur=13.122\n\n22608f8 https://github.com/aboard-io/stellate/commit/22608f864f8b672c92429e4cea583038853f3358",
   "date_published": "2026-07-27T17:29:05.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "a9a2daf8f8854a62a340bae992e9b9804fb8ae76",
   "url": "https://stellate.app/?genre=vaporwave&seed=7392&path=1679.4415,859.9931,1530.6221&xdur=0.134",
   "external_url": "https://github.com/aboard-io/stellate/commit/a9a2daf8f8854a62a340bae992e9b9804fb8ae76",
   "title": "FM level match: the fonts are the same music at the same loudness now",
   "summary": "Paul: \"the FM seems a little distorted/saturated\" and \"switching soundfonts to analog or FM and back... feels like a huge jump in tonality — like they're not related.",
   "content_html": "<p>Paul: &quot;the FM seems a little distorted/saturated&quot; and &quot;switching soundfonts to analog or FM and back... feels like a huge jump in tonality — like they're not related.</p>\n<ul><li>He was not wrong, and the two complaints are one cause. FIRST, the reassuring half, measured: switching fonts does NOT change the music.</li><li>SECOND, the real defect: LEVEL. With v39's fix finally delivering pitch to the FM voices, dx7 measured ~5 dB hotter than the sampled default on the genres that lean on it (live master RMS: fluidr3 -16.4…</li><li>The trim initially did NOTHING because synth voices bake their gain into extGainPerAmp at unit-creation time, before this post-resolution pass runs; scaling lvl alone is a no-op for them.</li><li>minimoog is left at 1.0, a DELIBERATE no-op: its gain does not flow through extGainPerAmp either, and matching it needs the kernel's levelMul mechanism.</li></ul>\n<p><em>Verified:</em> verify.sh, segment-parity 10/10 byte-equal, engine.test (incl. both v39 dx7 gates), meter, matrix 274/274.</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=7392&amp;path=1679.4415,859.9931,1530.6221&amp;xdur=0.134\">▶ Play it: Food Court Eternity → Highway Heat Death → Neon Fiscal Year — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/a9a2daf8f8854a62a340bae992e9b9804fb8ae76\">a9a2daf</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"the FM seems a little distorted/saturated\" and \"switching soundfonts to analog or FM and back... feels like a huge jump in tonality — like they're not related.\n\n• He was not wrong, and the two complaints are one cause. FIRST, the reassuring half, measured: switching fonts does NOT change the music.\n\n• SECOND, the real defect: LEVEL. With v39's fix finally delivering pitch to the FM voices, dx7 measured ~5 dB hotter than the sampled default on the genres that lean on it (live master RMS: fluidr3 -16.4…\n\n• The trim initially did NOTHING because synth voices bake their gain into extGainPerAmp at unit-creation time, before this post-resolution pass runs; scaling lvl alone is a no-op for them.\n\n• minimoog is left at 1.0, a DELIBERATE no-op: its gain does not flow through extGainPerAmp either, and matching it needs the kernel's levelMul mechanism.\n\nVerified: verify.sh, segment-parity 10/10 byte-equal, engine.test (incl. both v39 dx7 gates), meter, matrix 274/274.\n\n▶ Play it: Food Court Eternity → Highway Heat Death → Neon Fiscal Year — the three genres this change names, as one path https://stellate.app/?genre=vaporwave&seed=7392&path=1679.4415,859.9931,1530.6221&xdur=0.134\n\na9a2daf https://github.com/aboard-io/stellate/commit/a9a2daf8f8854a62a340bae992e9b9804fb8ae76",
   "date_published": "2026-07-26T13:47:36.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "synthwave",
    "citypop",
    "sampler"
   ]
  },
  {
   "id": "a57a0f968aad3dc3412bf8930b26a4a4ec2b0c54",
   "url": "https://stellate.app/?genre=bigband&seed=2022&path=814.14134,833.14167,795.14167&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/a57a0f968aad3dc3412bf8930b26a4a4ec2b0c54",
   "title": "The FM font has never played a note — and MIDI comes back",
   "summary": "THE BUG, and it is old. Paul: \"with FM I hear a high pitched mono tone that never changes, samples, drums, and that's it.\" Cause: dx7.lib wraps its whole interface in an hgroup \"DX7\", so Faust roots every param path at the GROUP — /DX7/freq, /DX7/gate",
   "content_html": "<p>THE BUG, and it is old. Paul: &quot;with FM I hear a high pitched mono tone that never changes, samples, drums, and that's it.&quot; Cause: dx7.lib wraps its whole interface in an hgroup &quot;DX7&quot;, so Faust roots every param path at the GROUP — /DX7/freq, /DX7/gate</p>\n<ul><li>Fix: derive the param root from the UI TREE, not the declared name (render-core paramRoot, used by press/stream-worker/stem-worker/stem-parity).</li><li>Consequences honestly handled: yesterday's DX7_MAKEUP=2.0 / OUT_CEIL=1.8 was fitted against SILENT voices and is void (with pitch landing, it pressed 12dB hot)</li><li>Two new gates in engine.test, both verified to FAIL against the old code: param_root_addressable (structural</li><li>MIDI IS BACK (Paul: &quot;I want midi back&quot;). The ⤓ midi button returns to the ⚙ modal — MIDI only; the wav/mp3 machinery stays on legacy-download-video.</li></ul>\n<p><em>Verified:</em> live, dominant peak sampled 1Hz for 20s: dx7 was 468/468/468 stuck at -47..-56dB; now 11 distinct pitches, longest stuck run 3, -23..-30dB.</p>\n<p><a href=\"https://stellate.app/?genre=bigband&amp;seed=2022&amp;path=814.14134,833.14167,795.14167&amp;xdur=13.122\">▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/a57a0f968aad3dc3412bf8930b26a4a4ec2b0c54\">a57a0f9</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "THE BUG, and it is old. Paul: \"with FM I hear a high pitched mono tone that never changes, samples, drums, and that's it.\" Cause: dx7.lib wraps its whole interface in an hgroup \"DX7\", so Faust roots every param path at the GROUP — /DX7/freq, /DX7/gate\n\n• Fix: derive the param root from the UI TREE, not the declared name (render-core paramRoot, used by press/stream-worker/stem-worker/stem-parity).\n\n• Consequences honestly handled: yesterday's DX7_MAKEUP=2.0 / OUT_CEIL=1.8 was fitted against SILENT voices and is void (with pitch landing, it pressed 12dB hot)\n\n• Two new gates in engine.test, both verified to FAIL against the old code: param_root_addressable (structural\n\n• MIDI IS BACK (Paul: \"I want midi back\"). The ⤓ midi button returns to the ⚙ modal — MIDI only; the wav/mp3 machinery stays on legacy-download-video.\n\nVerified: live, dominant peak sampled 1Hz for 20s: dx7 was 468/468/468 stuck at -47..-56dB; now 11 distinct pitches, longest stuck run 3, -23..-30dB.\n\n▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments https://stellate.app/?genre=bigband&seed=2022&path=814.14134,833.14167,795.14167&xdur=13.122\n\na57a0f9 https://github.com/aboard-io/stellate/commit/a57a0f968aad3dc3412bf8930b26a4a4ec2b0c54",
   "date_published": "2026-07-26T04:06:08.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bigband",
    "sampler"
   ]
  },
  {
   "id": "9d20ac0f4ce9b3606c7fd5358c755641d16ca68d",
   "url": "https://stellate.app/?genre=vaporwave&seed=2111&path=1679.4415,292.16891,1718.20526&xdur=0.046",
   "external_url": "https://github.com/aboard-io/stellate/commit/9d20ac0f4ce9b3606c7fd5358c755641d16ca68d",
   "title": "HOSTING: the analytics dashboard is public at /stats (and the base-path trap)",
   "summary": "GoatCounter now serves at https://stellate.app/stats/ behind its own login, via -base-path /stats so no HTML rewriting, subdomain or second cert is needed. Recorded here because it is all server-side config a rebuilt droplet would otherwise lose.",
   "content_html": "<p>GoatCounter now serves at https://stellate.app/stats/ behind its own login, via -base-path /stats so no HTML rewriting, subdomain or second cert is needed. Recorded here because it is all server-side config a rebuilt droplet would otherwise lose.</p>\n<ul><li>The trap, written down because it cost two minutes of dead analytics today: -base-path moves the COLLECTION endpoint as well, so the beacon proxy must target /stats/count.</li><li>Also corrects the password-reset invocation (db update user, not db update-user) and notes the localhost-only tunnel shim as the fallback.</li></ul>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=2111&amp;path=1679.4415,292.16891,1718.20526&amp;xdur=0.046\">▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/9d20ac0f4ce9b3606c7fd5358c755641d16ca68d\">9d20ac0</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "GoatCounter now serves at https://stellate.app/stats/ behind its own login, via -base-path /stats so no HTML rewriting, subdomain or second cert is needed. Recorded here because it is all server-side config a rebuilt droplet would otherwise lose.\n\n• The trap, written down because it cost two minutes of dead analytics today: -base-path moves the COLLECTION endpoint as well, so the beacon proxy must target /stats/count.\n\n• Also corrects the password-reset invocation (db update user, not db update-user) and notes the localhost-only tunnel shim as the fallback.\n\n▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix https://stellate.app/?genre=vaporwave&seed=2111&path=1679.4415,292.16891,1718.20526&xdur=0.046\n\n9d20ac0 https://github.com/aboard-io/stellate/commit/9d20ac0f4ce9b3606c7fd5358c755641d16ca68d",
   "date_published": "2026-07-25T23:47:39.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "jazz",
    "jungle",
    "travel"
   ]
  },
  {
   "id": "1165cad38a10c460ff336641b85f104458ce9ac5",
   "url": "https://stellate.app/?genre=jungle&seed=5731&path=1718.20526,292.16891,1956.22436&xdur=0.129",
   "external_url": "https://github.com/aboard-io/stellate/commit/1165cad38a10c460ff336641b85f104458ce9ac5",
   "title": "Groove, honest sensors, and real headroom",
   "summary": "GROOVE (Paul: \"maybe things need more groove... different tracks have different groove too\"). The audit measured the problem: 247 of 274 genres had ZERO per-lane push/pull — bass sat on kick to within 0.31ms — so every genre shared one rhythmic feel with only tempo differing.",
   "content_html": "<p>GROOVE (Paul: &quot;maybe things need more groove... different tracks have different groove too&quot;). The audit measured the problem: 247 of 274 genres had ZERO per-lane push/pull — bass sat on kick to within 0.31ms — so every genre shared one rhythmic feel with only tempo differing.</p>\n<ul><li><strong>SWING</strong> — deliberately NOT raised, with evidence. In every jazz genre the RIDE plays only on the beat, so the knob cannot reach the instrument whose swing defines the music</li><li>VOICE REPEAT GOVERNOR (Paul: &quot;no vocal or textural sample should repeat more than five times in 64 bars... speech phrases looping ad nauseum&quot;).</li><li>KICK -20% (Paul: &quot;pretty enormous — it can grate&quot;), one named constant after the existing hot-kit balance so it composes rather than fights.</li><li><strong>MASTER BRICKWALL</strong> — the output exceeded full scale in 14.3% of loud 100ms windows (the limiter was a 2ms-attack compressor). A lookahead brickwall with a sliding minimum takes that to 0.00% with octave bands within +/-0.5dB</li></ul>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=5731&amp;path=1718.20526,292.16891,1956.22436&amp;xdur=0.129\">▶ Play it: Barometric Stampede → Smoke Arithmetic → Unblinking Interval — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/1165cad38a10c460ff336641b85f104458ce9ac5\">1165cad</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "GROOVE (Paul: \"maybe things need more groove... different tracks have different groove too\"). The audit measured the problem: 247 of 274 genres had ZERO per-lane push/pull — bass sat on kick to within 0.31ms — so every genre shared one rhythmic feel with only tempo differing.\n\nSWING — deliberately NOT raised, with evidence. In every jazz genre the RIDE plays only on the beat, so the knob cannot reach the instrument whose swing defines the music\n\n• VOICE REPEAT GOVERNOR (Paul: \"no vocal or textural sample should repeat more than five times in 64 bars... speech phrases looping ad nauseum\").\n\n• KICK -20% (Paul: \"pretty enormous — it can grate\"), one named constant after the existing hot-kit balance so it composes rather than fights.\n\nMASTER BRICKWALL — the output exceeded full scale in 14.3% of loud 100ms windows (the limiter was a 2ms-attack compressor). A lookahead brickwall with a sliding minimum takes that to 0.00% with octave bands within +/-0.5dB\n\n▶ Play it: Barometric Stampede → Smoke Arithmetic → Unblinking Interval — the three genres this change names, as one path https://stellate.app/?genre=jungle&seed=5731&path=1718.20526,292.16891,1956.22436&xdur=0.129\n\n1165cad https://github.com/aboard-io/stellate/commit/1165cad38a10c460ff336641b85f104458ce9ac5",
   "date_published": "2026-07-25T21:46:42.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "jazz",
    "techno",
    "voice"
   ]
  },
  {
   "id": "5436455dae26f84213af90973e61fd192a6ea7c5",
   "url": "https://stellate.app/?genre=vaporwave&seed=5845&path=1679.4415,859.9931&xdur=0.134",
   "external_url": "https://github.com/aboard-io/stellate/commit/5436455dae26f84213af90973e61fd192a6ea7c5",
   "title": "The timing pass: the seam coin-flip, the dry crossfade, and the notes we scheduled in the past",
   "summary": "Paul: \"drill in deeply on timing and scheduling. It seems fine but I'm paranoid... isn't it possible we missed something.\" It was. docs/TIMING-AUDIT- 2026-07.md is the full measurement report; three defects came out of it.",
   "content_html": "<p>Paul: &quot;drill in deeply on timing and scheduling. It seems fine but I'm paranoid... isn't it possible we missed something.&quot; It was. docs/TIMING-AUDIT- 2026-07.md is the full measurement report; three defects came out of it.</p>\n<ul><li>1. THE SEAM COIN-FLIP (live only, ~1/4 of downbeats). makeWalk regenerates the collapsed section every chord bar with a DIFFERENT seed, and mapEvents binned events by their POST-humanize beat</li><li>2. THE DRY CROSSFADE.</li><li>3. NOTES SCHEDULED IN THE PAST. 92.6% of notes ride the native lane, drained on a 30ms timer with ZERO lookahead while visible (the hidden-tab path already used 0.6s and was strictly more accurate).</li><li>4. clickmon tapped before makeup with a fixed threshold and read 0 clicks through a measured full-scale dropout. Moved to the limiter output — a sensor that lies is worse than no sensor.</li></ul>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=5845&amp;path=1679.4415,859.9931&amp;xdur=0.134\">▶ Play it: Food Court Eternity → Highway Heat Death — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/5436455dae26f84213af90973e61fd192a6ea7c5\">5436455</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"drill in deeply on timing and scheduling. It seems fine but I'm paranoid... isn't it possible we missed something.\" It was. docs/TIMING-AUDIT- 2026-07.md is the full measurement report; three defects came out of it.\n\n• 1. THE SEAM COIN-FLIP (live only, ~1/4 of downbeats). makeWalk regenerates the collapsed section every chord bar with a DIFFERENT seed, and mapEvents binned events by their POST-humanize beat\n\n• 2. THE DRY CROSSFADE.\n\n• 3. NOTES SCHEDULED IN THE PAST. 92.6% of notes ride the native lane, drained on a 30ms timer with ZERO lookahead while visible (the hidden-tab path already used 0.6s and was strictly more accurate).\n\n• 4. clickmon tapped before makeup with a fixed threshold and read 0 clicks through a measured full-scale dropout. Moved to the limiter output — a sensor that lies is worse than no sensor.\n\n▶ Play it: Food Court Eternity → Highway Heat Death — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=vaporwave&seed=5845&path=1679.4415,859.9931&xdur=0.134\n\n5436455 https://github.com/aboard-io/stellate/commit/5436455dae26f84213af90973e61fd192a6ea7c5",
   "date_published": "2026-07-25T19:34:48.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "synthwave",
    "harmony"
   ]
  },
  {
   "id": "b4eeb48869db4e64c72d1fdc62bdb62fdeaa9c1b",
   "url": "https://stellate.app/?genre=sourdough&seed=5664&path=2141.12627,740.16243&xdur=0.193",
   "external_url": "https://github.com/aboard-io/stellate/commit/b4eeb48869db4e64c72d1fdc62bdb62fdeaa9c1b",
   "title": "The alien alphabet: cluster names, and letters that are not quite ours",
   "summary": "CLUSTERS — the 34 galaxy clusters were still labelled with raw medoid genre ids (chromepiston, sourdough) — never renamed.",
   "content_html": "<ul><li><strong>CLUSTERS</strong> — the 34 galaxy clusters were still labelled with raw medoid genre ids (chromepiston, sourdough) — never renamed.</li><li><strong>TRANSLITERATION</strong> — 1-2 letters per genre/cluster name swapped for a visually-adjacent glyph — homoglyphic on purpose, so the word stays scannable where a random rune would just be noise.</li><li>Re-rolled ONCE PER SESSION, not per frame: the star map measures label widths to decide which names it can draw without overlap, so a name that re-rolled between frames would make labels flicker in and out of…</li><li>Both gates that broke were matching drawn text against the plain literal — the same stale-literal class as GX1/F2d. glyphs.js now exports deglyph() and exposes it on window; D2f and GX3 compare de-glyphed.</li></ul>\n<p><a href=\"https://stellate.app/?genre=sourdough&amp;seed=5664&amp;path=2141.12627,740.16243&amp;xdur=0.193\">▶ Play it: Mother Culture Vigil → Camshaft Litany — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/b4eeb48869db4e64c72d1fdc62bdb62fdeaa9c1b\">b4eeb48</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "CLUSTERS — the 34 galaxy clusters were still labelled with raw medoid genre ids (chromepiston, sourdough) — never renamed.\n\nTRANSLITERATION — 1-2 letters per genre/cluster name swapped for a visually-adjacent glyph — homoglyphic on purpose, so the word stays scannable where a random rune would just be noise.\n\n• Re-rolled ONCE PER SESSION, not per frame: the star map measures label widths to decide which names it can draw without overlap, so a name that re-rolled between frames would make labels flicker in and out of…\n\n• Both gates that broke were matching drawn text against the plain literal — the same stale-literal class as GX1/F2d. glyphs.js now exports deglyph() and exposes it on window; D2f and GX3 compare de-glyphed.\n\n▶ Play it: Mother Culture Vigil → Camshaft Litany — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=sourdough&seed=5664&path=2141.12627,740.16243&xdur=0.193\n\nb4eeb48 https://github.com/aboard-io/stellate/commit/b4eeb48869db4e64c72d1fdc62bdb62fdeaa9c1b",
   "date_published": "2026-07-25T16:57:05.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "sourdough",
    "chromepiston",
    "visual"
   ]
  },
  {
   "id": "1f8469eff29e0ceacbdc930d5a5d9c149731ac38",
   "url": "https://stellate.app/?genre=ambient&seed=4567&path=2103.13280,2122.13313,2084.13313&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/1f8469eff29e0ceacbdc930d5a5d9c149731ac38",
   "title": "Demoscene: dissolve the cart swap instead of cutting",
   "summary": "Paul: \"could you fade between demoscene transitions it's very sudden\". A second canvas holds a FROZEN copy of the outgoing cart's last frame, stacked over the live one and faded out by CSS over 1.4s while the incoming cart draws underneath.",
   "content_html": "<p>Paul: &quot;could you fade between demoscene transitions it's very sudden&quot;. A second canvas holds a FROZEN copy of the outgoing cart's last frame, stacked over the live one and faded out by CSS over 1.4s while the incoming cart draws underneath.</p>\n<ul><li>Proven: opacity 1 -&gt; 0.89 -&gt; 0.69 -&gt; 0.48 -&gt; 0.25 -&gt; 0 across 1.4s, monotonic, with the frozen frame carrying real content throughout. demo-layer / bg-cart / explorer gates PASS.</li></ul>\n<p><a href=\"https://stellate.app/?genre=ambient&amp;seed=4567&amp;path=2103.13280,2122.13313,2084.13313&amp;xdur=13.122\">▶ Play it: Stationary Weather — a long-form genre — put the phone in your pocket and it keeps playing</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/1f8469eff29e0ceacbdc930d5a5d9c149731ac38\">1f8469e</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"could you fade between demoscene transitions it's very sudden\". A second canvas holds a FROZEN copy of the outgoing cart's last frame, stacked over the live one and faded out by CSS over 1.4s while the incoming cart draws underneath.\n\n• Proven: opacity 1 -> 0.89 -> 0.69 -> 0.48 -> 0.25 -> 0 across 1.4s, monotonic, with the frozen frame carrying real content throughout. demo-layer / bg-cart / explorer gates PASS.\n\n▶ Play it: Stationary Weather — a long-form genre — put the phone in your pocket and it keeps playing https://stellate.app/?genre=ambient&seed=4567&path=2103.13280,2122.13313,2084.13313&xdur=13.122\n\n1f8469e https://github.com/aboard-io/stellate/commit/1f8469eff29e0ceacbdc930d5a5d9c149731ac38",
   "date_published": "2026-07-25T16:44:50.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ambient",
    "mobile"
   ]
  },
  {
   "id": "3a59feeef08cc1029bd40a71e92ea3302b4423ac",
   "url": "https://stellate.app/?genre=jungle&seed=2494&path=1718.20504,1737.20537,1699.20537&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/3a59feeef08cc1029bd40a71e92ea3302b4423ac",
   "title": "Kill the master wobble (it lurched) + un-darken the demoscene",
   "summary": "THE LURCH — the tape wow/flutter I added yesterday is a MODULATED DELAY — master-bus state — and fx_bus is instantiated fresh at every stream open() (stream-renderer 379/442).",
   "content_html": "<ul><li><strong>THE LURCH</strong> — the tape wow/flutter I added yesterday is a MODULATED DELAY — master-bus state — and fx_bus is instantiated fresh at every stream open() (stream-renderer 379/442).</li><li>Diagnosis note: the SCORE was innocent — blend drum grids are byte-identical across the batch for 4/5 test blends, the fifth differing only by the 3 spill events the perc fix correctly removed.</li><li><strong>THE DARK BACKGROUND</strong> — yesterday's TV pass stacked four reductions on the same layer (brightness .8-&gt;.55, deepened veil, new vignette, 4px blur) against an opacity of .45</li></ul>\n<p><em>Verified:</em> segment-parity 10/10 byte-equal, engine, blend-arrival all PASS.</p>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=2494&amp;path=1718.20504,1737.20537,1699.20537&amp;xdur=13.122\">▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/3a59feeef08cc1029bd40a71e92ea3302b4423ac\">3a59fee</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "THE LURCH — the tape wow/flutter I added yesterday is a MODULATED DELAY — master-bus state — and fx_bus is instantiated fresh at every stream open() (stream-renderer 379/442).\n\n• Diagnosis note: the SCORE was innocent — blend drum grids are byte-identical across the batch for 4/5 test blends, the fifth differing only by the 3 spill events the perc fix correctly removed.\n\nTHE DARK BACKGROUND — yesterday's TV pass stacked four reductions on the same layer (brightness .8->.55, deepened veil, new vignette, 4px blur) against an opacity of .45\n\nVerified: segment-parity 10/10 byte-equal, engine, blend-arrival all PASS.\n\n▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide https://stellate.app/?genre=jungle&seed=2494&path=1718.20504,1737.20537,1699.20537&xdur=13.122\n\n3a59fee https://github.com/aboard-io/stellate/commit/3a59feeef08cc1029bd40a71e92ea3302b4423ac",
   "date_published": "2026-07-25T16:37:40.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "drums"
   ]
  },
  {
   "id": "7f02f14a6427ed0b05380a7fbdea15ab3162ddba",
   "url": "https://stellate.app/?genre=citypop&seed=6274&path=1530.6221,586.10667,1376.19565&xdur=0.056",
   "external_url": "https://github.com/aboard-io/stellate/commit/7f02f14a6427ed0b05380a7fbdea15ab3162ddba",
   "title": "HOSTING: the types{} rule for feed/manifest content types",
   "summary": "nginx maps .xml to text/xml already, so default_type is ignored for the feeds; an empty types{} block must clear the map first. The manifest was serving as application/octet-stream, which browsers may refuse to install from.",
   "content_html": "<p>nginx maps .xml to text/xml already, so default_type is ignored for the feeds; an empty types{} block must clear the map first. The manifest was serving as application/octet-stream, which browsers may refuse to install from.</p>\n<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=6274&amp;path=1530.6221,586.10667,1376.19565&amp;xdur=0.056\">▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/7f02f14a6427ed0b05380a7fbdea15ab3162ddba\">7f02f14</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "nginx maps .xml to text/xml already, so default_type is ignored for the feeds; an empty types{} block must clear the map first. The manifest was serving as application/octet-stream, which browsers may refuse to install from.\n\n▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix https://stellate.app/?genre=citypop&seed=6274&path=1530.6221,586.10667,1376.19565&xdur=0.056\n\n7f02f14 https://github.com/aboard-io/stellate/commit/7f02f14a6427ed0b05380a7fbdea15ab3162ddba",
   "date_published": "2026-07-25T16:16:05.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "downtempo",
    "dnb"
   ]
  },
  {
   "id": "63bdd25e5909971fa2437968adaabb770cec477a",
   "url": "https://stellate.app/?genre=jungle&seed=6542&path=1718.20504,1737.20537,1699.20537&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/63bdd25e5909971fa2437968adaabb770cec477a",
   "title": "Embed: a way back to the instrument",
   "summary": "In an embed the wordmark was plain text and the only outbound links were the credit's — a listener could reach Paul and Aboard but not the thing making the sound.",
   "content_html": "<p>In an embed the wordmark was plain text and the only outbound links were the credit's — a listener could reach Paul and Aboard but not the thing making the sound.</p>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=6542&amp;path=1718.20504,1737.20537,1699.20537&amp;xdur=13.122\">▶ Play it: Barometric Stampede — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/63bdd25e5909971fa2437968adaabb770cec477a\">63bdd25</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "In an embed the wordmark was plain text and the only outbound links were the credit's — a listener could reach Paul and Aboard but not the thing making the sound.\n\n▶ Play it: Barometric Stampede — parked on the genre this change names https://stellate.app/?genre=jungle&seed=6542&path=1718.20504,1737.20537,1699.20537&xdur=13.122\n\n63bdd25 https://github.com/aboard-io/stellate/commit/63bdd25e5909971fa2437968adaabb770cec477a",
   "date_published": "2026-07-25T16:11:14.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "embed"
   ]
  },
  {
   "id": "05f2f2be40075846d3c4d7c84d4dce04ca36e997",
   "url": "https://stellate.app/?genre=ambient&seed=7934&path=2103.13280,2122.13313,2084.13313&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/05f2f2be40075846d3c4d7c84d4dce04ca36e997",
   "title": "verify.sh: count the background jobs instead of hardcoding the tally",
   "summary": "Adding the social-meta gate made eight jobs where the loop said seven: it exited a job early, the EXIT trap wiped $TMP under the still-running matproof, and its half-written .res read as a spurious coordscover FAIL.",
   "content_html": "<p>Adding the social-meta gate made eight jobs where the loop said seven: it exited a job early, the EXIT trap wiped $TMP under the still-running matproof, and its half-written .res read as a spurious coordscover FAIL.</p>\n<p><a href=\"https://stellate.app/?genre=ambient&amp;seed=7934&amp;path=2103.13280,2122.13313,2084.13313&amp;xdur=13.122\">▶ Play it: Stationary Weather — a long-form genre — put the phone in your pocket and it keeps playing</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/05f2f2be40075846d3c4d7c84d4dce04ca36e997\">05f2f2b</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Adding the social-meta gate made eight jobs where the loop said seven: it exited a job early, the EXIT trap wiped $TMP under the still-running matproof, and its half-written .res read as a spurious coordscover FAIL.\n\n▶ Play it: Stationary Weather — a long-form genre — put the phone in your pocket and it keeps playing https://stellate.app/?genre=ambient&seed=7934&path=2103.13280,2122.13313,2084.13313&xdur=13.122\n\n05f2f2b https://github.com/aboard-io/stellate/commit/05f2f2be40075846d3c4d7c84d4dce04ca36e997",
   "date_published": "2026-07-25T16:02:31.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ambient",
    "mobile"
   ]
  },
  {
   "id": "c9bb15b96eef0850f65f10bbef30a6565ee88ae5",
   "url": "https://stellate.app/?genre=vaporwave&seed=5209&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/c9bb15b96eef0850f65f10bbef30a6565ee88ae5",
   "title": "The open-web pass: social cards, an embeddable player, a playable release feed, and the tape master",
   "summary": "SOCIAL — full Open Graph + Twitter card (@aboard) + JSON-LD naming Paul Ford as author and Aboard (aboard.com) as publisher",
   "content_html": "<ul><li><strong>SOCIAL</strong> — full Open Graph + Twitter card (@aboard) + JSON-LD naming Paul Ford as author and Aboard (aboard.com) as publisher</li><li><strong>EMBEDDABLE</strong> — embed.html — same engine, same modules, an EMBED MODE class that drops what makes no sense in a 400px box</li><li><strong>THE FEED</strong> — git log -&gt; RSS 2.0 + JSON Feed release notes, where EVERY entry links to a mix that plays what changed</li><li><strong>WEB CITIZEN</strong> — PWA manifest + install icons, robots.txt welcoming crawlers (AI ones named explicitly) and pointing at the GitHub repo, sitemap with 22 deep playable URLs, RFC 9116 security.txt, colophon.html telling the real…</li></ul>\n<p><em>Verified:</em> verify.sh green (now incl. social-meta), meter byte-identity green, segment parity 10/10 byte-equal (press == live restored), live/blend/wavout/ access/boot/full-boot/embed-audio/feed-links…</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=5209&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/c9bb15b96eef0850f65f10bbef30a6565ee88ae5\">c9bb15b</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "SOCIAL — full Open Graph + Twitter card (@aboard) + JSON-LD naming Paul Ford as author and Aboard (aboard.com) as publisher\n\nEMBEDDABLE — embed.html — same engine, same modules, an EMBED MODE class that drops what makes no sense in a 400px box\n\nTHE FEED — git log -> RSS 2.0 + JSON Feed release notes, where EVERY entry links to a mix that plays what changed\n\nWEB CITIZEN — PWA manifest + install icons, robots.txt welcoming crawlers (AI ones named explicitly) and pointing at the GitHub repo, sitemap with 22 deep playable URLs, RFC 9116 security.txt, colophon.html telling the real…\n\nVerified: verify.sh green (now incl. social-meta), meter byte-identity green, segment parity 10/10 byte-equal (press == live restored), live/blend/wavout/ access/boot/full-boot/embed-audio/feed-links…\n\n▶ Play it: Food Court Eternity — parked on the genre this change names https://stellate.app/?genre=vaporwave&seed=5209&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\nc9bb15b https://github.com/aboard-io/stellate/commit/c9bb15b96eef0850f65f10bbef30a6565ee88ae5",
   "date_published": "2026-07-25T16:00:44.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "accessibility"
   ]
  },
  {
   "id": "59f18c726ef93451a9ca3df97059360e48723587",
   "url": "https://stellate.app/?genre=jazz&seed=9354&path=292.16891,196.11743,749.12558&xdur=0.143",
   "external_url": "https://github.com/aboard-io/stellate/commit/59f18c726ef93451a9ca3df97059360e48723587",
   "title": "The voice layer: 25 Naropa readings + a 360-clip synthesized voice bank",
   "summary": "NAROPA — Corso across 1975/77/81, Orlovsky's \"Poetry for Dumb Students\", di Prima solo '87 + the '94 trio, Kyger '89/'93, a Waldman chant-poem, Snyder reading AND teaching the Book of Songs, Whalen in both registers…",
   "content_html": "<ul><li><strong>NAROPA</strong> — Corso across 1975/77/81, Orlovsky's &quot;Poetry for Dumb Students&quot;, di Prima solo '87 + the '94 trio, Kyger '89/'93, a Waldman chant-poem, Snyder reading AND teaching the Book of Songs, Whalen in both registers…</li><li><strong>VOICE BANK</strong> — 360 deterministic espeak-ng clips over 12 genre-family phrase banks — 14 voices, 100-212 wpm, pitch/pace/tone derived by hash so a rebuild is byte-stable.</li><li><strong>THE CLIP GATE</strong> — every generated clip must pass duration, RMS, and pure-tone-dominance FFT checks before it can enter a pool. 360/360 passed, zero flagged, zero dropped.</li><li>12 vb_* one-shot pools wired matrix-safely into 81 existing hits blocks across the wings. Matrix 274/274, validate PASS, engine smoke PASS, four wing probes render non-silent (transitwave -18.2, spokenword…</li></ul>\n<p><a href=\"https://stellate.app/?genre=jazz&amp;seed=9354&amp;path=292.16891,196.11743,749.12558&amp;xdur=0.143\">▶ Play it: Smoke Arithmetic → Dial Tone Prophet → Rail Replacement Rapture — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/59f18c726ef93451a9ca3df97059360e48723587\">59f18c7</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "NAROPA — Corso across 1975/77/81, Orlovsky's \"Poetry for Dumb Students\", di Prima solo '87 + the '94 trio, Kyger '89/'93, a Waldman chant-poem, Snyder reading AND teaching the Book of Songs, Whalen in both registers…\n\nVOICE BANK — 360 deterministic espeak-ng clips over 12 genre-family phrase banks — 14 voices, 100-212 wpm, pitch/pace/tone derived by hash so a rebuild is byte-stable.\n\nTHE CLIP GATE — every generated clip must pass duration, RMS, and pure-tone-dominance FFT checks before it can enter a pool. 360/360 passed, zero flagged, zero dropped.\n\n• 12 vb_* one-shot pools wired matrix-safely into 81 existing hits blocks across the wings. Matrix 274/274, validate PASS, engine smoke PASS, four wing probes render non-silent (transitwave -18.2, spokenword…\n\n▶ Play it: Smoke Arithmetic → Dial Tone Prophet → Rail Replacement Rapture — the three genres this change names, as one path https://stellate.app/?genre=jazz&seed=9354&path=292.16891,196.11743,749.12558&xdur=0.143\n\n59f18c7 https://github.com/aboard-io/stellate/commit/59f18c726ef93451a9ca3df97059360e48723587",
   "date_published": "2026-07-25T14:07:44.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jazz",
    "spokenword",
    "transitwave",
    "voice"
   ]
  },
  {
   "id": "fc5183f54c9d0d030404bdf161a4e291a4761db3",
   "url": "https://stellate.app/?genre=vaporwave&seed=6629&path=1679.4415,1036.22151,1681.19828&xdur=0.042",
   "external_url": "https://github.com/aboard-io/stellate/commit/fc5183f54c9d0d030404bdf161a4e291a4761db3",
   "title": "The overnight batch: rename wave, glyphs return, the air shelf, leak fixes, byte-identical speedups, Pure FM audible, atonality pullback, playhead truth, spacebar, cookie-free analytics",
   "summary": "RENAME WAVE — 252/274 display names rewritten to the cosmic-weirdness brief (eldritch/ridiculous/scientific) — Food Court Eternity, Rail Replacement Rapture, Ottoman Heat Death, Crossroads Paperwork, Abort Retry Fail",
   "content_html": "<ul><li><strong>RENAME WAVE</strong> — 252/274 display names rewritten to the cosmic-weirdness brief (eldritch/ridiculous/scientific) — Food Court Eternity, Rail Replacement Rapture, Ottoman Heat Death, Crossroads Paperwork, Abort Retry Fail</li><li><strong>GLYPHS</strong> — the video-era alien station idents (box-drawing/braille/rune/I-Ching clusters incl. E-R-R) rebuilt flicker-free as app/glyphs.js</li><li><strong>SOUND</strong> — master AIR SHELF -3dB@8k+ (measured -2.7/-2.8 on real presses, mids 0.00 — the headphone ask); APPLIED_DOM_FLOOR halved (mild genres -42% uninvited secondary dominants, jazz keeps ~90%</li><li><strong>ENGINE</strong> — retired ring gens now eng.close() at every exit + guarded module-global clears (13-25MB/crossfade recovered); liveBars/ST.bars slots nulled + sweeps pruned (15-40MB/h on long sessions)</li></ul>\n<p><em>Verified:</em> wall: verify.sh, meter (head gate green), theory-tables, segment-parity, live, blend-arrival, wavout, access 12/12, boot-smoke 13/13, full-boot, bg-cart, demo-layer all PASS</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=6629&amp;path=1679.4415,1036.22151,1681.19828&amp;xdur=0.042\">▶ Play it: Food Court Eternity → Crossroads Paperwork → Abort Retry Fail — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/fc5183f54c9d0d030404bdf161a4e291a4761db3\">fc5183f</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "RENAME WAVE — 252/274 display names rewritten to the cosmic-weirdness brief (eldritch/ridiculous/scientific) — Food Court Eternity, Rail Replacement Rapture, Ottoman Heat Death, Crossroads Paperwork, Abort Retry Fail\n\nGLYPHS — the video-era alien station idents (box-drawing/braille/rune/I-Ching clusters incl. E-R-R) rebuilt flicker-free as app/glyphs.js\n\nSOUND — master AIR SHELF -3dB@8k+ (measured -2.7/-2.8 on real presses, mids 0.00 — the headphone ask); APPLIED_DOM_FLOOR halved (mild genres -42% uninvited secondary dominants, jazz keeps ~90%\n\nENGINE — retired ring gens now eng.close() at every exit + guarded module-global clears (13-25MB/crossfade recovered); liveBars/ST.bars slots nulled + sweeps pruned (15-40MB/h on long sessions)\n\nVerified: wall: verify.sh, meter (head gate green), theory-tables, segment-parity, live, blend-arrival, wavout, access 12/12, boot-smoke 13/13, full-boot, bg-cart, demo-layer all PASS\n\n▶ Play it: Food Court Eternity → Crossroads Paperwork → Abort Retry Fail — the three genres this change names, as one path https://stellate.app/?genre=vaporwave&seed=6629&path=1679.4415,1036.22151,1681.19828&xdur=0.042\n\nfc5183f https://github.com/aboard-io/stellate/commit/fc5183f54c9d0d030404bdf161a4e291a4761db3",
   "date_published": "2026-07-25T07:03:04.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "blues",
    "floppycore",
    "accessibility"
   ]
  },
  {
   "id": "c3bf3d0e9398c6fc62f5d18da327277d3de112c8",
   "url": "https://stellate.app/access.html?genre=ambient&seed=9126",
   "external_url": "https://github.com/aboard-io/stellate/commit/c3bf3d0e9398c6fc62f5d18da327277d3de112c8",
   "title": "The quiet TV: always-on demoscene, seizure-safe, 10x slower + the static fix + blind-user fixes + the engine audit",
   "summary": "Visualizer (Paul's four asks): the ▢/▦ chip is gone — the demoscene is ambient wallpaper (?bg=off escapes); GRADE darkened + blued into a cold CRT (brightness .55, sepia->hue-rotate 175deg) with a new tube vignette over the scan/hum stack",
   "content_html": "<p>Visualizer (Paul's four asks): the ▢/▦ chip is gone — the demoscene is ambient wallpaper (?bg=off escapes); GRADE darkened + blued into a cold CRT (brightness .55, sepia-&gt;hue-rotate 175deg) with a new tube vignette over the scan/hum stack</p>\n<ul><li>Post-planet static: reproduced headlessly (ring underrun quanta 609-4933 after a cruise, 0 in control), mechanism = main-thread stalls breaching the 3s ring runway (entry shader compile, per-frame sky uploads…</li><li>Blind-user pass: &quot;playing&quot; narration (the log no longer sticks on &quot;loading engine…&quot;), journey ARRIVAL announcements (&quot;Now crossing into Porchlight Overdrive.&quot;</li><li>Engine audit: docs/ENGINE-AUDIT-2026-07.md — 37 adversarially-verified findings tiered for fixing (ring leaks, snare-law 40% build cost, dead strum pipe, PERC meter latency, per-sample strip = 87% of sampler…</li></ul>\n<p><a href=\"https://stellate.app/access.html?genre=ambient&amp;seed=9126\">▶ Play it: Stationary Weather — the accessible text version, where the same music arrives as prose</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/c3bf3d0e9398c6fc62f5d18da327277d3de112c8\">c3bf3d0</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Visualizer (Paul's four asks): the ▢/▦ chip is gone — the demoscene is ambient wallpaper (?bg=off escapes); GRADE darkened + blued into a cold CRT (brightness .55, sepia->hue-rotate 175deg) with a new tube vignette over the scan/hum stack\n\n• Post-planet static: reproduced headlessly (ring underrun quanta 609-4933 after a cruise, 0 in control), mechanism = main-thread stalls breaching the 3s ring runway (entry shader compile, per-frame sky uploads…\n\n• Blind-user pass: \"playing\" narration (the log no longer sticks on \"loading engine…\"), journey ARRIVAL announcements (\"Now crossing into Porchlight Overdrive.\"\n\n• Engine audit: docs/ENGINE-AUDIT-2026-07.md — 37 adversarially-verified findings tiered for fixing (ring leaks, snare-law 40% build cost, dead strum pipe, PERC meter latency, per-sample strip = 87% of sampler…\n\n▶ Play it: Stationary Weather — the accessible text version, where the same music arrives as prose https://stellate.app/access.html?genre=ambient&seed=9126\n\nc3bf3d0 https://github.com/aboard-io/stellate/commit/c3bf3d0e9398c6fc62f5d18da327277d3de112c8",
   "date_published": "2026-07-25T05:38:27.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ambient",
    "accessibility"
   ]
  },
  {
   "id": "3dce7b98c00a48d5f1a7d024981dcb61c9595f10",
   "url": "https://stellate.app/access.html?genre=ambient&seed=8232",
   "external_url": "https://github.com/aboard-io/stellate/commit/3dce7b98c00a48d5f1a7d024981dcb61c9595f10",
   "title": "The beep audit + ⓘ visibility + galaxy zoom + the download/video excision",
   "summary": "Beeps ALL OVER the map (Paul): FFT'd every pool one-shot. bbc_electro_gong = 95% one 1163Hz sine (added to the chime pool this very morning) — benched; vox_b/vox_c/vox_e carry constant carrier tones (2.97k/1.6k) — benched; vx_apollo bed benched from the general voices pool (identity uses stay).",
   "content_html": "<p>Beeps ALL OVER the map (Paul): FFT'd every pool one-shot. bbc_electro_gong = 95% one 1163Hz sine (added to the chime pool this very morning) — benched; vox_b/vox_c/vox_e carry constant carrier tones (2.97k/1.6k) — benched; vx_apollo bed benched from the general voices pool (identity uses stay).</p>\n<ul><li>ⓘ visibility wave: rubato joins the feel radar, an always-on meter badge (the 8-cell fold erased the waltz), harmony provenance (reharm + which tables) in the mind line.</li><li>Download + laserdisc-video paths EXCISED (everything preserved on branch legacy-download-video): export/journey/video-layer + tools + docs + the J/H gate rewrite; background chip is now off &lt;-&gt; demoscene.</li></ul>\n<p><a href=\"https://stellate.app/access.html?genre=ambient&amp;seed=8232\">▶ Play it: Stationary Weather — the accessible text version, where the same music arrives as prose</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/3dce7b98c00a48d5f1a7d024981dcb61c9595f10\">3dce7b9</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Beeps ALL OVER the map (Paul): FFT'd every pool one-shot. bbc_electro_gong = 95% one 1163Hz sine (added to the chime pool this very morning) — benched; vox_b/vox_c/vox_e carry constant carrier tones (2.97k/1.6k) — benched; vx_apollo bed benched from the general voices pool (identity uses stay).\n\n• ⓘ visibility wave: rubato joins the feel radar, an always-on meter badge (the 8-cell fold erased the waltz), harmony provenance (reharm + which tables) in the mind line.\n\n• Download + laserdisc-video paths EXCISED (everything preserved on branch legacy-download-video): export/journey/video-layer + tools + docs + the J/H gate rewrite; background chip is now off <-> demoscene.\n\n▶ Play it: Stationary Weather — the accessible text version, where the same music arrives as prose https://stellate.app/access.html?genre=ambient&seed=8232\n\n3dce7b9 https://github.com/aboard-io/stellate/commit/3dce7b98c00a48d5f1a7d024981dcb61c9595f10",
   "date_published": "2026-07-25T04:32:45.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ambient",
    "accessibility"
   ]
  },
  {
   "id": "1cef5c78603c2ac58c923f5368ce7c9128868f9c",
   "url": "https://stellate.app/?genre=spokenword&seed=7824&path=196.11721,215.11754,177.11754&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/1cef5c78603c2ac58c923f5368ce7c9128868f9c",
   "title": "BBC Sound Effects crate + the public-release sweep",
   "summary": "The crate: 36 RemArc beds + 4 chimes curated across the ten pool classes (fetch-found-bbc.sh — sequential, courteous, idempotent; local urls only, the BBC CDN sends no CORP), wired 4-per-class into SOURCE_POOLS + the chime pool, ledgered tier-2-strict in SOURCES.md.",
   "content_html": "<p>The crate: 36 RemArc beds + 4 chimes curated across the ten pool classes (fetch-found-bbc.sh — sequential, courteous, idempotent; local urls only, the BBC CDN sends no CORP), wired 4-per-class into SOURCE_POOLS + the chime pool, ledgered tier-2-strict in SOURCES.md.</p>\n<ul><li>The sweep (39 verified review findings): NODE_PATH=/home/ford/... gone from all 46 files (gates run plain after npm install &amp;&amp; npm run setup:browser); relative requires in lesson/genome-diff</li></ul>\n<p><a href=\"https://stellate.app/?genre=spokenword&amp;seed=7824&amp;path=196.11721,215.11754,177.11754&amp;xdur=13.122\">▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/1cef5c78603c2ac58c923f5368ce7c9128868f9c\">1cef5c7</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The crate: 36 RemArc beds + 4 chimes curated across the ten pool classes (fetch-found-bbc.sh — sequential, courteous, idempotent; local urls only, the BBC CDN sends no CORP), wired 4-per-class into SOURCE_POOLS + the chime pool, ledgered tier-2-strict in SOURCES.md.\n\n• The sweep (39 verified review findings): NODE_PATH=/home/ford/... gone from all 46 files (gates run plain after npm install && npm run setup:browser); relative requires in lesson/genome-diff\n\n▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices https://stellate.app/?genre=spokenword&seed=7824&path=196.11721,215.11754,177.11754&xdur=13.122\n\n1cef5c7 https://github.com/aboard-io/stellate/commit/1cef5c78603c2ac58c923f5368ce7c9128868f9c",
   "date_published": "2026-07-25T03:13:27.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "spokenword",
    "voice"
   ]
  },
  {
   "id": "07239ceeb7c6c2923f1411b8d73d723f2425471b",
   "url": "https://stellate.app/?genre=bigband&seed=3446&path=814.14134,833.14167,795.14167&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/07239ceeb7c6c2923f1411b8d73d723f2425471b",
   "title": "Soundfont full coverage: the comparator, the family fixes, the register fold, 8 silent ROM patches remapped",
   "summary": "Paul: sf=minimoog at a specific mix \"drops out the bass and guitar; other dropouts across the soundfonts — make sure we have full coverage using the power of comparing data structures.\"",
   "content_html": "<p>Paul: sf=minimoog at a specific mix &quot;drops out the bass and guitar; other dropouts across the soundfonts — make sure we have full coverage using the power of comparing data structures.&quot;</p>\n<ul><li>tools/font-coverage.js (+ test/font-coverage.test.js gate) IS that comparator: A. instrFamily over all 108 SAMPLERS ids vs a rule table B. both synth fonts resolve every id to a complete voice</li><li>instrFamily: &quot;nylon_STRING_guitar&quot; matched the string rule before pluck ever ran (guitars -&gt; slow juno pad voice), /bass/ ate &quot;bassoon&quot;, /reed/ ate &quot;reed_organ&quot;, bright_yamaha_grand fell to generic lead.</li><li>minimoog voicing, audit-measured at Paul's URL (live per-voice audit, headless): juno60's pad swell on a MELODY role never opened before short notes ended (lead rms .004 vs fluidr3 .021</li><li>state-engine mapEvents HARD-CLAMPED note freq to the module's freqMax — every note above the compiled range played AT the ceiling (the dx7 freq slider tops at 1000Hz = MIDI ~83, a register where FM operator…</li></ul>\n<p><em>Verified:</em> font-coverage structural audit clean, matrix 274/274, verify.sh PASS, engine/theory/pipes ALL PASS, wavout live gate PASS.</p>\n<p><a href=\"https://stellate.app/?genre=bigband&amp;seed=3446&amp;path=814.14134,833.14167,795.14167&amp;xdur=13.122\">▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/07239ceeb7c6c2923f1411b8d73d723f2425471b\">07239ce</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: sf=minimoog at a specific mix \"drops out the bass and guitar; other dropouts across the soundfonts — make sure we have full coverage using the power of comparing data structures.\"\n\n• tools/font-coverage.js (+ test/font-coverage.test.js gate) IS that comparator: A. instrFamily over all 108 SAMPLERS ids vs a rule table B. both synth fonts resolve every id to a complete voice\n\n• instrFamily: \"nylon_STRING_guitar\" matched the string rule before pluck ever ran (guitars -> slow juno pad voice), /bass/ ate \"bassoon\", /reed/ ate \"reed_organ\", bright_yamaha_grand fell to generic lead.\n\n• minimoog voicing, audit-measured at Paul's URL (live per-voice audit, headless): juno60's pad swell on a MELODY role never opened before short notes ended (lead rms .004 vs fluidr3 .021\n\n• state-engine mapEvents HARD-CLAMPED note freq to the module's freqMax — every note above the compiled range played AT the ceiling (the dx7 freq slider tops at 1000Hz = MIDI ~83, a register where FM operator…\n\nVerified: font-coverage structural audit clean, matrix 274/274, verify.sh PASS, engine/theory/pipes ALL PASS, wavout live gate PASS.\n\n▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments https://stellate.app/?genre=bigband&seed=3446&path=814.14134,833.14167,795.14167&xdur=13.122\n\n07239ce https://github.com/aboard-io/stellate/commit/07239ceeb7c6c2923f1411b8d73d723f2425471b",
   "date_published": "2026-07-16T13:58:28.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bigband",
    "sampler"
   ]
  },
  {
   "id": "dbd30216c017cc70abb1e341345d93fc0cb6f997",
   "url": "https://stellate.app/?genre=spokenword&seed=1934&path=196.11721,215.11754,177.11754&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/dbd30216c017cc70abb1e341345d93fc0cb6f997",
   "title": "Speed slider: a log duration MULTIPLE over the path's own distance-derived time",
   "summary": "Paul: \"change the duration slider to a logarithmic duration multiple between faster and slower, 100x speed to a million times longer; as nodes are added and expand, measure the full distance and come up with a reasonable default duration; put that duration up as a tooltip when people move nodes",
   "content_html": "<p>Paul: &quot;change the duration slider to a logarithmic duration multiple between faster and slower, 100x speed to a million times longer; as nodes are added and expand, measure the full distance and come up with a reasonable default duration; put that duration up as a tooltip when people move nodes</p>\n<ul><li>share.js: the path's own length sets the BASE time — BASE_SPW = 1.2s per world-unit, tuned so the seeded default triangle (~1500wu) keeps its historical ~30 minutes at x1</li><li>panels.js: the slider is 8 log decades, x1 detent at center; readout &quot;x12 · 6.4 hr&quot;; label tooltip states the path's own time at x1.</li><li>starmap.js: dragging a waypoint floats a live tooltip — &quot;loop ≈ 32 min&quot; (recomputed as the drag stretches the perimeter), plus &quot;x100 -&gt; 2.2 days&quot; when the dial is off x1.</li><li>access.js: the a11y twin dials the same multiple with a spoken aria-valuetext (multiple, effective time, and the path's own time).</li></ul>\n<p><em>Verified:</em> share-url-run 13/13, access-ui-run 12/12, full-boot green. explorer-ui-test's H section (background alternation) fails IDENTICALLY at the pre-session baseline 081a256</p>\n<p><a href=\"https://stellate.app/?genre=spokenword&amp;seed=1934&amp;path=196.11721,215.11754,177.11754&amp;xdur=13.122\">▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/dbd30216c017cc70abb1e341345d93fc0cb6f997\">dbd3021</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"change the duration slider to a logarithmic duration multiple between faster and slower, 100x speed to a million times longer; as nodes are added and expand, measure the full distance and come up with a reasonable default duration; put that duration up as a tooltip when people move nodes\n\n• share.js: the path's own length sets the BASE time — BASE_SPW = 1.2s per world-unit, tuned so the seeded default triangle (~1500wu) keeps its historical ~30 minutes at x1\n\n• panels.js: the slider is 8 log decades, x1 detent at center; readout \"x12 · 6.4 hr\"; label tooltip states the path's own time at x1.\n\n• starmap.js: dragging a waypoint floats a live tooltip — \"loop ≈ 32 min\" (recomputed as the drag stretches the perimeter), plus \"x100 -> 2.2 days\" when the dial is off x1.\n\n• access.js: the a11y twin dials the same multiple with a spoken aria-valuetext (multiple, effective time, and the path's own time).\n\nVerified: share-url-run 13/13, access-ui-run 12/12, full-boot green. explorer-ui-test's H section (background alternation) fails IDENTICALLY at the pre-session baseline 081a256\n\n▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices https://stellate.app/?genre=spokenword&seed=1934&path=196.11721,215.11754,177.11754&xdur=13.122\n\ndbd3021 https://github.com/aboard-io/stellate/commit/dbd30216c017cc70abb1e341345d93fc0cb6f997",
   "date_published": "2026-07-16T02:02:06.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "spokenword",
    "voice"
   ]
  },
  {
   "id": "51bcdc71b0d608d14f47d531808bfe76f9bac2b6",
   "url": "https://stellate.app/?genre=transitwave&seed=2697&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/51bcdc71b0d608d14f47d531808bfe76f9bac2b6",
   "title": "MIDI trove off the deploy path: rips to the external drive, deploy exclusion, incident recorded",
   "summary": "The 2026-07-15 deploy rsynced found/midi/ (154MB of MIDIMAN rips) to the public web root — violating SOURCES.md's \"never redistributed\" commitment. Caught by the deploy invariant check on the next ship (its name-join also chokes on the rips' space-laden filenames — moot now).",
   "content_html": "<p>The 2026-07-15 deploy rsynced found/midi/ (154MB of MIDIMAN rips) to the public web root — violating SOURCES.md's &quot;never redistributed&quot; commitment. Caught by the deploy invariant check on the next ship (its name-join also chokes on the rips' space-laden filenames — moot now).</p>\n<ul><li>rips relocated to /mnt/sources/relocated/stellate-midi-corpus/rips/; fetch-midi-trove.sh defaults there (arg overrides), CLAUDE.md/SOURCES.md/ midi-mine.test paths updated; SOURCES.md records the incident</li><li>deploy-stellate.sh: found/midi/ excluded from BOTH the rsync and the manifest find — the belt if a fetch ever lands there again</li><li>the already-deployed copy still needs the manual droplet scrub (rm -rf /srv/stellate/found/midi) — remote deletion left to Paul</li></ul>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=2697&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/51bcdc71b0d608d14f47d531808bfe76f9bac2b6\">51bcdc7</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The 2026-07-15 deploy rsynced found/midi/ (154MB of MIDIMAN rips) to the public web root — violating SOURCES.md's \"never redistributed\" commitment. Caught by the deploy invariant check on the next ship (its name-join also chokes on the rips' space-laden filenames — moot now).\n\n• rips relocated to /mnt/sources/relocated/stellate-midi-corpus/rips/; fetch-midi-trove.sh defaults there (arg overrides), CLAUDE.md/SOURCES.md/ midi-mine.test paths updated; SOURCES.md records the incident\n\n• deploy-stellate.sh: found/midi/ excluded from BOTH the rsync and the manifest find — the belt if a fetch ever lands there again\n\n• the already-deployed copy still needs the manual droplet scrub (rm -rf /srv/stellate/found/midi) — remote deletion left to Paul\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=2697&path=749.12536,768.12569,730.12569&xdur=13.122\n\n51bcdc7 https://github.com/aboard-io/stellate/commit/51bcdc71b0d608d14f47d531808bfe76f9bac2b6",
   "date_published": "2026-07-16T01:00:29.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "8db570b45ec3953847b7957036e6549096c7dd93",
   "url": "https://stellate.app/?genre=bebop&seed=3324&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/8db570b45ec3953847b7957036e6549096c7dd93",
   "title": "Fix the sticking wasm sky: planet-keyed carts in the cruise + a mode-2 rotator",
   "summary": "Paul: \"the wasm background is sticking — seems to be the same and not shift on the planets.\" Two holes, one symptom:",
   "content_html": "<p>Paul: &quot;the wasm background is sticking — seems to be the same and not shift on the planets.&quot; Two holes, one symptom:</p>\n<ul><li>The star-cruise forces the demo layer up via bgWant(), but the only cart rotator (bgFlip) gated on bgMode===1 — in the aliens view the same cart wrapped every planet forever.</li><li>Mode 2 (demos-only) had NO rotator at all — same cart forever on the 2D map too (both the bgFlip gate and the 1s clock's caller gate excluded it).</li></ul>\n<p><em>Verified:</em> test/bg-cart-run.js (mode-2 idle rotation via ?bgAltMs, the cruise stand-down guard, zero page errors). demo-layer-test + full-boot-run green.</p>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=3324&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/8db570b45ec3953847b7957036e6549096c7dd93\">8db570b</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"the wasm background is sticking — seems to be the same and not shift on the planets.\" Two holes, one symptom:\n\n• The star-cruise forces the demo layer up via bgWant(), but the only cart rotator (bgFlip) gated on bgMode===1 — in the aliens view the same cart wrapped every planet forever.\n\n• Mode 2 (demos-only) had NO rotator at all — same cart forever on the 2D map too (both the bgFlip gate and the 1s clock's caller gate excluded it).\n\nVerified: test/bg-cart-run.js (mode-2 idle rotation via ?bgAltMs, the cruise stand-down guard, zero page errors). demo-layer-test + full-boot-run green.\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=3324&path=694.13834,713.13867,675.13867&xdur=13.122\n\n8db570b https://github.com/aboard-io/stellate/commit/8db570b45ec3953847b7957036e6549096c7dd93",
   "date_published": "2026-07-16T00:55:29.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "cc5a08494f933072ccac718bdcbd409351850ba7",
   "url": "https://stellate.app/?genre=bossanova&seed=2425&path=575.11711,600.2169,292.16891&xdur=0.051",
   "external_url": "https://github.com/aboard-io/stellate/commit/cc5a08494f933072ccac718bdcbd409351850ba7",
   "title": "Weave v2: approach-tone connectors + guitar/classical wired (bossanova, chamber)",
   "summary": "The v1 ladder walk could not do scale-step motion (corpus stepFrac ~.4-.5, weave ~.07 — chord tones sit thirds apart). v2 spends each family's MINED stepFrac (mine-weave now emits it): a wide leap into the next landing tone fills with passing tones on IOI subdivisions, placed by APPROACH (the last…",
   "content_html": "<p>The v1 ladder walk could not do scale-step motion (corpus stepFrac ~.4-.5, weave ~.07 — chord tones sit thirds apart). v2 spends each family's MINED stepFrac (mine-weave now emits it): a wide leap into the next landing tone fills with passing tones on IOI subdivisions, placed by APPROACH (the last…</p>\n<ul><li>Rendered stepFrac: folk .35 jazz .34 (corpus .48/.44), guitar .24 classical .24 (corpus .39/.45 — their remaining steps live inside fast runs no subdivision can host; the scale-aware walk is the noted v3).</li><li>guitarweave wired into bossanova (the mined nylon idiom on its native nylon-string lead) and classicalweave into chamber (The Greats' line on violin/viola).</li></ul>\n<p><a href=\"https://stellate.app/?genre=bossanova&amp;seed=2425&amp;path=575.11711,600.2169,292.16891&amp;xdur=0.051\">▶ Play it: Saudade Observatory → Rosin Seance → Smoke Arithmetic — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/cc5a08494f933072ccac718bdcbd409351850ba7\">cc5a084</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The v1 ladder walk could not do scale-step motion (corpus stepFrac ~.4-.5, weave ~.07 — chord tones sit thirds apart). v2 spends each family's MINED stepFrac (mine-weave now emits it): a wide leap into the next landing tone fills with passing tones on IOI subdivisions, placed by APPROACH (the last…\n\n• Rendered stepFrac: folk .35 jazz .34 (corpus .48/.44), guitar .24 classical .24 (corpus .39/.45 — their remaining steps live inside fast runs no subdivision can host; the scale-aware walk is the noted v3).\n\n• guitarweave wired into bossanova (the mined nylon idiom on its native nylon-string lead) and classicalweave into chamber (The Greats' line on violin/viola).\n\n▶ Play it: Saudade Observatory → Rosin Seance → Smoke Arithmetic — the three genres this change names, as one path https://stellate.app/?genre=bossanova&seed=2425&path=575.11711,600.2169,292.16891&xdur=0.051\n\ncc5a084 https://github.com/aboard-io/stellate/commit/cc5a08494f933072ccac718bdcbd409351850ba7",
   "date_published": "2026-07-15T04:27:34.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bossanova",
    "chamber",
    "jazz",
    "harmony"
   ]
  },
  {
   "id": "ae1cc2abb1b6a6f9be0e8230bfe94ed894c25183",
   "url": "https://stellate.app/?genre=jazz&seed=9427&path=292.16891,1854.5732&xdur=0.067",
   "external_url": "https://github.com/aboard-io/stellate/commit/ae1cc2abb1b6a6f9be0e8230bfe94ed894c25183",
   "title": "The weave organ: mined generative melody (Markov walk over the voicing ladder + IOI rhythm chain)",
   "summary": "tools/mine-weave.js fits two first-order chains per genre family from the corpus DB melody lines, in the engine's own alphabet: pitch over the 8-slot voicing ladder (leadIndex 0..3 x octave 0..1 — chord-safe by construction), rhythm over quantized IOIs [.25..4] + a mined legato scalar.",
   "content_html": "<p>tools/mine-weave.js fits two first-order chains per genre family from the corpus DB melody lines, in the engine's own alphabet: pitch over the 8-slot voicing ladder (leadIndex 0..3 x octave 0..1 — chord-safe by construction), rhythm over quantized IOIs [.25..4] + a mined legato scalar.</p>\n<ul><li>Four families ship (rip:alias syntax): folkweave, jazzweave (wired into folk/ jazz lead pools), guitarweave, classicalweave (registered, unwired — awaiting a home genre + ears).</li><li>Known limit (stated in the csd-engine comment): the ladder alphabet cannot do scale-step motion (corpus stepFrac ~.5, weave ~.07) — passing-tone connectors are the v2.</li></ul>\n<p><em>Verified:</em> test/melody-weave.test.js (stochastic rows, registration, density, chord-safety on the ladder, determinism, corpus density order). Full suite + matrix 274/274 green.</p>\n<p><a href=\"https://stellate.app/?genre=jazz&amp;seed=9427&amp;path=292.16891,1854.5732&amp;xdur=0.067\">▶ Play it: Smoke Arithmetic → Kettle Eschaton — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/ae1cc2abb1b6a6f9be0e8230bfe94ed894c25183\">ae1cc2a</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "tools/mine-weave.js fits two first-order chains per genre family from the corpus DB melody lines, in the engine's own alphabet: pitch over the 8-slot voicing ladder (leadIndex 0..3 x octave 0..1 — chord-safe by construction), rhythm over quantized IOIs [.25..4] + a mined legato scalar.\n\n• Four families ship (rip:alias syntax): folkweave, jazzweave (wired into folk/ jazz lead pools), guitarweave, classicalweave (registered, unwired — awaiting a home genre + ears).\n\n• Known limit (stated in the csd-engine comment): the ladder alphabet cannot do scale-step motion (corpus stepFrac ~.5, weave ~.07) — passing-tone connectors are the v2.\n\nVerified: test/melody-weave.test.js (stochastic rows, registration, density, chord-safety on the ladder, determinism, corpus density order). Full suite + matrix 274/274 green.\n\n▶ Play it: Smoke Arithmetic → Kettle Eschaton — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=jazz&seed=9427&path=292.16891,1854.5732&xdur=0.067\n\nae1cc2a https://github.com/aboard-io/stellate/commit/ae1cc2abb1b6a6f9be0e8230bfe94ed894c25183",
   "date_published": "2026-07-15T04:15:45.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jazz",
    "folk",
    "harmony"
   ]
  },
  {
   "id": "898bf64e423a2ff55cc3a3322b388752625395f9",
   "url": "https://stellate.app/?genre=ragtime&seed=7150&path=753.14457,292.16891,1036.22151&xdur=0.097",
   "external_url": "https://github.com/aboard-io/stellate/commit/898bf64e423a2ff55cc3a3322b388752625395f9",
   "title": "The MIDI trove: corpus-calibrated fences, mined vocabulary, corpus-fit harmony walk, ragtime (273->274)",
   "summary": "Everything learned from the MIDIMAN Melody Kit (archive.org, ~130k files), distilled into committed capability — the trove itself stays off-repo (found/midi/ labeled rips; 120k bulk + 5GB corpus.db on the external drive).",
   "content_html": "<p>Everything learned from the MIDIMAN Melody Kit (archive.org, ~130k files), distilled into committed capability — the trove itself stays off-repo (found/midi/ labeled rips; 120k bulk + 5GB corpus.db on the external drive).</p>\n<ul><li>tools/fetch-midi-trove.sh / fetch-midi-bulk.sh — the fetch recipes</li><li>tools/mine-midi.js — SMF parser + verifier-formula features + KK key detection (72% vs embedded sigs)</li><li>tools/corpus-db.js — SQLite corpus: 120,652 files / 40M+ notes as integer blobs, extracted melody lines w/ honest mel_conf, 26-dim vectors (full-corpus cosine scan 111ms</li><li>tools/mine-theory.js — FUNC_NEXT/POOL harmony tables from 86,301 deduped files / 4.4M diatonic transitions; --splice REFUSES tables that lose the held-out comparison.</li></ul>\n<p><a href=\"https://stellate.app/?genre=ragtime&amp;seed=7150&amp;path=753.14457,292.16891,1036.22151&amp;xdur=0.097\">▶ Play it: Perforated Afterlife → Smoke Arithmetic → Crossroads Paperwork — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/898bf64e423a2ff55cc3a3322b388752625395f9\">898bf64</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Everything learned from the MIDIMAN Melody Kit (archive.org, ~130k files), distilled into committed capability — the trove itself stays off-repo (found/midi/ labeled rips; 120k bulk + 5GB corpus.db on the external drive).\n\n• tools/fetch-midi-trove.sh / fetch-midi-bulk.sh — the fetch recipes\n\n• tools/mine-midi.js — SMF parser + verifier-formula features + KK key detection (72% vs embedded sigs)\n\n• tools/corpus-db.js — SQLite corpus: 120,652 files / 40M+ notes as integer blobs, extracted melody lines w/ honest mel_conf, 26-dim vectors (full-corpus cosine scan 111ms\n\n• tools/mine-theory.js — FUNC_NEXT/POOL harmony tables from 86,301 deduped files / 4.4M diatonic transitions; --splice REFUSES tables that lose the held-out comparison.\n\n▶ Play it: Perforated Afterlife → Smoke Arithmetic → Crossroads Paperwork — the three genres this change names, as one path https://stellate.app/?genre=ragtime&seed=7150&path=753.14457,292.16891,1036.22151&xdur=0.097\n\n898bf64 https://github.com/aboard-io/stellate/commit/898bf64e423a2ff55cc3a3322b388752625395f9",
   "date_published": "2026-07-15T03:34:17.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ragtime",
    "jazz",
    "blues",
    "explainer"
   ]
  },
  {
   "id": "072ea1a1ce016b613278585d9541b9975fa9be25",
   "url": "https://stellate.app/?genre=bigband&seed=5545&path=814.14134,833.14167,795.14167&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/072ea1a1ce016b613278585d9541b9975fa9be25",
   "title": "Demoscene sky, 3 views, two-drum desynced drummer, top-right HUD, repo tidy",
   "summary": "DEMOSCENE ATMOSPHERE — the planet's sky dome now projects the WASM demoscene (DemoLayer canvas — generative, same-origin) instead of the found-video, with a local-video fallback when no demo is running (Paul: \"project the wasm…",
   "content_html": "<ul><li><strong>DEMOSCENE ATMOSPHERE</strong> — the planet's sky dome now projects the WASM demoscene (DemoLayer canvas — generative, same-origin) instead of the found-video, with a local-video fallback when no demo is running (Paul: &quot;project the wasm…</li><li><strong>THREE VIEWS</strong> — removed the standalone video view. The ✦ chip now cycles map -&gt; viz -&gt; aliens -&gt; map.</li><li><strong>DRUMMER</strong> — a real SECOND drum (its own membrane + rim at the second hand's reach) and the two hands beat at DIFFERENT paces -- the primary strikes the real note onsets, the second hand keeps its own steady per-alien…</li><li><strong>HUD</strong> — moved to the top-RIGHT (right-anchored, right-aligned).</li></ul>\n<p><em>Verified:</em> verify.sh, full-boot, starcruise-run 79/79 + nav.</p>\n<p><a href=\"https://stellate.app/?genre=bigband&amp;seed=5545&amp;path=814.14134,833.14167,795.14167&amp;xdur=13.122\">▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/072ea1a1ce016b613278585d9541b9975fa9be25\">072ea1a</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "DEMOSCENE ATMOSPHERE — the planet's sky dome now projects the WASM demoscene (DemoLayer canvas — generative, same-origin) instead of the found-video, with a local-video fallback when no demo is running (Paul: \"project the wasm…\n\nTHREE VIEWS — removed the standalone video view. The ✦ chip now cycles map -> viz -> aliens -> map.\n\nDRUMMER — a real SECOND drum (its own membrane + rim at the second hand's reach) and the two hands beat at DIFFERENT paces -- the primary strikes the real note onsets, the second hand keeps its own steady per-alien…\n\nHUD — moved to the top-RIGHT (right-anchored, right-aligned).\n\nVerified: verify.sh, full-boot, starcruise-run 79/79 + nav.\n\n▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments https://stellate.app/?genre=bigband&seed=5545&path=814.14134,833.14167,795.14167&xdur=13.122\n\n072ea1a https://github.com/aboard-io/stellate/commit/072ea1a1ce016b613278585d9541b9975fa9be25",
   "date_published": "2026-07-13T15:33:31.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bigband",
    "sampler"
   ]
  },
  {
   "id": "eb7851f723375f5bede0aa5095fed29e961d2ee2",
   "url": "https://stellate.app/?genre=transitwave&seed=9063&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/eb7851f723375f5bede0aa5095fed29e961d2ee2",
   "title": "Video-in-sky: wrap the footage around the planet as a glowing atmosphere",
   "summary": "Refine v26's sky-video from a flat billboard screen behind the band into an ATMOSPHERE (Paul: \"the video should be mapped around the planet like its atmosphere\").",
   "content_html": "<p>Refine v26's sky-video from a flat billboard screen behind the band into an ATMOSPHERE (Paul: &quot;the video should be mapped around the planet like its atmosphere&quot;).</p>\n<p><em>Verified:</em> full-boot, starcruise-run + nav.</p>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=9063&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/eb7851f723375f5bede0aa5095fed29e961d2ee2\">eb7851f</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Refine v26's sky-video from a flat billboard screen behind the band into an ATMOSPHERE (Paul: \"the video should be mapped around the planet like its atmosphere\").\n\nVerified: full-boot, starcruise-run + nav.\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=9063&path=749.12536,768.12569,730.12569&xdur=13.122\n\neb7851f https://github.com/aboard-io/stellate/commit/eb7851f723375f5bede0aa5095fed29e961d2ee2",
   "date_published": "2026-07-13T14:42:50.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "37e210415ae409f92ba9db2d9bb869e0214bf8da",
   "url": "https://stellate.app/access.html?genre=ambient&seed=6177",
   "external_url": "https://github.com/aboard-io/stellate/commit/37e210415ae409f92ba9db2d9bb869e0214bf8da",
   "title": "Five fixes: video-in-sky, streaming metadata, 3D settings z-index, vapor in access, MIDI-only downloads",
   "summary": "VIDEO IN THE SKY — project the found-video layer onto a big yaw-billboard screen high in the night sky behind the 3D band. Uses VideoLayer._frontEl() as a THREE.VideoTexture, LOCAL clips only (_frontKind === \"local\")",
   "content_html": "<ul><li><strong>VIDEO IN THE SKY</strong> — project the found-video layer onto a big yaw-billboard screen high in the night sky behind the 3D band. Uses VideoLayer._frontEl() as a THREE.VideoTexture, LOCAL clips only (_frontKind === &quot;local&quot;)</li><li><strong>STREAMING METADATA</strong> — MediaSession now reports artist &quot;stellate.app&quot;, album = the PARENT (dominant) genre, song/title = the CURRENT CLOSEST genre (S.best, the verifier's nearest, which drifts as you travel).</li><li><strong>SETTINGS IN 3D MODE</strong> — the star-cruise canvas (z40) / VHS overlay (z44) / HUD (z55) sat above the settings + about modals (z7), so opening the gear in aliens view popped the panel behind the flight.</li><li><strong>VAPOR IN THE ACCESSIBLE VIEW</strong> — add the live-only mall-haze master-EQ slider to access.html (parity with the map); wired via setVapor, persisted, aria-valuetext.</li></ul>\n<p><em>Verified:</em> full-boot, starcruise-run + nav, access-ui 12/12.</p>\n<p><a href=\"https://stellate.app/access.html?genre=ambient&amp;seed=6177\">▶ Play it: Stationary Weather — the accessible text version, where the same music arrives as prose</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/37e210415ae409f92ba9db2d9bb869e0214bf8da\">37e2104</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "VIDEO IN THE SKY — project the found-video layer onto a big yaw-billboard screen high in the night sky behind the 3D band. Uses VideoLayer._frontEl() as a THREE.VideoTexture, LOCAL clips only (_frontKind === \"local\")\n\nSTREAMING METADATA — MediaSession now reports artist \"stellate.app\", album = the PARENT (dominant) genre, song/title = the CURRENT CLOSEST genre (S.best, the verifier's nearest, which drifts as you travel).\n\nSETTINGS IN 3D MODE — the star-cruise canvas (z40) / VHS overlay (z44) / HUD (z55) sat above the settings + about modals (z7), so opening the gear in aliens view popped the panel behind the flight.\n\nVAPOR IN THE ACCESSIBLE VIEW — add the live-only mall-haze master-EQ slider to access.html (parity with the map); wired via setVapor, persisted, aria-valuetext.\n\nVerified: full-boot, starcruise-run + nav, access-ui 12/12.\n\n▶ Play it: Stationary Weather — the accessible text version, where the same music arrives as prose https://stellate.app/access.html?genre=ambient&seed=6177\n\n37e2104 https://github.com/aboard-io/stellate/commit/37e210415ae409f92ba9db2d9bb869e0214bf8da",
   "date_published": "2026-07-13T14:14:30.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ambient",
    "accessibility"
   ]
  },
  {
   "id": "e7d7f53b8cb0ca85432a6cc4ca894c64c5ec16ab",
   "url": "https://stellate.app/?genre=atticlament&seed=7915&path=1145.12655,814.14156,1206.17398&xdur=0.157",
   "external_url": "https://github.com/aboard-io/stellate/commit/e7d7f53b8cb0ca85432a6cc4ca894c64c5ec16ab",
   "title": "Genre build-out 250 -> 273 + accessible type-to-filter combobox",
   "summary": "Fill the hollow regions of the genre space via genre-tool delta-scaffolding, every addition refereed by the genre-confusion matrix (stays diagonal-dominant 273/273).",
   "content_html": "<p>Fill the hollow regions of the genre space via genre-tool delta-scaffolding, every addition refereed by the genre-confusion matrix (stays diagonal-dominant 273/273).</p>\n<ul><li>Named regions (distinct instruments -&gt; open feature-space): 5 classical (romanticism/chamber/impressionism/postminimal/symphony), 4 rock (punk/indie/grunge/postrock), 8 world/latin/jazz/hiphop…</li><li>6 INVENTED &quot;lerp&quot; genres filling the emptiest midpoints of the 23-D feature space (cryptvespers/nocturnesmash/glacialgabber/breakbop/atticlament/ hazebunker), via the new tools/lerp-genre.js (interpolate two…</li><li>New authoring tools: tools/lerp-genre.js (invent-by-interpolation) and tools/rm-genre.js (clean removal).</li><li>Accessible view (access.html): the three 273-row genre &lt;select&gt;s were unusable, so they become native type-to-filter comboboxes -- one shared &lt;datalist&gt; + three &lt;input list&gt;.</li></ul>\n<p><em>Verified:</em> matrix 273/273, verify.sh (validate/engine/prove/matproof/poscover/ coordscover), full-boot-run, starcruise-run 79/79 + nav, access-ui 12/12.</p>\n<p><a href=\"https://stellate.app/?genre=atticlament&amp;seed=7915&amp;path=1145.12655,814.14156,1206.17398&amp;xdur=0.157\">▶ Play it: Servo Elegy → Ballroom Leviathan → Amen Hypotenuse — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/e7d7f53b8cb0ca85432a6cc4ca894c64c5ec16ab\">e7d7f53</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Fill the hollow regions of the genre space via genre-tool delta-scaffolding, every addition refereed by the genre-confusion matrix (stays diagonal-dominant 273/273).\n\n• Named regions (distinct instruments -> open feature-space): 5 classical (romanticism/chamber/impressionism/postminimal/symphony), 4 rock (punk/indie/grunge/postrock), 8 world/latin/jazz/hiphop…\n\n• 6 INVENTED \"lerp\" genres filling the emptiest midpoints of the 23-D feature space (cryptvespers/nocturnesmash/glacialgabber/breakbop/atticlament/ hazebunker), via the new tools/lerp-genre.js (interpolate two…\n\n• New authoring tools: tools/lerp-genre.js (invent-by-interpolation) and tools/rm-genre.js (clean removal).\n\n• Accessible view (access.html): the three 273-row genre <select>s were unusable, so they become native type-to-filter comboboxes -- one shared <datalist> + three <input list>.\n\nVerified: matrix 273/273, verify.sh (validate/engine/prove/matproof/poscover/ coordscover), full-boot-run, starcruise-run 79/79 + nav, access-ui 12/12.\n\n▶ Play it: Servo Elegy → Ballroom Leviathan → Amen Hypotenuse — the three genres this change names, as one path https://stellate.app/?genre=atticlament&seed=7915&path=1145.12655,814.14156,1206.17398&xdur=0.157\n\ne7d7f53 https://github.com/aboard-io/stellate/commit/e7d7f53b8cb0ca85432a6cc4ca894c64c5ec16ab",
   "date_published": "2026-07-13T12:48:13.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "atticlament",
    "bigband",
    "breakbop",
    "accessibility"
   ]
  },
  {
   "id": "8dcadb7b45ed60dd8ad90b15ac4f976541f33711",
   "url": "https://stellate.app/how.html",
   "external_url": "https://github.com/aboard-io/stellate/commit/8dcadb7b45ed60dd8ad90b15ac4f976541f33711",
   "title": "Docs refresh + open-source clean-clone runnability (250 genres, package.json)",
   "summary": "DOCS (task: \"update docs and info in the app\"):",
   "content_html": "<p>DOCS (task: &quot;update docs and info in the app&quot;):</p>\n<ul><li>Genre count corrected everywhere: 228/240/249 -&gt; 250 (matrix prints 250/250, verified). index.html about panel, how.html, README.md, CLAUDE.md, CONTRIBUTING.md.</li><li>index.html help line already reflects the four views (map/viz/video/aliens) + the duration control.</li><li>Added a root package.json declaring the ONE browser-test dep (playwright ^1.57.0), and gitignored /node_modules/.</li><li>CONTRIBUTING documents the browser-gate setup.</li></ul>\n<p><em>Verified:</em> verify.sh (matrix/validate/engine/prove/matproof/poscover/coordscover) all PASS at 250/250; full-boot green. No app behaviour change.</p>\n<p><a href=\"https://stellate.app/how.html\">▶ read how a song is made — the drawn pipeline itself</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/8dcadb7b45ed60dd8ad90b15ac4f976541f33711\">8dcadb7</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "DOCS (task: \"update docs and info in the app\"):\n\n• Genre count corrected everywhere: 228/240/249 -> 250 (matrix prints 250/250, verified). index.html about panel, how.html, README.md, CLAUDE.md, CONTRIBUTING.md.\n\n• index.html help line already reflects the four views (map/viz/video/aliens) + the duration control.\n\n• Added a root package.json declaring the ONE browser-test dep (playwright ^1.57.0), and gitignored /node_modules/.\n\n• CONTRIBUTING documents the browser-gate setup.\n\nVerified: verify.sh (matrix/validate/engine/prove/matproof/poscover/coordscover) all PASS at 250/250; full-boot green. No app behaviour change.\n\n▶ read how a song is made — the drawn pipeline itself https://stellate.app/how.html\n\n8dcadb7 https://github.com/aboard-io/stellate/commit/8dcadb7b45ed60dd8ad90b15ac4f976541f33711",
   "date_published": "2026-07-13T03:47:35.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "explainer"
   ]
  },
  {
   "id": "6e5cd73ec5ac2b9d0ed953a640fab01f38e1d806",
   "url": "https://stellate.app/?genre=bebop&seed=9174&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/6e5cd73ec5ac2b9d0ed953a640fab01f38e1d806",
   "title": "Star-cruise: aliens-as-a-view, dramatic spotlights, Earth-animal creatures, wider bare stage",
   "summary": "VIEW INTEGRATION (panels.js, background.js, starcruise.js, app.css, index.html):",
   "content_html": "<p>VIEW INTEGRATION (panels.js, background.js, starcruise.js, app.css, index.html):</p>\n<ul><li>The aliens (3D star-cruise) are now the 4th VIEW — the ✦ chip cycles map → viz → video → aliens → map (👾 icon). Removed the standalone 🛸 chip and the ✕ EXIT button entirely</li><li>VHS scanline overlay (scanlines + drifting tracking-roll + vignette) in front of the 3D view, on top of the PS1 post pass.</li><li>Band spaced much wider (spread ~3.2-4.2 -&gt; 5-7; world grown to hold it, capped so it stays a little planet).</li><li>Backdrop REMOVED — no city/farm/trees/objects; the bare planet is the stage (empty backdrop group keeps the lifecycle intact).</li></ul>\n<p><em>Verified:</em> starcruise-run 79/79, full-boot, traits-run, alien-run, alien-face-run, alien-dancer-run all green.</p>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=9174&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/6e5cd73ec5ac2b9d0ed953a640fab01f38e1d806\">6e5cd73</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "VIEW INTEGRATION (panels.js, background.js, starcruise.js, app.css, index.html):\n\n• The aliens (3D star-cruise) are now the 4th VIEW — the ✦ chip cycles map → viz → video → aliens → map (👾 icon). Removed the standalone 🛸 chip and the ✕ EXIT button entirely\n\n• VHS scanline overlay (scanlines + drifting tracking-roll + vignette) in front of the 3D view, on top of the PS1 post pass.\n\n• Band spaced much wider (spread ~3.2-4.2 -> 5-7; world grown to hold it, capped so it stays a little planet).\n\n• Backdrop REMOVED — no city/farm/trees/objects; the bare planet is the stage (empty backdrop group keeps the lifecycle intact).\n\nVerified: starcruise-run 79/79, full-boot, traits-run, alien-run, alien-face-run, alien-dancer-run all green.\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=9174&path=694.13834,713.13867,675.13867&xdur=13.122\n\n6e5cd73 https://github.com/aboard-io/stellate/commit/6e5cd73ec5ac2b9d0ed953a640fab01f38e1d806",
   "date_published": "2026-07-13T03:05:56.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "91f1e11fbb2d2de96f5e58dae6450d3ac574b57c",
   "url": "https://stellate.app/?genre=vaporwave&seed=9127&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/91f1e11fbb2d2de96f5e58dae6450d3ac574b57c",
   "title": "Bake vapor into the render — works on mobile now, takes effect over time (like BPM)",
   "summary": "Vapor was a desktop-only LIVE effect (a filter + reverb on the output WebAudio graph), so it was silent on the pocket-proof mobile path, which plays pre-rendered WAV segments through a plain <audio> with no live graph.",
   "content_html": "<p>Vapor was a desktop-only LIVE effect (a filter + reverb on the output WebAudio graph), so it was silent on the pocket-proof mobile path, which plays pre-rendered WAV segments through a plain &lt;audio&gt; with no live graph.</p>\n<ul><li>stream-renderer.js (renderChunk): applyVapor() bakes the &quot;walking through a mall&quot; master EQ into the full-mix stereo stream that feeds BOTH the desktop ring and the mobile WAV segments</li><li>live.js: both conductors now carry the vapor amount into each fed bar (ring: curVapor; wav-first: curVaporWav), and their setVapor() updates it</li></ul>\n<p><em>Verified:</em> segment-parity 14/14 BYTE-EQUAL at vapor 0 (maxΔ 0); a render at vapor 0.7 muffles the highs to ~60% + ducks level to ~87%; share-url live audio path clean, zero page errors.</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=9127&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — the brightest, most processed corner of the space</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/91f1e11fbb2d2de96f5e58dae6450d3ac574b57c\">91f1e11</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Vapor was a desktop-only LIVE effect (a filter + reverb on the output WebAudio graph), so it was silent on the pocket-proof mobile path, which plays pre-rendered WAV segments through a plain <audio> with no live graph.\n\n• stream-renderer.js (renderChunk): applyVapor() bakes the \"walking through a mall\" master EQ into the full-mix stereo stream that feeds BOTH the desktop ring and the mobile WAV segments\n\n• live.js: both conductors now carry the vapor amount into each fed bar (ring: curVapor; wav-first: curVaporWav), and their setVapor() updates it\n\nVerified: segment-parity 14/14 BYTE-EQUAL at vapor 0 (maxΔ 0); a render at vapor 0.7 muffles the highs to ~60% + ducks level to ~87%; share-url live audio path clean, zero page errors.\n\n▶ Play it: Food Court Eternity — the brightest, most processed corner of the space https://stellate.app/?genre=vaporwave&seed=9127&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\n91f1e11 https://github.com/aboard-io/stellate/commit/91f1e11fbb2d2de96f5e58dae6450d3ac574b57c",
   "date_published": "2026-07-13T00:16:16.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "mix"
   ]
  },
  {
   "id": "39c0a9d0b9680d70ea2d22698fe1c786381db36b",
   "url": "https://stellate.app/?genre=canawave&seed=6696&path=1505.3698,1524.3731,1486.3731&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/39c0a9d0b9680d70ea2d22698fe1c786381db36b",
   "title": "Duration-as-time slider, void-blend evolution, and add/remove-nodes fix",
   "summary": "DURATION SLIDER — the loop's travel is now dialed directly as a TIME — 8 min to 24 h on a log slider, default 30 min — replacing the abstract bars-per-leg \"pace\".",
   "content_html": "<ul><li><strong>DURATION SLIDER</strong> — the loop's travel is now dialed directly as a TIME — 8 min to 24 h on a log slider, default 30 min — replacing the abstract bars-per-leg &quot;pace&quot;.</li><li><strong>VOID-BLEND</strong> — the genre mix used to pin ONE genre at 100% across any sparse region — a path drawn through empty space then played the same genre for hours (Paul's ?path sat on canawave ~20 min).</li><li><strong>ADD/REMOVE NODES</strong> — double-tap-to-add/remove had stopped working — the two-tap proximity was measured in LOGICAL world units (&lt;16), but the map spans ~25000 units tall, so at default zoom that window was ~0.4 SCREEN px: no finger…</li><li>simulate-path.js: the auto walk length is now loopBars() (one full loop at the current speed) instead of pace×legs, which under the duration model no longer completes a loop.</li></ul>\n<p><em>Verified:</em> simulate-path 4/4 (all 3 default genres crossed), share-url 13/13 (legacy pace URL maps identically), explorer-ui constant-pace seamless, full-boot healthy.</p>\n<p><a href=\"https://stellate.app/?genre=canawave&amp;seed=6696&amp;path=1505.3698,1524.3731,1486.3731&amp;xdur=13.122\">▶ Play it: Loon Referendum — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/39c0a9d0b9680d70ea2d22698fe1c786381db36b\">39c0a9d</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "DURATION SLIDER — the loop's travel is now dialed directly as a TIME — 8 min to 24 h on a log slider, default 30 min — replacing the abstract bars-per-leg \"pace\".\n\nVOID-BLEND — the genre mix used to pin ONE genre at 100% across any sparse region — a path drawn through empty space then played the same genre for hours (Paul's ?path sat on canawave ~20 min).\n\nADD/REMOVE NODES — double-tap-to-add/remove had stopped working — the two-tap proximity was measured in LOGICAL world units (<16), but the map spans ~25000 units tall, so at default zoom that window was ~0.4 SCREEN px: no finger…\n\n• simulate-path.js: the auto walk length is now loopBars() (one full loop at the current speed) instead of pace×legs, which under the duration model no longer completes a loop.\n\nVerified: simulate-path 4/4 (all 3 default genres crossed), share-url 13/13 (legacy pace URL maps identically), explorer-ui constant-pace seamless, full-boot healthy.\n\n▶ Play it: Loon Referendum — parked on the genre this change names https://stellate.app/?genre=canawave&seed=6696&path=1505.3698,1524.3731,1486.3731&xdur=13.122\n\n39c0a9d https://github.com/aboard-io/stellate/commit/39c0a9d0b9680d70ea2d22698fe1c786381db36b",
   "date_published": "2026-07-12T21:15:07.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "canawave",
    "harmony"
   ]
  },
  {
   "id": "ff9c74eb3c79a1f2d68e38224d5ae5681267b515",
   "url": "https://stellate.app/?genre=techno&seed=7627&path=1956.22436,1718.20526,1679.4415&xdur=0.042",
   "external_url": "https://github.com/aboard-io/stellate/commit/ff9c74eb3c79a1f2d68e38224d5ae5681267b515",
   "title": "Star-cruise camera round 2: persistent free-look, whole-alien framing, top-down arrival",
   "summary": "Follow-up to the user's rapid-fire camera feedback (all three deployed live were mechanically working but didn't match intent):",
   "content_html": "<p>Follow-up to the user's rapid-fire camera feedback (all three deployed live were mechanically working but didn't match intent):</p>\n<ul><li>FREE-LOOK persists (app/starcruise.js): removed the 3.5s auto-recenter that snapped the view back to forward — it read as &quot;can't change my view when flying between planets.&quot; A drag now HOLDS where you leave it</li><li>WHOLE-ALIEN framing (app/starcruise.js): the landed auto-cam still filled the frame with the (big, winged/horned) creatures.</li><li><strong>TOP-DOWN ARRIVAL</strong> — the descent now falls to a pose high OVER the landing pad looking straight DOWN at the little planet, then eases onto the pad</li></ul>\n<p><em>Verified:</em> starcruise-run 79/79, full-boot-run healthy.</p>\n<p><a href=\"https://stellate.app/?genre=techno&amp;seed=7627&amp;path=1956.22436,1718.20526,1679.4415&amp;xdur=0.042\">▶ Play it: Unblinking Interval → Barometric Stampede → Food Court Eternity — a three-star constellation to watch the map work</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/ff9c74eb3c79a1f2d68e38224d5ae5681267b515\">ff9c74e</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Follow-up to the user's rapid-fire camera feedback (all three deployed live were mechanically working but didn't match intent):\n\n• FREE-LOOK persists (app/starcruise.js): removed the 3.5s auto-recenter that snapped the view back to forward — it read as \"can't change my view when flying between planets.\" A drag now HOLDS where you leave it\n\n• WHOLE-ALIEN framing (app/starcruise.js): the landed auto-cam still filled the frame with the (big, winged/horned) creatures.\n\nTOP-DOWN ARRIVAL — the descent now falls to a pose high OVER the landing pad looking straight DOWN at the little planet, then eases onto the pad\n\nVerified: starcruise-run 79/79, full-boot-run healthy.\n\n▶ Play it: Unblinking Interval → Barometric Stampede → Food Court Eternity — a three-star constellation to watch the map work https://stellate.app/?genre=techno&seed=7627&path=1956.22436,1718.20526,1679.4415&xdur=0.042\n\nff9c74e https://github.com/aboard-io/stellate/commit/ff9c74eb3c79a1f2d68e38224d5ae5681267b515",
   "date_published": "2026-07-12T20:31:45.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "techno",
    "jungle",
    "vaporwave",
    "visual"
   ]
  },
  {
   "id": "bd6ae32ca3a5bc876b382e69a5755f8c932cf9b7",
   "url": "https://stellate.app/?genre=techno&seed=8796&path=1956.22436,1718.20526,1679.4415&xdur=0.042",
   "external_url": "https://github.com/aboard-io/stellate/commit/bd6ae32ca3a5bc876b382e69a5755f8c932cf9b7",
   "title": "Star-cruise: landed auto-cam frames the WHOLE alien, not a tight crop",
   "summary": "The landed music-video camera zoomed in too far and cropped the (now bigger, horned/winged/tailed) creatures. Pull the closeups/drummer/through shots back to a full-figure FRONT framing so the entire alien is always in view:",
   "content_html": "<p>The landed music-video camera zoomed in too far and cropped the (now bigger, horned/winged/tailed) creatures. Pull the closeups/drummer/through shots back to a full-figure FRONT framing so the entire alien is always in view:</p>\n<ul><li>closeups dist 3.6 -&gt; 7.0, target y 1.3 -&gt; 1.15, yaw ±0.30 -&gt; ±0.14 (near-front), fov 50 -&gt; 52</li><li>drummer dist 3.9 -&gt; 6.8, matched framing</li><li>through: was a hard dolly (-1.4 from 4.5) that cratered onto the band; now a gentle push (-0.6 from 9.0) that never zooms past a whole-body view</li><li>orbit.minDist 2.2 -&gt; 3.6 so nothing (auto or manual) craters in past the body</li></ul>\n<p><em>Verified:</em> starcruise-run 79/79 (CA1-3 framing asserts green, min shot camY 1.96), full-boot-run healthy.</p>\n<p><a href=\"https://stellate.app/?genre=techno&amp;seed=8796&amp;path=1956.22436,1718.20526,1679.4415&amp;xdur=0.042\">▶ Play it: Unblinking Interval → Barometric Stampede → Food Court Eternity — a three-star constellation to watch the map work</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/bd6ae32ca3a5bc876b382e69a5755f8c932cf9b7\">bd6ae32</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The landed music-video camera zoomed in too far and cropped the (now bigger, horned/winged/tailed) creatures. Pull the closeups/drummer/through shots back to a full-figure FRONT framing so the entire alien is always in view:\n\n• closeups dist 3.6 -> 7.0, target y 1.3 -> 1.15, yaw ±0.30 -> ±0.14 (near-front), fov 50 -> 52\n\n• drummer dist 3.9 -> 6.8, matched framing\n\n• through: was a hard dolly (-1.4 from 4.5) that cratered onto the band; now a gentle push (-0.6 from 9.0) that never zooms past a whole-body view\n\n• orbit.minDist 2.2 -> 3.6 so nothing (auto or manual) craters in past the body\n\nVerified: starcruise-run 79/79 (CA1-3 framing asserts green, min shot camY 1.96), full-boot-run healthy.\n\n▶ Play it: Unblinking Interval → Barometric Stampede → Food Court Eternity — a three-star constellation to watch the map work https://stellate.app/?genre=techno&seed=8796&path=1956.22436,1718.20526,1679.4415&xdur=0.042\n\nbd6ae32 https://github.com/aboard-io/stellate/commit/bd6ae32ca3a5bc876b382e69a5755f8c932cf9b7",
   "date_published": "2026-07-12T19:00:05.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "techno",
    "jungle",
    "vaporwave",
    "visual"
   ]
  },
  {
   "id": "07d661ec83622a441093c4f899b04e63c94eb1c2",
   "url": "https://stellate.app/?genre=vaporwave&seed=1284&path=1679.4415,430.3999&xdur=0.57",
   "external_url": "https://github.com/aboard-io/stellate/commit/07d661ec83622a441093c4f899b04e63c94eb1c2",
   "title": "Star-cruise v18: continuous flight + free-look, real planets/flaming suns, creature-collection aliens",
   "summary": "CAMERA/FLIGHT (app/starcruise.js, flight.js):",
   "content_html": "<p>CAMERA/FLIGHT (app/starcruise.js, flight.js):</p>\n<ul><li>Continuous space flight: the &quot;moves every 8 bars&quot; lurch survived the v15 fix because only the lateral PAN was dead-reckoned</li><li>Free-look in transit: a drag now turns the view about the flying eye (transitLook yaw/pitch) without fighting the auto-flight path; gentle recenter (TC 3.5s), zeroed on depart.</li><li>Planets are planets, not colored blobs: makePlanetMarkerMaterial adds procedural continents/oceans/polar-caps + a fresnel atmosphere rim over the per-genre hue, per-instance aSeed, still one instanced draw…</li><li>Suns are darker + flaming: makeSunMaterial renders churning emissive plasma (dark ember valleys, fiery granulation, sunspots, limb darkening) off the deterministic dt clock, with a rounder/warmer corona.</li></ul>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=1284&amp;path=1679.4415,430.3999&amp;xdur=0.57\">▶ Play it: Food Court Eternity → Molten Horsepower — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/07d661ec83622a441093c4f899b04e63c94eb1c2\">07d661e</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "CAMERA/FLIGHT (app/starcruise.js, flight.js):\n\n• Continuous space flight: the \"moves every 8 bars\" lurch survived the v15 fix because only the lateral PAN was dead-reckoned\n\n• Free-look in transit: a drag now turns the view about the flying eye (transitLook yaw/pitch) without fighting the auto-flight path; gentle recenter (TC 3.5s), zeroed on depart.\n\n• Planets are planets, not colored blobs: makePlanetMarkerMaterial adds procedural continents/oceans/polar-caps + a fresnel atmosphere rim over the per-genre hue, per-instance aSeed, still one instanced draw…\n\n• Suns are darker + flaming: makeSunMaterial renders churning emissive plasma (dark ember valleys, fiery granulation, sunspots, limb darkening) off the deterministic dt clock, with a rounder/warmer corona.\n\n▶ Play it: Food Court Eternity → Molten Horsepower — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=vaporwave&seed=1284&path=1679.4415,430.3999&xdur=0.57\n\n07d661e https://github.com/aboard-io/stellate/commit/07d661ec83622a441093c4f899b04e63c94eb1c2",
   "date_published": "2026-07-12T18:49:39.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "heavymetal",
    "mix"
   ]
  },
  {
   "id": "796bb88e44b89e66a53c6bd821c2e08ea4a69d50",
   "url": "https://stellate.app/?genre=vaporwave&seed=7734&path=1679.4415,430.3999&xdur=0.57",
   "external_url": "https://github.com/aboard-io/stellate/commit/796bb88e44b89e66a53c6bd821c2e08ea4a69d50",
   "title": "star-cruise v17: cute faces, jointed varied bodies, feet planted on the ground",
   "summary": "Alien band visual polish (render-only star-cruise factories; no engine or render-path file touched — byte-identity preserved):",
   "content_html": "<p>Alien band visual polish (render-only star-cruise factories; no engine or render-path file touched — byte-identity preserved):</p>\n<ul><li><strong>FACES</strong> — big cute eyes (sclera + iris + pupil + catchlight) now sit PROUD of the marching-cubes body front instead of buried inside it; rosy cheeks, hinged-jaw mouths.</li><li><strong>JOINTED LIMBS</strong> — visible shoulder/hip socket where each limb meets the core, plus elbow/wrist and knee/ankle knobs; arms flex to reach instruments (onset contact reach&lt;0.05 preserved), tentacles show joint nodes.</li><li><strong>BODY VARIETY</strong> — the 7 metaball body plans now read as distinct silhouettes (cephalopod/insectoid/stalk/crystalline/blob/radial/gas) and per-alien seeds differ</li><li><strong>FEET PLANTED</strong> — liftY computed off the true standing foot line (body+legs only, excluding the lowered instrument/arms) instead of the worst-case rest pose, so aliens rest at y~0 on the curved surface (were floating…</li></ul>\n<p><em>Verified:</em> full-boot-run (real main.js boot, 🛸 present, 0 errors), alien / alien-dancer / alien-face / starcruise suites green (new O2 FEET-TOUCH assertion), determinism preserved.</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=7734&amp;path=1679.4415,430.3999&amp;xdur=0.57\">▶ Play it: Food Court Eternity → Molten Horsepower — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/796bb88e44b89e66a53c6bd821c2e08ea4a69d50\">796bb88</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Alien band visual polish (render-only star-cruise factories; no engine or render-path file touched — byte-identity preserved):\n\nFACES — big cute eyes (sclera + iris + pupil + catchlight) now sit PROUD of the marching-cubes body front instead of buried inside it; rosy cheeks, hinged-jaw mouths.\n\nJOINTED LIMBS — visible shoulder/hip socket where each limb meets the core, plus elbow/wrist and knee/ankle knobs; arms flex to reach instruments (onset contact reach<0.05 preserved), tentacles show joint nodes.\n\nBODY VARIETY — the 7 metaball body plans now read as distinct silhouettes (cephalopod/insectoid/stalk/crystalline/blob/radial/gas) and per-alien seeds differ\n\nFEET PLANTED — liftY computed off the true standing foot line (body+legs only, excluding the lowered instrument/arms) instead of the worst-case rest pose, so aliens rest at y~0 on the curved surface (were floating…\n\nVerified: full-boot-run (real main.js boot, 🛸 present, 0 errors), alien / alien-dancer / alien-face / starcruise suites green (new O2 FEET-TOUCH assertion), determinism preserved.\n\n▶ Play it: Food Court Eternity → Molten Horsepower — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=vaporwave&seed=7734&path=1679.4415,430.3999&xdur=0.57\n\n796bb88 https://github.com/aboard-io/stellate/commit/796bb88e44b89e66a53c6bd821c2e08ea4a69d50",
   "date_published": "2026-07-12T17:18:19.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "heavymetal",
    "mix"
   ]
  },
  {
   "id": "24566a4a1ac89ef1bf5efc7fb47e52ff2b17f52c",
   "url": "https://stellate.app/?genre=techno&seed=2082&path=1956.22436,1718.20526,1679.4415&xdur=0.042",
   "external_url": "https://github.com/aboard-io/stellate/commit/24566a4a1ac89ef1bf5efc7fb47e52ff2b17f52c",
   "title": "Star-cruise v16: the Little Prince landing (small curved worlds, organic aliens)",
   "summary": "Four parallel passes + integration (each isolation-verified, then combined):",
   "content_html": "<p>Four parallel passes + integration (each isolation-verified, then combined):</p>\n<ul><li><strong>LITTLE PRINCE SCALE</strong> — land on a SMALL curved procedural planet (planet.js smallWorld, radius ~23, horizon bends away underfoot) — the band + dancers stand ON its surface oriented to the normal</li><li><strong>PER-GENRE VARIETY</strong> — 9 terrain types (hills/mountains/seas/archipelago/desert/ canyons/craters/ice/volcanic) now GENRE-KEYED (terrain seed = hash(genre)^seed) so each planet's landscape shape differs, not just its palette</li><li><strong>ORGANIC ALIENS</strong> — THREE.MarchingCubes vendored (r160, offline import); alien bodies are baked metaball FUSED surfaces (limbs melt into the torso) instead of clamped tubes</li><li><strong>CONTINUOUS CAMERA</strong> — the 8-bar lurch is gone — the followed target dead-reckons a linear ramp across each bar interval (advances every frame at constant velocity) instead of easing to a static target and waiting</li></ul>\n<p><em>Verified:</em> all 12 suites + full-boot CLEAN + verify.sh green; landed shots (inspected) show black space, band on a visibly curved little planet, per-genre terrain+city.</p>\n<p><a href=\"https://stellate.app/?genre=techno&amp;seed=2082&amp;path=1956.22436,1718.20526,1679.4415&amp;xdur=0.042\">▶ Play it: Unblinking Interval → Barometric Stampede → Food Court Eternity — a three-star constellation to watch the map work</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/24566a4a1ac89ef1bf5efc7fb47e52ff2b17f52c\">24566a4</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Four parallel passes + integration (each isolation-verified, then combined):\n\nLITTLE PRINCE SCALE — land on a SMALL curved procedural planet (planet.js smallWorld, radius ~23, horizon bends away underfoot) — the band + dancers stand ON its surface oriented to the normal\n\nPER-GENRE VARIETY — 9 terrain types (hills/mountains/seas/archipelago/desert/ canyons/craters/ice/volcanic) now GENRE-KEYED (terrain seed = hash(genre)^seed) so each planet's landscape shape differs, not just its palette\n\nORGANIC ALIENS — THREE.MarchingCubes vendored (r160, offline import); alien bodies are baked metaball FUSED surfaces (limbs melt into the torso) instead of clamped tubes\n\nCONTINUOUS CAMERA — the 8-bar lurch is gone — the followed target dead-reckons a linear ramp across each bar interval (advances every frame at constant velocity) instead of easing to a static target and waiting\n\nVerified: all 12 suites + full-boot CLEAN + verify.sh green; landed shots (inspected) show black space, band on a visibly curved little planet, per-genre terrain+city.\n\n▶ Play it: Unblinking Interval → Barometric Stampede → Food Court Eternity — a three-star constellation to watch the map work https://stellate.app/?genre=techno&seed=2082&path=1956.22436,1718.20526,1679.4415&xdur=0.042\n\n24566a4 https://github.com/aboard-io/stellate/commit/24566a4a1ac89ef1bf5efc7fb47e52ff2b17f52c",
   "date_published": "2026-07-12T15:25:35.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "techno",
    "jungle",
    "vaporwave",
    "visual"
   ]
  },
  {
   "id": "9fa1a5cd3d07c3fc5d916fc68bd8ef59190aeb06",
   "url": "https://stellate.app/?genre=bebop&seed=6085&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/9fa1a5cd3d07c3fc5d916fc68bd8ef59190aeb06",
   "title": "Star-cruise: unified scene + continuous camera (real descent, no lurch)",
   "summary": "The nav FELT broken (lurch every ~8 bars, hard CUT to the planet) because the galaxy and surface were SEPARATE scenes and the camera targeted the DISCRETE dominant planet.",
   "content_html": "<p>The nav FELT broken (lurch every ~8 bars, hard CUT to the planet) because the galaxy and surface were SEPARATE scenes and the camera targeted the DISCRETE dominant planet.</p>\n<ul><li>ONE unified Object3D scene: the dominant genre's surface/band is built (on APPROACH, keyed by the live weights) at the planet and GROWS IN during the descent, persisting through touchdown</li><li>CONTINUOUS camera: critically-damped springs (smoothDamp, dt-only) on land/space progress + aim at the CONTINUOUS weight-blend centroid (not the discrete dominant), so a bar-boundary weight flip only nudges…</li><li><strong>PROCEDURAL PLANET GROUND</strong> — vendored simplex-noise (jwagner v4, MIT, ~19KB, lazy-imported, no CDN) + app/starcruise/planet.js — a deterministic fBm- displaced icosphere with a CPU-samplable heightAt()</li></ul>\n<p><em>Verified:</em> (measured + FRAME SEQUENCE inspected): barcadence boundary-lurch worst 33x-&gt;1.0x; scene-jump 60.9x-&gt;2.31x; descent camDist 272-&gt;4.6 continuous (max step &lt; teleport)</p>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=6085&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/9fa1a5cd3d07c3fc5d916fc68bd8ef59190aeb06\">9fa1a5c</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The nav FELT broken (lurch every ~8 bars, hard CUT to the planet) because the galaxy and surface were SEPARATE scenes and the camera targeted the DISCRETE dominant planet.\n\n• ONE unified Object3D scene: the dominant genre's surface/band is built (on APPROACH, keyed by the live weights) at the planet and GROWS IN during the descent, persisting through touchdown\n\n• CONTINUOUS camera: critically-damped springs (smoothDamp, dt-only) on land/space progress + aim at the CONTINUOUS weight-blend centroid (not the discrete dominant), so a bar-boundary weight flip only nudges…\n\nPROCEDURAL PLANET GROUND — vendored simplex-noise (jwagner v4, MIT, ~19KB, lazy-imported, no CDN) + app/starcruise/planet.js — a deterministic fBm- displaced icosphere with a CPU-samplable heightAt()\n\nVerified: (measured + FRAME SEQUENCE inspected): barcadence boundary-lurch worst 33x->1.0x; scene-jump 60.9x->2.31x; descent camDist 272->4.6 continuous (max step < teleport)\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=6085&path=694.13834,713.13867,675.13867&xdur=13.122\n\n9fa1a5c https://github.com/aboard-io/stellate/commit/9fa1a5cd3d07c3fc5d916fc68bd8ef59190aeb06",
   "date_published": "2026-07-12T12:46:42.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "03f67b17551b7cee1057f835768dd81cb1e1c85e",
   "url": "https://stellate.app/?genre=jungle&seed=3015&path=1718.20504,1737.20537,1699.20537&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/03f67b17551b7cee1057f835768dd81cb1e1c85e",
   "title": "Star-cruise polish: limbs off the body, contrasting instruments, no floor shots",
   "summary": "LIMBS NO LONGER INTERSECT THE BODY — pushRootToSurface seats arm/leg/tentacle roots onto the torso surface (coreR*1.05), and keepOutOfCore clamps the IK target(copy)/elbow/wrist outside a coreR*1.02 keep-out shell",
   "content_html": "<ul><li><strong>LIMBS NO LONGER INTERSECT THE BODY</strong> — pushRootToSurface seats arm/leg/tentacle roots onto the torso surface (coreR*1.05), and keepOutOfCore clamps the IK target(copy)/elbow/wrist outside a coreR*1.02 keep-out shell</li><li><strong>CONTRASTING INSTRUMENT COLOURS</strong> — instColBase rotates the alien's per-alien skin hue 180deg (complementary) + high sat/lightness, on both instrument body + accents, so instruments pop as separate objects (hue distance ~0.5).</li><li><strong>NO FROM-BELOW SHOTS</strong> — raised the low auto-cam pitches to look DOWN at the band, plus a hard FROM-BELOW GUARD that lifts any shot whose resolved eye height would fall below band eye-level.</li><li>Fixed the stale test/flight-run.js assertion (removed-3D-ship descent -&gt; the camera's own continuous descent, z 26-&gt;4.4, no teleport).</li></ul>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=3015&amp;path=1718.20504,1737.20537,1699.20537&amp;xdur=13.122\">▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/03f67b17551b7cee1057f835768dd81cb1e1c85e\">03f67b1</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "LIMBS NO LONGER INTERSECT THE BODY — pushRootToSurface seats arm/leg/tentacle roots onto the torso surface (coreR*1.05), and keepOutOfCore clamps the IK target(copy)/elbow/wrist outside a coreR*1.02 keep-out shell\n\nCONTRASTING INSTRUMENT COLOURS — instColBase rotates the alien's per-alien skin hue 180deg (complementary) + high sat/lightness, on both instrument body + accents, so instruments pop as separate objects (hue distance ~0.5).\n\nNO FROM-BELOW SHOTS — raised the low auto-cam pitches to look DOWN at the band, plus a hard FROM-BELOW GUARD that lifts any shot whose resolved eye height would fall below band eye-level.\n\n• Fixed the stale test/flight-run.js assertion (removed-3D-ship descent -> the camera's own continuous descent, z 26->4.4, no teleport).\n\n▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide https://stellate.app/?genre=jungle&seed=3015&path=1718.20504,1737.20537,1699.20537&xdur=13.122\n\n03f67b1 https://github.com/aboard-io/stellate/commit/03f67b17551b7cee1057f835768dd81cb1e1c85e",
   "date_published": "2026-07-12T04:50:14.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "drums"
   ]
  },
  {
   "id": "b0360aececeb45669da845cfefe73db236de7a10",
   "url": "https://stellate.app/?genre=bebop&seed=3756&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/b0360aececeb45669da845cfefe73db236de7a10",
   "title": "Star-cruise nav FEEL rework: spread galaxy, no lurch, real zoom-land",
   "summary": "The v11/v12 nav passed structural tests but FELT wrong (piled up, lurched every 8 measures, zoom didn't land). Fixed the feel, verified by measurement:",
   "content_html": "<p>The v11/v12 nav passed structural tests but FELT wrong (piled up, lurched every 8 measures, zoom didn't land). Fixed the feel, verified by measurement:</p>\n<ul><li><strong>SPREAD + STARS</strong> — FIELD scale 0.55-&gt;3.5 (~6.4x); closest suns 3-&gt;19 units apart (real empty space). Suns render as EMISSIVE glowing stars (self-lit core + additive corona/halo InstancedMesh)</li><li><strong>NO 8-MEASURE LURCH</strong> — the lurch was a first-order follow spiking on the first frame after each discrete blend update. Replaced with a critically-damped spring (smoothDamp, CAM_SMOOTH=0.7s, dt-driven/deterministic) easing the galaxy…</li><li><strong>CONTINUOUS ZOOM-LAND</strong> — unified the star-map and surface regions — the transit pose is one lerp in t (0 deep-space .. 1 touchdown) into a SURFACE_POSE that is byte-identical to the landed pose (C0 handoff, no teleport).</li><li>Preserved: fidelity model, band/faces/dancers/shaders/shadows/HUD, drummer-on-fill, front-on landing, teardown.</li></ul>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=3756&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/b0360aececeb45669da845cfefe73db236de7a10\">b0360ae</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The v11/v12 nav passed structural tests but FELT wrong (piled up, lurched every 8 measures, zoom didn't land). Fixed the feel, verified by measurement:\n\nSPREAD + STARS — FIELD scale 0.55->3.5 (~6.4x); closest suns 3->19 units apart (real empty space). Suns render as EMISSIVE glowing stars (self-lit core + additive corona/halo InstancedMesh)\n\nNO 8-MEASURE LURCH — the lurch was a first-order follow spiking on the first frame after each discrete blend update. Replaced with a critically-damped spring (smoothDamp, CAM_SMOOTH=0.7s, dt-driven/deterministic) easing the galaxy…\n\nCONTINUOUS ZOOM-LAND — unified the star-map and surface regions — the transit pose is one lerp in t (0 deep-space .. 1 touchdown) into a SURFACE_POSE that is byte-identical to the landed pose (C0 handoff, no teleport).\n\n• Preserved: fidelity model, band/faces/dancers/shaders/shadows/HUD, drummer-on-fill, front-on landing, teardown.\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=3756&path=694.13834,713.13867,675.13867&xdur=13.122\n\nb0360ae https://github.com/aboard-io/stellate/commit/b0360aececeb45669da845cfefe73db236de7a10",
   "date_published": "2026-07-12T04:22:18.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "99f3a6f8d4e237d66fd482dcd88bc7fd4db586d6",
   "url": "https://stellate.app/?genre=spokenword&seed=9040&path=196.11721,215.11754,177.11754&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/99f3a6f8d4e237d66fd482dcd88bc7fd4db586d6",
   "title": "Star-cruise: expressive puppet faces (rigged, animated, lip-sync)",
   "summary": "The faces were static masks. Now each alien has an animated face RIG on its (contiguous) head — sockets/pupils, upper+lower eyelids, brows, hinged jaw — driven every frame by a puppeteer:",
   "content_html": "<p>The faces were static masks. Now each alien has an animated face RIG on its (contiguous) head — sockets/pupils, upper+lower eyelids, brows, hinged jaw — driven every frame by a puppeteer:</p>\n<ul><li><strong>GAZE</strong> — pupils lerp toward a seeded wandering target biased to the camera (eased, no jitter) — reads as tracking; all eyes converge.</li><li><strong>BLINK</strong> — per-alien interval+phase (crowd never blinks in unison); lids sweep shut.</li><li><strong>BROWS</strong> — raise on onset-accent / loudness.</li><li><strong>MOUTH</strong> — the LEAD/vocalist LIP-SYNCS on its own ctx.notes onsets (wider on higher velocity), the DRUMMER grimaces on hard hits, bass/perc stay near-closed, pad hums, dancers bob with loudness; shape varies O &lt;-&gt; wide.</li></ul>\n<p><a href=\"https://stellate.app/?genre=spokenword&amp;seed=9040&amp;path=196.11721,215.11754,177.11754&amp;xdur=13.122\">▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/99f3a6f8d4e237d66fd482dcd88bc7fd4db586d6\">99f3a6f</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The faces were static masks. Now each alien has an animated face RIG on its (contiguous) head — sockets/pupils, upper+lower eyelids, brows, hinged jaw — driven every frame by a puppeteer:\n\nGAZE — pupils lerp toward a seeded wandering target biased to the camera (eased, no jitter) — reads as tracking; all eyes converge.\n\nBLINK — per-alien interval+phase (crowd never blinks in unison); lids sweep shut.\n\nBROWS — raise on onset-accent / loudness.\n\nMOUTH — the LEAD/vocalist LIP-SYNCS on its own ctx.notes onsets (wider on higher velocity), the DRUMMER grimaces on hard hits, bass/perc stay near-closed, pad hums, dancers bob with loudness; shape varies O <-> wide.\n\n▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices https://stellate.app/?genre=spokenword&seed=9040&path=196.11721,215.11754,177.11754&xdur=13.122\n\n99f3a6f https://github.com/aboard-io/stellate/commit/99f3a6f8d4e237d66fd482dcd88bc7fd4db586d6",
   "date_published": "2026-07-12T03:50:53.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "spokenword",
    "voice"
   ]
  },
  {
   "id": "184a5b046b79358f79528fdc0b5c4abcd1713376",
   "url": "https://stellate.app/?genre=folk&seed=7148&path=1854.5710,1873.5743,1835.5743&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/184a5b046b79358f79528fdc0b5c4abcd1713376",
   "title": "Star-cruise smooth galaxy + polish: clusters=stars, planets=genres, legible aliens",
   "summary": "Two-level galaxy navigation + the polish batch from live feedback:",
   "content_html": "<p>Two-level galaxy navigation + the polish batch from live feedback:</p>\n<ul><li><strong>GALAXY</strong> — 31 clusters = colored labeled SUNS (InstancedMesh, 1 draw call) at their star coords; 250 genres = PLANETS. Dominant genre's planet is the target.</li><li><strong>SMOOTH</strong> — removed the beat-driven camera bob/drift; damped frame-rate-independent transit follow (measured zero per-frame jitter).</li><li><strong>ALIENS</strong> — contiguous (neck/clavicle/shoulder/antenna-tip/sash close every gap); FLOOR collision (liftY so feet rest on ground, groove only hops up); PER-ALIEN colour/outfit (same-genre seeds -&gt; distinct palettes)</li><li><strong>SHADERS SIMPLIFIED</strong> — material vocab reduced to the readable set (no wireframe / no pure-mesh); post-fx capped to gentle levels (no over-processing).</li></ul>\n<p><em>Verified:</em> all 7 star-cruise suites + full-boot gate PASS first-hand (no crash, 🛸, starmap); GX1-7 (suns/no-ship/HUD/smooth/floor/drummer-on-fill/gated-dancers)…</p>\n<p><a href=\"https://stellate.app/?genre=folk&amp;seed=7148&amp;path=1854.5710,1873.5743,1835.5743&amp;xdur=13.122\">▶ Play it: Kettle Eschaton — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/184a5b046b79358f79528fdc0b5c4abcd1713376\">184a5b0</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Two-level galaxy navigation + the polish batch from live feedback:\n\nGALAXY — 31 clusters = colored labeled SUNS (InstancedMesh, 1 draw call) at their star coords; 250 genres = PLANETS. Dominant genre's planet is the target.\n\nSMOOTH — removed the beat-driven camera bob/drift; damped frame-rate-independent transit follow (measured zero per-frame jitter).\n\nALIENS — contiguous (neck/clavicle/shoulder/antenna-tip/sash close every gap); FLOOR collision (liftY so feet rest on ground, groove only hops up); PER-ALIEN colour/outfit (same-genre seeds -> distinct palettes)\n\nSHADERS SIMPLIFIED — material vocab reduced to the readable set (no wireframe / no pure-mesh); post-fx capped to gentle levels (no over-processing).\n\nVerified: all 7 star-cruise suites + full-boot gate PASS first-hand (no crash, 🛸, starmap); GX1-7 (suns/no-ship/HUD/smooth/floor/drummer-on-fill/gated-dancers)…\n\n▶ Play it: Kettle Eschaton — parked on the genre this change names https://stellate.app/?genre=folk&seed=7148&path=1854.5710,1873.5743,1835.5743&xdur=13.122\n\n184a5b0 https://github.com/aboard-io/stellate/commit/184a5b046b79358f79528fdc0b5c4abcd1713376",
   "date_published": "2026-07-12T03:22:44.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "folk",
    "harmony"
   ]
  },
  {
   "id": "874a9fbc49a528ddae3576e44c8dfeb76d5c2dbb",
   "url": "https://stellate.app/?genre=folk&seed=6716&path=1854.5710,1873.5743,1835.5743&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/874a9fbc49a528ddae3576e44c8dfeb76d5c2dbb",
   "title": "Gates: POS-coverage (CI) + full-app boot smoke — prevent the folk-class outage",
   "summary": "The folk outage (missing app/world.js POS -> boot-time relaxation crashed the renderer) shipped green because the star-cruise tests stub app/main.js. Two gates:",
   "content_html": "<p>The folk outage (missing app/world.js POS -&gt; boot-time relaxation crashed the renderer) shipped green because the star-cruise tests stub app/main.js. Two gates:</p>\n<ul><li>Docs: NEXT.md ship-law (POS-completeness outage law + full-boot in the battery); ADDING-A-GENRE.md (missing POS now noted as CRASHES, not just invisible).</li></ul>\n<p><em>Verified:</em> pos-coverage.js (plain node, CI-safe, wired into verify.sh as `poscover`): every GenreKernel.GENRES key MUST have an app/world.js POS entry, else FAIL.</p>\n<p><a href=\"https://stellate.app/?genre=folk&amp;seed=6716&amp;path=1854.5710,1873.5743,1835.5743&amp;xdur=13.122\">▶ Play it: Kettle Eschaton — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/874a9fbc49a528ddae3576e44c8dfeb76d5c2dbb\">874a9fb</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The folk outage (missing app/world.js POS -> boot-time relaxation crashed the renderer) shipped green because the star-cruise tests stub app/main.js. Two gates:\n\n• Docs: NEXT.md ship-law (POS-completeness outage law + full-boot in the battery); ADDING-A-GENRE.md (missing POS now noted as CRASHES, not just invisible).\n\nVerified: pos-coverage.js (plain node, CI-safe, wired into verify.sh as `poscover`): every GenreKernel.GENRES key MUST have an app/world.js POS entry, else FAIL.\n\n▶ Play it: Kettle Eschaton — parked on the genre this change names https://stellate.app/?genre=folk&seed=6716&path=1854.5710,1873.5743,1835.5743&xdur=13.122\n\n874a9fb https://github.com/aboard-io/stellate/commit/874a9fbc49a528ddae3576e44c8dfeb76d5c2dbb",
   "date_published": "2026-07-12T02:02:23.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "folk",
    "visual"
   ]
  },
  {
   "id": "d378711b261a6da4aef229777e17e7831edabcf7",
   "url": "https://stellate.app/?genre=folk&seed=5851&path=1854.5710,1873.5743,1835.5743&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/d378711b261a6da4aef229777e17e7831edabcf7",
   "title": "HOTFIX: bake folk into world.js POS — missing POS crashed the app boot",
   "summary": "v9 shipped the folk genre into GENRES/TARGETS but not into app/world.js POS. With POS incomplete, app/main.js's boot runs computeGenreLayout's synchronous force-directed relaxation instead of the complete-POS early-return; that relaxation collapses the layout and crashes the WebGL renderer at load",
   "content_html": "<p>v9 shipped the folk genre into GENRES/TARGETS but not into app/world.js POS. With POS incomplete, app/main.js's boot runs computeGenreLayout's synchronous force-directed relaxation instead of the complete-POS early-return; that relaxation collapses the layout and crashes the WebGL renderer at load</p>\n<ul><li>Fix: add folk:[1850,5750] to POS (acoustic/country cluster, min-sep clear) → POS covers all 250 genres → computeGenreLayout early-returns → clean boot.</li></ul>\n<p><em>Verified:</em> full-app headless boot probe (real main.js) now boots with NO crash, zero console errors, 🛸 chip present, all 4 chips, starmap rendered, window.__S + GenreKernel + __STARCRUISE all live…</p>\n<p><a href=\"https://stellate.app/?genre=folk&amp;seed=5851&amp;path=1854.5710,1873.5743,1835.5743&amp;xdur=13.122\">▶ Play it: Kettle Eschaton — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/d378711b261a6da4aef229777e17e7831edabcf7\">d378711</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "v9 shipped the folk genre into GENRES/TARGETS but not into app/world.js POS. With POS incomplete, app/main.js's boot runs computeGenreLayout's synchronous force-directed relaxation instead of the complete-POS early-return; that relaxation collapses the layout and crashes the WebGL renderer at load\n\n• Fix: add folk:[1850,5750] to POS (acoustic/country cluster, min-sep clear) → POS covers all 250 genres → computeGenreLayout early-returns → clean boot.\n\nVerified: full-app headless boot probe (real main.js) now boots with NO crash, zero console errors, 🛸 chip present, all 4 chips, starmap rendered, window.__S + GenreKernel + __STARCRUISE all live…\n\n▶ Play it: Kettle Eschaton — parked on the genre this change names https://stellate.app/?genre=folk&seed=5851&path=1854.5710,1873.5743,1835.5743&xdur=13.122\n\nd378711 https://github.com/aboard-io/stellate/commit/d378711b261a6da4aef229777e17e7831edabcf7",
   "date_published": "2026-07-12T01:54:26.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "folk",
    "drums"
   ]
  },
  {
   "id": "c98f7f855d0af82c04f440d25035af462773f931",
   "url": "https://stellate.app/?genre=bebop&seed=1709&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/c98f7f855d0af82c04f440d25035af462773f931",
   "title": "Star-cruise cinematic: fidelity-zoom camera, abstract planets, de-squared, motion-by-volume",
   "summary": "FIDELITY-DRIVEN CAMERA — the dominant blend weight drives one continuous zoom — deep space when mixed (viewport visible, 249 genre-planets as glowing balls at their GENRE_COORDS, one InstancedMesh draw call), descend/zoom as a genre's…",
   "content_html": "<ul><li><strong>FIDELITY-DRIVEN CAMERA</strong> — the dominant blend weight drives one continuous zoom — deep space when mixed (viewport visible, 249 genre-planets as glowing balls at their GENRE_COORDS, one InstancedMesh draw call), descend/zoom as a genre's…</li><li>MUSIC-VIDEO camera: when landed, a beat-synced auto-camera cuts (~2 bars) between per-alien closeups and wide stage shots; manual drag/pinch/WASD overrides.</li><li><strong>MOTION BY VOLUME</strong> — body groove scales with each voice's level (loud 0.11 vs quiet 0.02) — no more constant bopping; onset contact (the score) untouched.</li><li>Per-alien randomization (5 seeds -&gt; 5 distinct rigs); de-squared (round 234 vs box 7): sphere/claw/pincer/orb parts + floating light-balls; contrast (emissive orbs, colour spread 150-&gt;255)</li></ul>\n<p><em>Verified:</em> all star-cruise headless suites PASS first-hand (starcruise-run 65, alien, alien-dancer, backdrop, traits). No engine/render-path file touched.</p>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=1709&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/c98f7f855d0af82c04f440d25035af462773f931\">c98f7f8</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "FIDELITY-DRIVEN CAMERA — the dominant blend weight drives one continuous zoom — deep space when mixed (viewport visible, 249 genre-planets as glowing balls at their GENRE_COORDS, one InstancedMesh draw call), descend/zoom as a genre's…\n\n• MUSIC-VIDEO camera: when landed, a beat-synced auto-camera cuts (~2 bars) between per-alien closeups and wide stage shots; manual drag/pinch/WASD overrides.\n\nMOTION BY VOLUME — body groove scales with each voice's level (loud 0.11 vs quiet 0.02) — no more constant bopping; onset contact (the score) untouched.\n\n• Per-alien randomization (5 seeds -> 5 distinct rigs); de-squared (round 234 vs box 7): sphere/claw/pincer/orb parts + floating light-balls; contrast (emissive orbs, colour spread 150->255)\n\nVerified: all star-cruise headless suites PASS first-hand (starcruise-run 65, alien, alien-dancer, backdrop, traits). No engine/render-path file touched.\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=1709&path=694.13834,713.13867,675.13867&xdur=13.122\n\nc98f7f8 https://github.com/aboard-io/stellate/commit/c98f7f855d0af82c04f440d25035af462773f931",
   "date_published": "2026-07-12T01:36:09.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "936328e3b91a947bd4aee08e0a3be22d948cff63",
   "url": "https://stellate.app/?genre=folk&seed=9283&path=1854.5732,139.12607,1361.12568&xdur=0.099",
   "external_url": "https://github.com/aboard-io/stellate/commit/936328e3b91a947bd4aee08e0a3be22d948cff63",
   "title": "Music variety: rhythmic strumming + folk genre + new fills/sweeps/stabs",
   "summary": "The chord voicing was a dead-flat block struck once per 8-beat bar (only a sub-perceptual ~20ms micro-roll existed); fills/stabs/sweeps were small pools reused catalog-wide.",
   "content_html": "<p>The chord voicing was a dead-flat block struck once per 8-beat bar (only a sub-perceptual ~20ms micro-roll existed); fills/stabs/sweeps were small pools reused catalog-wide.</p>\n<ul><li><strong>STRUMMING</strong> — a real rhythmic down/up strum-comping articulation for chords/guitar (per-beat strum pattern, strum direction + spread + seeded humanize), opt-in — byte-identical for genres that don't use it.</li><li>FOLK genre: genre-specs/folk.json (acoustic strummed guitar, acoustic bass, light/brushed drums, warm production, modal/diatonic folk progressions) added via genre-tool</li><li><strong>MORE VARIETY</strong> — new transitions/drum fills, synth sweeps, and stabs; a curated subset wired into genres that were monotonous.</li><li>Byte-safe: additions are opt-in (segment-parity 8/8 BYTE-EQUAL, zero collateral drift). Intentional fixture drift scoped to EXACTLY the wired genres</li></ul>\n<p><a href=\"https://stellate.app/?genre=folk&amp;seed=9283&amp;path=1854.5732,139.12607,1361.12568&amp;xdur=0.099\">▶ Play it: Kettle Eschaton → Habanera Tribunal → Mirrorball Panopticon — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/936328e3b91a947bd4aee08e0a3be22d948cff63\">936328e</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The chord voicing was a dead-flat block struck once per 8-beat bar (only a sub-perceptual ~20ms micro-roll existed); fills/stabs/sweeps were small pools reused catalog-wide.\n\nSTRUMMING — a real rhythmic down/up strum-comping articulation for chords/guitar (per-beat strum pattern, strum direction + spread + seeded humanize), opt-in — byte-identical for genres that don't use it.\n\n• FOLK genre: genre-specs/folk.json (acoustic strummed guitar, acoustic bass, light/brushed drums, warm production, modal/diatonic folk progressions) added via genre-tool\n\nMORE VARIETY — new transitions/drum fills, synth sweeps, and stabs; a curated subset wired into genres that were monotonous.\n\n• Byte-safe: additions are opt-in (segment-parity 8/8 BYTE-EQUAL, zero collateral drift). Intentional fixture drift scoped to EXACTLY the wired genres\n\n▶ Play it: Kettle Eschaton → Habanera Tribunal → Mirrorball Panopticon — the three genres this change names, as one path https://stellate.app/?genre=folk&seed=9283&path=1854.5732,139.12607,1361.12568&xdur=0.099\n\n936328e https://github.com/aboard-io/stellate/commit/936328e3b91a947bd4aee08e0a3be22d948cff63",
   "date_published": "2026-07-11T23:51:37.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "folk",
    "tango",
    "disco",
    "harmony"
   ]
  },
  {
   "id": "c1cefc50b25e390444f3ec4a2fbd2014ffc5ed67",
   "url": "https://stellate.app/?genre=bebop&seed=3696&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/c1cefc50b25e390444f3ec4a2fbd2014ffc5ed67",
   "title": "Star-cruise: aliens are a real band — non-human species play the SCORE",
   "summary": "NON-HUMAN bodies: traits.body.plan (radial/cephalopod/insectoid/blob/stalk/ crystalline/floating-gas) + appendage budget + wild face family, all from the 23-feature vector.",
   "content_html": "<p>NON-HUMAN bodies: traits.body.plan (radial/cephalopod/insectoid/blob/stalk/ crystalline/floating-gas) + appendage budget + wild face family, all from the 23-feature vector.</p>\n<ul><li><strong>ONE ALIEN PER ACTIVE VOICE</strong> — a score bridge in starcruise.js resolves the playing state, calls E.buildEvents ONCE, buckets events per voice, and hands each alien its voice's real per-bar notes {t,pitch,dur,vel} + level.</li><li><strong>PLAYS THE SCORE / RESTS WHEN SILENT</strong> — the playing appendage contacts on real onsets (syncopation shows; pitch biases position; sustains hold across a note); a silent/quiet voice (level&lt;=0.05) rests — no fake beat-strikes.</li><li>3D GENRE-SPACE COORDS: app/starcruise/genre-coords.js (PCA-top3 of the feature centroids, deterministic, nearby=similar-sounding) + tools/feature-layout3d.js generator</li><li>Preserves the per-genre shaders (post-fx + material), shadows, dancers, nav, cockpit/fly-away. No engine/render-path file touched.</li></ul>\n<p><em>Verified:</em> starcruise-run onset-model H2/H3 (plays real onsets, rests when silent) + SB1-SB6 score bridge; traits/alien/alien-dancer green.</p>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=3696&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/c1cefc50b25e390444f3ec4a2fbd2014ffc5ed67\">c1cefc5</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "NON-HUMAN bodies: traits.body.plan (radial/cephalopod/insectoid/blob/stalk/ crystalline/floating-gas) + appendage budget + wild face family, all from the 23-feature vector.\n\nONE ALIEN PER ACTIVE VOICE — a score bridge in starcruise.js resolves the playing state, calls E.buildEvents ONCE, buckets events per voice, and hands each alien its voice's real per-bar notes {t,pitch,dur,vel} + level.\n\nPLAYS THE SCORE / RESTS WHEN SILENT — the playing appendage contacts on real onsets (syncopation shows; pitch biases position; sustains hold across a note); a silent/quiet voice (level<=0.05) rests — no fake beat-strikes.\n\n• 3D GENRE-SPACE COORDS: app/starcruise/genre-coords.js (PCA-top3 of the feature centroids, deterministic, nearby=similar-sounding) + tools/feature-layout3d.js generator\n\n• Preserves the per-genre shaders (post-fx + material), shadows, dancers, nav, cockpit/fly-away. No engine/render-path file touched.\n\nVerified: starcruise-run onset-model H2/H3 (plays real onsets, rests when silent) + SB1-SB6 score bridge; traits/alien/alien-dancer green.\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=3696&path=694.13834,713.13867,675.13867&xdur=13.122\n\nc1cefc5 https://github.com/aboard-io/stellate/commit/c1cefc50b25e390444f3ec4a2fbd2014ffc5ed67",
   "date_published": "2026-07-11T22:34:45.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "0fd2d071d8d1b0072bab52dc8f1600c35c82b56f",
   "url": "https://stellate.app/?genre=synthwave&seed=2161&path=859.9909,878.9942,840.9942&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/0fd2d071d8d1b0072bab52dc8f1600c35c82b56f",
   "title": "Fix 16-bar pad dropout: don't re-swell established voices on live-loop re-entry",
   "summary": "Repro (seed 70277 journey, sf=minimoog): pads dropped to ~0.28 of full every form cycle (~16-18 bars). Root cause (measured, not assumed",
   "content_html": "<p>Repro (seed 70277 journey, sf=minimoog): pads dropped to ~0.28 of full every form cycle (~16-18 bars). Root cause (measured, not assumed</p>\n<ul><li>Fix (live-path only): makeWalk gains per-voice loop memory — an established voice (whose run has ended at least once, incl. across the loop seam) re-enters at FULL via _voiceRun[v].noIn</li><li>Byte-safe: press/offline never sets _voiceRun, so fixtures are byte-stable (3861 hashes, NO recapture); matrix 249/249, segment-parity byte-equal, wavout-seam + verify.sh PASS.</li></ul>\n<p><a href=\"https://stellate.app/?genre=synthwave&amp;seed=2161&amp;path=859.9909,878.9942,840.9942&amp;xdur=13.122\">▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/0fd2d071d8d1b0072bab52dc8f1600c35c82b56f\">0fd2d07</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Repro (seed 70277 journey, sf=minimoog): pads dropped to ~0.28 of full every form cycle (~16-18 bars). Root cause (measured, not assumed\n\n• Fix (live-path only): makeWalk gains per-voice loop memory — an established voice (whose run has ended at least once, incl. across the loop seam) re-enters at FULL via _voiceRun[v].noIn\n\n• Byte-safe: press/offline never sets _voiceRun, so fixtures are byte-stable (3861 hashes, NO recapture); matrix 249/249, segment-parity byte-equal, wavout-seam + verify.sh PASS.\n\n▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration https://stellate.app/?genre=synthwave&seed=2161&path=859.9909,878.9942,840.9942&xdur=13.122\n\n0fd2d07 https://github.com/aboard-io/stellate/commit/0fd2d071d8d1b0072bab52dc8f1600c35c82b56f",
   "date_published": "2026-07-11T22:34:44.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "synthwave",
    "synth"
   ]
  },
  {
   "id": "0907ad7fc1cf7d38e5982a46796849082669c250",
   "url": "https://stellate.app/?genre=ambient&seed=2111&path=2103.13280,2122.13313,2084.13313&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/0907ad7fc1cf7d38e5982a46796849082669c250",
   "title": "Star-cruise: genre vector drives the shaders (post-fx + materials)",
   "summary": "A per-genre renderStyle (derived from the 23-feature vector, drawn last so it perturbs no earlier rng) drives two rendering layers so each planet renders in its own visual language:",
   "content_html": "<p>A per-genre renderStyle (derived from the 23-feature vector, drawn last so it perturbs no earlier rng) drives two rendering layers so each planet renders in its own visual language:</p>\n<ul><li>post-fx (app/starcruise/postfx.js): one fragment pass parameterized by renderStyle.post — selectable dither (none/ordered/onebit), posterize, per-channel grade, cheap single-pass bloom, chromatic aberration…</li><li>materials (alien.js + backdrop.js + ship.js): renderStyle.material selects flat/cel(toon)/iridescent(fresnel-hue)/wireframe/glitch(vertex-jitter+rgb-split) /matte — built once per style, reused (mobile-cheap).</li></ul>\n<p><em>Verified:</em> traits-run (6 genres -&gt; 6 distinct post bags, 4 materials, deterministic); starcruise-run ALL PASS incl RS1-RS3 (live uniforms match the landed genre, two genres render distinctly…</p>\n<p><a href=\"https://stellate.app/?genre=ambient&amp;seed=2111&amp;path=2103.13280,2122.13313,2084.13313&amp;xdur=13.122\">▶ Play it: Stationary Weather — a long-form genre — put the phone in your pocket and it keeps playing</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/0907ad7fc1cf7d38e5982a46796849082669c250\">0907ad7</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "A per-genre renderStyle (derived from the 23-feature vector, drawn last so it perturbs no earlier rng) drives two rendering layers so each planet renders in its own visual language:\n\n• post-fx (app/starcruise/postfx.js): one fragment pass parameterized by renderStyle.post — selectable dither (none/ordered/onebit), posterize, per-channel grade, cheap single-pass bloom, chromatic aberration…\n\n• materials (alien.js + backdrop.js + ship.js): renderStyle.material selects flat/cel(toon)/iridescent(fresnel-hue)/wireframe/glitch(vertex-jitter+rgb-split) /matte — built once per style, reused (mobile-cheap).\n\nVerified: traits-run (6 genres -> 6 distinct post bags, 4 materials, deterministic); starcruise-run ALL PASS incl RS1-RS3 (live uniforms match the landed genre, two genres render distinctly…\n\n▶ Play it: Stationary Weather — a long-form genre — put the phone in your pocket and it keeps playing https://stellate.app/?genre=ambient&seed=2111&path=2103.13280,2122.13313,2084.13313&xdur=13.122\n\n0907ad7 https://github.com/aboard-io/stellate/commit/0907ad7fc1cf7d38e5982a46796849082669c250",
   "date_published": "2026-07-11T21:23:55.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ambient",
    "mobile"
   ]
  },
  {
   "id": "bc3da11710fbe151c3415fe65765f2b2a8446d4d",
   "url": "https://stellate.app/?genre=bebop&seed=2543&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/bc3da11710fbe151c3415fe65765f2b2a8446d4d",
   "title": "Star-cruise round 2: front-centred nav, 800x600, richer aliens+city, fly-away cockpit, shadows (sw v7)",
   "summary": "From live feedback:",
   "content_html": "<p>From live feedback:</p>\n<ul><li><strong>NAV FIX</strong> — the landed camera was inheriting the star-map's raw world-X (drift). Clamped drift and seed the orbit FRONT-ON to the band centroid (yaw 0, gentle down-pitch).</li><li>RESOLUTION up a lot: internal target now near-native (~800x600, DPR/mobile capped), still light (geometry stays cheap).</li><li><strong>ALIENS</strong> — real faces (brow/snout/mouth that opens on the pulse, fangs, pupils), gently waving eyestalks, 3-segment limbs (shoulder/elbow/wrist), bolder contrast + a reused procedural texture, and background DANCERS…</li><li><strong>CITY</strong> — 11 polyhedra families (spires/domes/pyramids/ziggurats/tetra/octa…), blinking window/beacon lights, foliage — no more stacked cubes.</li></ul>\n<p><em>Verified:</em> test/starcruise-run.js 48/48 PASS (band plays on beat max-dist 0.000, nav orbit responds, dancers spawn, cockpit shows planet+genres, shadows on, exit works, clean teardown).</p>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=2543&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/bc3da11710fbe151c3415fe65765f2b2a8446d4d\">bc3da11</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "From live feedback:\n\nNAV FIX — the landed camera was inheriting the star-map's raw world-X (drift). Clamped drift and seed the orbit FRONT-ON to the band centroid (yaw 0, gentle down-pitch).\n\n• RESOLUTION up a lot: internal target now near-native (~800x600, DPR/mobile capped), still light (geometry stays cheap).\n\nALIENS — real faces (brow/snout/mouth that opens on the pulse, fangs, pupils), gently waving eyestalks, 3-segment limbs (shoulder/elbow/wrist), bolder contrast + a reused procedural texture, and background DANCERS…\n\nCITY — 11 polyhedra families (spires/domes/pyramids/ziggurats/tetra/octa…), blinking window/beacon lights, foliage — no more stacked cubes.\n\nVerified: test/starcruise-run.js 48/48 PASS (band plays on beat max-dist 0.000, nav orbit responds, dancers spawn, cockpit shows planet+genres, shadows on, exit works, clean teardown).\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=2543&path=694.13834,713.13867,675.13867&xdur=13.122\n\nbc3da11 https://github.com/aboard-io/stellate/commit/bc3da11710fbe151c3415fe65765f2b2a8446d4d",
   "date_published": "2026-07-11T20:51:18.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "58c9d4e12231d7451607819b139ea5f4cdd91a35",
   "url": "https://stellate.app/?genre=bebop&seed=6241&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/58c9d4e12231d7451607819b139ea5f4cdd91a35",
   "title": "Star-cruise: exit button + drag/pinch/WASD nav + 512x384 res (sw v6)",
   "summary": "Fixes from live feedback:",
   "content_html": "<p>Fixes from live feedback:</p>\n<ul><li><strong>EXIT</strong> — an always-visible ✕ button (z-60, thumb target, safe-area) + Escape + the 🛸 toggle — the overlay can no longer trap you; torn down on stop().</li><li><strong>NAV</strong> — hand-rolled orbit/dolly/pan (no new Three addon). Mouse drag = look, wheel = zoom; touch drag = look, two-finger pinch = zoom; WASD/arrows fly.</li><li><strong>RESOLUTION</strong> — internal target now aspect-fit, DPR/mobile-aware, capped long edge 512 (fine) / 448 (touch) — 512x384 on desktop; still dithered/crunchy PS1.</li><li>so the deploy lands on reload.</li></ul>\n<p><em>Verified:</em> test/starcruise-run.js 37/37 PASS (adds EXIT-click-stops-mode + 512x384 assertions; core band-plays-on-beat + clean-teardown preserved).</p>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=6241&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/58c9d4e12231d7451607819b139ea5f4cdd91a35\">58c9d4e</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Fixes from live feedback:\n\nEXIT — an always-visible ✕ button (z-60, thumb target, safe-area) + Escape + the 🛸 toggle — the overlay can no longer trap you; torn down on stop().\n\nNAV — hand-rolled orbit/dolly/pan (no new Three addon). Mouse drag = look, wheel = zoom; touch drag = look, two-finger pinch = zoom; WASD/arrows fly.\n\nRESOLUTION — internal target now aspect-fit, DPR/mobile-aware, capped long edge 512 (fine) / 448 (touch) — 512x384 on desktop; still dithered/crunchy PS1.\n\n• so the deploy lands on reload.\n\nVerified: test/starcruise-run.js 37/37 PASS (adds EXIT-click-stops-mode + 512x384 assertions; core band-plays-on-beat + clean-teardown preserved).\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=6241&path=694.13834,713.13867,675.13867&xdur=13.122\n\n58c9d4e https://github.com/aboard-io/stellate/commit/58c9d4e12231d7451607819b139ea5f4cdd91a35",
   "date_published": "2026-07-11T19:28:15.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "a9ea72bbdfbc2c319f8f73985b270f2ee8751b8c",
   "url": "https://stellate.app/?genre=lofi&seed=1299&path=263.9049,282.9082,244.9082&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/a9ea72bbdfbc2c319f8f73985b270f2ee8751b8c",
   "title": "Star-cruise 3D video mode: fly the genre map, land, alien BANDS play",
   "summary": "A new PS1-lofi 3D video mode (its own 🛸 button). The cockpit flies the genre star map; landing on a genre opens the ship and 1..N aliens assemble a BAND playing INVENTED procedural instruments with their appendages IN TIME with the music (2-bone IK",
   "content_html": "<p>A new PS1-lofi 3D video mode (its own 🛸 button). The cockpit flies the genre star map; landing on a genre opens the ship and 1..N aliens assemble a BAND playing INVENTED procedural instruments with their appendages IN TIME with the music (2-bone IK</p>\n<ul><li>Three.js r160 (MIT) vendored at vendor/three/, LAZY-loaded only on activation (dynamic import) so the zero-dependency initial/mobile load is untouched.</li><li>app/starcruise.js (controller) + app/starcruise/{traits,alien,backdrop,postfx, flight}.js; bright flat vivid lighting + a linear-&gt;sRGB post-fx fix.</li><li>OFF by default; no engine/render-path file touched (byte-identity safe); index.html +1 module line; docs/STARCRUISE.md.</li></ul>\n<p><em>Verified:</em> test/starcruise-run.js 30/30 PASS (band spawns on land, plays on the beat max-dist 0.000, clean teardown, no leak); traits deterministic + diverse; explorer-ui regression gate green.</p>\n<p><a href=\"https://stellate.app/?genre=lofi&amp;seed=1299&amp;path=263.9049,282.9082,244.9082&amp;xdur=13.122\">▶ Play it: Dust Census — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/a9ea72bbdfbc2c319f8f73985b270f2ee8751b8c\">a9ea72b</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "A new PS1-lofi 3D video mode (its own 🛸 button). The cockpit flies the genre star map; landing on a genre opens the ship and 1..N aliens assemble a BAND playing INVENTED procedural instruments with their appendages IN TIME with the music (2-bone IK\n\n• Three.js r160 (MIT) vendored at vendor/three/, LAZY-loaded only on activation (dynamic import) so the zero-dependency initial/mobile load is untouched.\n\n• app/starcruise.js (controller) + app/starcruise/{traits,alien,backdrop,postfx, flight}.js; bright flat vivid lighting + a linear->sRGB post-fx fix.\n\n• OFF by default; no engine/render-path file touched (byte-identity safe); index.html +1 module line; docs/STARCRUISE.md.\n\nVerified: test/starcruise-run.js 30/30 PASS (band spawns on land, plays on the beat max-dist 0.000, clean teardown, no leak); traits deterministic + diverse; explorer-ui regression gate green.\n\n▶ Play it: Dust Census — parked on the genre this change names https://stellate.app/?genre=lofi&seed=1299&path=263.9049,282.9082,244.9082&xdur=13.122\n\na9ea72b https://github.com/aboard-io/stellate/commit/a9ea72bbdfbc2c319f8f73985b270f2ee8751b8c",
   "date_published": "2026-07-11T19:15:12.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "lofi",
    "harmony"
   ]
  },
  {
   "id": "dc5dc84adab8ff9cefc4e56de2219587cb836f89",
   "url": "https://stellate.app/?genre=synthwave&seed=6642&path=859.9909,878.9942,840.9942&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/dc5dc84adab8ff9cefc4e56de2219587cb836f89",
   "title": "Video export: fix silent canvas taint + iOS guard + container/ext + hidden-tab",
   "summary": "docs/ROADMAP.md 2.1-2.3 statically-sound fixes:",
   "content_html": "<p>docs/ROADMAP.md 2.1-2.3 statically-sound fixes:</p>\n<ul><li>restrict the export take to LOCAL clips (a cross-origin drawImage silently taints the canvas; the old try/catch could not catch it) + fix the false &quot;caught and skipped&quot; header comment</li><li>feature-detect captureStream + a working audio track; disable on iOS/unsupported</li><li>derive the download extension AND Blob type from rec.mimeType (was hard-coded .webm)</li><li>refuse/pause recording when document.hidden (drop the false &quot;immune to throttling&quot;)</li></ul>\n<p><em>Verified:</em> video-export-probe PASS (168 frames, audio, graceful taint-degrade, hidden-tab refusal). Safari-mp4 / iOS-disable / real-remote-taint / real-throttle remain device-pending.</p>\n<p><a href=\"https://stellate.app/?genre=synthwave&amp;seed=6642&amp;path=859.9909,878.9942,840.9942&amp;xdur=13.122\">▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/dc5dc84adab8ff9cefc4e56de2219587cb836f89\">dc5dc84</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "docs/ROADMAP.md 2.1-2.3 statically-sound fixes:\n\n• restrict the export take to LOCAL clips (a cross-origin drawImage silently taints the canvas; the old try/catch could not catch it) + fix the false \"caught and skipped\" header comment\n\n• feature-detect captureStream + a working audio track; disable on iOS/unsupported\n\n• derive the download extension AND Blob type from rec.mimeType (was hard-coded .webm)\n\n• refuse/pause recording when document.hidden (drop the false \"immune to throttling\")\n\nVerified: video-export-probe PASS (168 frames, audio, graceful taint-degrade, hidden-tab refusal). Safari-mp4 / iOS-disable / real-remote-taint / real-throttle remain device-pending.\n\n▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration https://stellate.app/?genre=synthwave&seed=6642&path=859.9909,878.9942,840.9942&xdur=13.122\n\ndc5dc84 https://github.com/aboard-io/stellate/commit/dc5dc84adab8ff9cefc4e56de2219587cb836f89",
   "date_published": "2026-07-11T18:05:46.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "synthwave",
    "synth"
   ]
  },
  {
   "id": "ab8f3fe6ecb18a9e51210cbb1812920474e2bce6",
   "url": "https://stellate.app/?genre=synthwave&seed=2942&path=859.9909,878.9942,840.9942&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/ab8f3fe6ecb18a9e51210cbb1812920474e2bce6",
   "title": "Genre-intelligence layer: offline analysis/search tools + WARN gates + docs",
   "summary": "Build out docs/ROADMAP.md Workstream 1 — a read-only, byte-safe layer over the verifier's already-computed feature geometry and 249x249 confusion matrix (both previously computed then discarded).",
   "content_html": "<p>Build out docs/ROADMAP.md Workstream 1 — a read-only, byte-safe layer over the verifier's already-computed feature geometry and 249x249 confusion matrix (both previously computed then discarded).</p>\n<ul><li>engine/genre-geometry.js (centroids/dist/nearest/matrix; centroids byte-identical to validate-genres gateGeometry) + engine/genre-sim.js (node-safe anchor-Jaccard)</li><li>genre-verifier.js: persist matrix.json; opt-in scoreRow contributions (default path byte-unchanged)</li><li>Five WARN gates in validate-genres.js (never hard-fail): near-duplicate, margin-sentinel, determinism-fuzz, blend-monotonicity, dead-axis</li><li>14 CLI tools incl. target-blend (nearest-reachable solver), target-lint, leak-attribution, neighbors, genome-diff, coverage, feature-pca, feature-layout, mutate, genre-math, surprise, empty-space, lesson</li></ul>\n<p><a href=\"https://stellate.app/?genre=synthwave&amp;seed=2942&amp;path=859.9909,878.9942,840.9942&amp;xdur=13.122\">▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/ab8f3fe6ecb18a9e51210cbb1812920474e2bce6\">ab8f3fe</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Build out docs/ROADMAP.md Workstream 1 — a read-only, byte-safe layer over the verifier's already-computed feature geometry and 249x249 confusion matrix (both previously computed then discarded).\n\n• engine/genre-geometry.js (centroids/dist/nearest/matrix; centroids byte-identical to validate-genres gateGeometry) + engine/genre-sim.js (node-safe anchor-Jaccard)\n\n• genre-verifier.js: persist matrix.json; opt-in scoreRow contributions (default path byte-unchanged)\n\n• Five WARN gates in validate-genres.js (never hard-fail): near-duplicate, margin-sentinel, determinism-fuzz, blend-monotonicity, dead-axis\n\n• 14 CLI tools incl. target-blend (nearest-reachable solver), target-lint, leak-attribution, neighbors, genome-diff, coverage, feature-pca, feature-layout, mutate, genre-math, surprise, empty-space, lesson\n\n▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration https://stellate.app/?genre=synthwave&seed=2942&path=859.9909,878.9942,840.9942&xdur=13.122\n\nab8f3fe https://github.com/aboard-io/stellate/commit/ab8f3fe6ecb18a9e51210cbb1812920474e2bce6",
   "date_published": "2026-07-11T18:05:46.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "synthwave",
    "synth"
   ]
  },
  {
   "id": "8e5a0c50dbe8806caaf12beec1c65114a87eff68",
   "url": "https://stellate.app/?genre=gospel&seed=9064&path=171.7086,2178.5049,795.22032&xdur=0.043",
   "external_url": "https://github.com/aboard-io/stellate/commit/8e5a0c50dbe8806caaf12beec1c65114a87eff68",
   "title": "Six known Western genres: Yacht Rock, R&B, Gospel, Honky-Tonk, Country Pop, Alt-Country",
   "summary": "Paul asked for the genres we were weak on: \"yacht rock and r&b and gospel... country. Both new and old.",
   "content_html": "<p>Paul asked for the genres we were weak on: &quot;yacht rock and r&amp;b and gospel... country. Both new and old.</p>\n<ul><li>yachtrock — Rhodes/sax soft rock, neosoul/ii_v_i, ~112bpm, dry polished mix</li><li>rnb — slow-jam quiet-storm soul, solo-vox lead, ~72bpm</li><li>gospel — choir + church organ, big backbeat, wide reverb, major cadences, ~92bpm</li><li>honkytonk — steel-string/fiddle/harmonica, high-swing shuffle, dry spring, ~108bpm</li></ul>\n<p><em>Verified:</em> matrix 249/249 diagonal-dominant, validate PASS (0 fail), explorer-ui PASS, prove + matproof byte-identical (composition unchanged; new anchors only).</p>\n<p><a href=\"https://stellate.app/?genre=gospel&amp;seed=9064&amp;path=171.7086,2178.5049,795.22032&amp;xdur=0.043\">▶ Play it: Rapture Logistics → Last Call Cosmology → Tumbleweed Perihelion — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/8e5a0c50dbe8806caaf12beec1c65114a87eff68\">8e5a0c5</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul asked for the genres we were weak on: \"yacht rock and r&b and gospel... country. Both new and old.\n\n• yachtrock — Rhodes/sax soft rock, neosoul/ii_v_i, ~112bpm, dry polished mix\n\n• rnb — slow-jam quiet-storm soul, solo-vox lead, ~72bpm\n\n• gospel — choir + church organ, big backbeat, wide reverb, major cadences, ~92bpm\n\n• honkytonk — steel-string/fiddle/harmonica, high-swing shuffle, dry spring, ~108bpm\n\nVerified: matrix 249/249 diagonal-dominant, validate PASS (0 fail), explorer-ui PASS, prove + matproof byte-identical (composition unchanged; new anchors only).\n\n▶ Play it: Rapture Logistics → Last Call Cosmology → Tumbleweed Perihelion — the three genres this change names, as one path https://stellate.app/?genre=gospel&seed=9064&path=171.7086,2178.5049,795.22032&xdur=0.043\n\n8e5a0c5 https://github.com/aboard-io/stellate/commit/8e5a0c50dbe8806caaf12beec1c65114a87eff68",
   "date_published": "2026-07-11T15:12:48.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "gospel",
    "honkytonk",
    "altcountry",
    "explainer"
   ]
  },
  {
   "id": "beda65ddbd3a4dc15bc6cbc42e49f8b30213c8fd",
   "url": "https://stellate.app/?genre=vespers&seed=9965&path=2374.14021,121.16807,2335.13068&xdur=0.169",
   "external_url": "https://github.com/aboard-io/stellate/commit/beda65ddbd3a4dc15bc6cbc42e49f8b30213c8fd",
   "title": "Three international/modal genres: Silk Mist, Taqsim, Vespers",
   "summary": "Paul: \"I really expect more Chinese music and Arab music with those modalities and instrumentation. I expect Bulgarian chant.\"",
   "content_html": "<p>Paul: &quot;I really expect more Chinese music and Arab music with those modalities and instrumentation. I expect Bulgarian chant.&quot;</p>\n<ul><li>silkmist — Chinese pentatonic: koto/pan_flute/fiddle, mode_mixo/dorian/drone_min</li><li>taqsim — Arab hijaz maqam: sitar/oboe/pan_flute, hijaz/andalusian/phrygian</li><li>vespers — Bulgarian Orthodox chant: ahh_choir/ohh_voices, drone_min, no drums</li><li>Authored via tools/genre-tool.js create (specs in genre-specs/). vespers needed all-sampler voices + heavy shimmer reverb + acoustic/wash-weighted verify to break a matrix tie with the sourdough/termswave…</li></ul>\n<p><em>Verified:</em> matrix 243/243 diagonal-dominant, validate PASS, explorer-ui PASS, prove + matproof byte-identical (composition unchanged; new anchors only).</p>\n<p><a href=\"https://stellate.app/?genre=vespers&amp;seed=9965&amp;path=2374.14021,121.16807,2335.13068&amp;xdur=0.169\">▶ Play it: Basalt Antiphon → Sirocco Sermon → Jade Vapor Archive — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/beda65ddbd3a4dc15bc6cbc42e49f8b30213c8fd\">beda65d</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"I really expect more Chinese music and Arab music with those modalities and instrumentation. I expect Bulgarian chant.\"\n\n• silkmist — Chinese pentatonic: koto/pan_flute/fiddle, mode_mixo/dorian/drone_min\n\n• taqsim — Arab hijaz maqam: sitar/oboe/pan_flute, hijaz/andalusian/phrygian\n\n• vespers — Bulgarian Orthodox chant: ahh_choir/ohh_voices, drone_min, no drums\n\n• Authored via tools/genre-tool.js create (specs in genre-specs/). vespers needed all-sampler voices + heavy shimmer reverb + acoustic/wash-weighted verify to break a matrix tie with the sourdough/termswave…\n\nVerified: matrix 243/243 diagonal-dominant, validate PASS, explorer-ui PASS, prove + matproof byte-identical (composition unchanged; new anchors only).\n\n▶ Play it: Basalt Antiphon → Sirocco Sermon → Jade Vapor Archive — the three genres this change names, as one path https://stellate.app/?genre=vespers&seed=9965&path=2374.14021,121.16807,2335.13068&xdur=0.169\n\nbeda65d https://github.com/aboard-io/stellate/commit/beda65ddbd3a4dc15bc6cbc42e49f8b30213c8fd",
   "date_published": "2026-07-11T14:23:44.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vespers",
    "taqsim",
    "silkmist",
    "explainer"
   ]
  },
  {
   "id": "918ca208919238cfed972c82e16a13c3e3f56281",
   "url": "https://stellate.app/?genre=bigband&seed=6840&path=814.14134,833.14167,795.14167&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/918ca208919238cfed972c82e16a13c3e3f56281",
   "title": "Playhead scrub SNAPS to where you drop it + soundfont rides the URL",
   "summary": "PLAYHEAD — while live, retarget only GLIDED (never set playing), so a scrub moved the visual traveler but the audio slow-glided back toward the old spot.",
   "content_html": "<ul><li><strong>PLAYHEAD</strong> — while live, retarget only GLIDED (never set playing), so a scrub moved the visual traveler but the audio slow-glided back toward the old spot.</li><li><strong>SOUNDFONT IN URL</strong> — buildShareUrl adds ?sf=&lt;font&gt; (non-default), and the chosen font restores from ?sf= (over localStorage) on load — a shared link brings its Pure Analog / Pure FM / GM font with it.</li></ul>\n<p><em>Verified:</em> share-url PASS (13 checks); explorer-ui PASS (boot + live ride, zero errors — the targeting/starmap changes don't break playback).</p>\n<p><a href=\"https://stellate.app/?genre=bigband&amp;seed=6840&amp;path=814.14134,833.14167,795.14167&amp;xdur=13.122\">▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/918ca208919238cfed972c82e16a13c3e3f56281\">918ca20</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "PLAYHEAD — while live, retarget only GLIDED (never set playing), so a scrub moved the visual traveler but the audio slow-glided back toward the old spot.\n\nSOUNDFONT IN URL — buildShareUrl adds ?sf=<font> (non-default), and the chosen font restores from ?sf= (over localStorage) on load — a shared link brings its Pure Analog / Pure FM / GM font with it.\n\nVerified: share-url PASS (13 checks); explorer-ui PASS (boot + live ride, zero errors — the targeting/starmap changes don't break playback).\n\n▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments https://stellate.app/?genre=bigband&seed=6840&path=814.14134,833.14167,795.14167&xdur=13.122\n\n918ca20 https://github.com/aboard-io/stellate/commit/918ca208919238cfed972c82e16a13c3e3f56281",
   "date_published": "2026-07-11T13:48:14.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bigband",
    "sampler"
   ]
  },
  {
   "id": "527dae3779df701306eff709b9a5693b2da74e67",
   "url": "https://stellate.app/?genre=bigband&seed=3311&path=814.14134,833.14167,795.14167&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/527dae3779df701306eff709b9a5693b2da74e67",
   "title": "GM variety: use the whole palette — marimba/koto/dulcimer, not just winds",
   "summary": "Paul: \"use way more General MIDI — where are marimbas?? see how often we fall back on samples… we use so much of the same bases.\" We have 108 sampled instruments but the fallback (a synth-model voice remapped to a sample under sampledOnly) funneled almost every UNMAPPED generic synth…",
   "content_html": "<p>Paul: &quot;use way more General MIDI — where are marimbas?? see how often we fall back on samples… we use so much of the same bases.&quot; We have 108 sampled instruments but the fallback (a synth-model voice remapped to a sample under sampledOnly) funneled almost every UNMAPPED generic synth…</p>\n<ul><li>Widened SAMPLED_BASSES (+synth_bass_1/2), SAMPLED_PADS (+synth_strings_2/ atmosphere/fantasia/crystal/ice_rain), and every SAMPLED_LEAD family</li><li>UNMAPPED generic synths now draw a lead family PER SONG across the whole palette (was always &quot;wind&quot;), so marimba/vibraphone/koto/dulcimer/accordion actually appear.</li><li>RENDER-only (pickSampledId runs in forceSampled, not buildEvents) → fixtures 0-drift, matrix/segment-parity byte-identical; the instrument HEARD changes, the score does not.</li></ul>\n<p><a href=\"https://stellate.app/?genre=bigband&amp;seed=3311&amp;path=814.14134,833.14167,795.14167&amp;xdur=13.122\">▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/527dae3779df701306eff709b9a5693b2da74e67\">527dae3</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"use way more General MIDI — where are marimbas?? see how often we fall back on samples… we use so much of the same bases.\" We have 108 sampled instruments but the fallback (a synth-model voice remapped to a sample under sampledOnly) funneled almost every UNMAPPED generic synth…\n\n• Widened SAMPLED_BASSES (+synth_bass_1/2), SAMPLED_PADS (+synth_strings_2/ atmosphere/fantasia/crystal/ice_rain), and every SAMPLED_LEAD family\n\n• UNMAPPED generic synths now draw a lead family PER SONG across the whole palette (was always \"wind\"), so marimba/vibraphone/koto/dulcimer/accordion actually appear.\n\n• RENDER-only (pickSampledId runs in forceSampled, not buildEvents) → fixtures 0-drift, matrix/segment-parity byte-identical; the instrument HEARD changes, the score does not.\n\n▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments https://stellate.app/?genre=bigband&seed=3311&path=814.14134,833.14167,795.14167&xdur=13.122\n\n527dae3 https://github.com/aboard-io/stellate/commit/527dae3779df701306eff709b9a5693b2da74e67",
   "date_published": "2026-07-11T13:38:20.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bigband",
    "sampler"
   ]
  },
  {
   "id": "c4e72927d25f7c2c5371dc825ed770930f49d3ec",
   "url": "https://stellate.app/?genre=vaporwave&seed=7687&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/c4e72927d25f7c2c5371dc825ed770930f49d3ec",
   "title": "Fix the broken video export: real frames + audio (was 1 frame, no sound)",
   "summary": "Paul: the recorded video was \"one frame for an hour with no audio, VLC crashes.\" My earlier headless probe only checked blob size + a SEPARATE press-path rms, not the actual video content — so it missed all of this.",
   "content_html": "<p>Paul: the recorded video was &quot;one frame for an hour with no audio, VLC crashes.&quot; My earlier headless probe only checked blob size + a SEPARATE press-path rms, not the actual video content — so it missed all of this.</p>\n<ul><li><strong>NO AUDIO</strong> — on DESKTOP the classic graph has no msDest (userGain → destination directly), so audioStream() returned null and there was no mediaEl to fall back to.</li><li>ONE FRAME / hour-long / VLC-crash: the capture canvas was OFF-DOM and driven by requestAnimationFrame — captureStream produced a near-static, malformed stream.</li></ul>\n<p><em>Verified:</em> (test/video-export-probe.js, now checks REAL content): 6 s take → 171 composited frames, audio track present, vp9+opus webm, 536 KB (was a static ~200 KB).</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=7687&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — the brightest, most processed corner of the space</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/c4e72927d25f7c2c5371dc825ed770930f49d3ec\">c4e7292</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: the recorded video was \"one frame for an hour with no audio, VLC crashes.\" My earlier headless probe only checked blob size + a SEPARATE press-path rms, not the actual video content — so it missed all of this.\n\nNO AUDIO — on DESKTOP the classic graph has no msDest (userGain → destination directly), so audioStream() returned null and there was no mediaEl to fall back to.\n\n• ONE FRAME / hour-long / VLC-crash: the capture canvas was OFF-DOM and driven by requestAnimationFrame — captureStream produced a near-static, malformed stream.\n\nVerified: (test/video-export-probe.js, now checks REAL content): 6 s take → 171 composited frames, audio track present, vp9+opus webm, 536 KB (was a static ~200 KB).\n\n▶ Play it: Food Court Eternity — the brightest, most processed corner of the space https://stellate.app/?genre=vaporwave&seed=7687&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\nc4e7292 https://github.com/aboard-io/stellate/commit/c4e72927d25f7c2c5371dc825ed770930f49d3ec",
   "date_published": "2026-07-11T13:27:57.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "mix"
   ]
  },
  {
   "id": "c572b820aaf08fcadef280bdb5810576bf323ca6",
   "url": "https://stellate.app/?genre=vaporwave&seed=9792&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/c572b820aaf08fcadef280bdb5810576bf323ca6",
   "title": "Found-at-90%: the vocal/chop/bed layer only plays at a dominant genre",
   "summary": "Paul: \"whatever vocal or sampled chops and found sound beds are in use stop playing unless a genre is at 90% or above.\" The found layer now renders only when the top blend weight >= 90% (genreMeta.t <= 0.1)",
   "content_html": "<p>Paul: &quot;whatever vocal or sampled chops and found sound beds are in use stop playing unless a genre is at 90% or above.&quot; The found layer now renders only when the top blend weight &gt;= 90% (genreMeta.t &lt;= 0.1)</p>\n<p><em>Verified:</em> fixtures 0-drift; vaporwave found events = 10 at t=0/0.05, 0 at t=0.3.</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=9792&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/c572b820aaf08fcadef280bdb5810576bf323ca6\">c572b82</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"whatever vocal or sampled chops and found sound beds are in use stop playing unless a genre is at 90% or above.\" The found layer now renders only when the top blend weight >= 90% (genreMeta.t <= 0.1)\n\nVerified: fixtures 0-drift; vaporwave found events = 10 at t=0/0.05, 0 at t=0.3.\n\n▶ Play it: Food Court Eternity — parked on the genre this change names https://stellate.app/?genre=vaporwave&seed=9792&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\nc572b82 https://github.com/aboard-io/stellate/commit/c572b820aaf08fcadef280bdb5810576bf323ca6",
   "date_published": "2026-07-11T13:21:04.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "voice"
   ]
  },
  {
   "id": "9d829f9bd738b212bae4ebbb5e80d4d530541914",
   "url": "https://stellate.app/?genre=bebop&seed=4451&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/9d829f9bd738b212bae4ebbb5e80d4d530541914",
   "title": "Fix batch (Paul's stellate.app feedback) + SW bump so it actually lands",
   "summary": "The v2 service worker served a load-behind copy, so Paul saw NONE of the recent batch. Bump VERSION v2→v3 (purges old cache on activate → a deploy lands in ONE load).",
   "content_html": "<p>The v2 service worker served a load-behind copy, so Paul saw NONE of the recent batch. Bump VERSION v2→v3 (purges old cache on activate → a deploy lands in ONE load).</p>\n<ul><li>VAPOR is a real &quot;empty mall&quot; now: as vapor 0→1 the master MUFFLES (lowpass 20k→1.4k), RECEDES (dry ducks) and drenches in a big DIFFUSE hall wash (3 lowpassed comb delays + pre-delay)</li><li><strong>SYNTH-FONT DRUMS</strong> — a synth font now drops the sampled kit so drums are the engine's synthesized voices too. The real gate was applySampledOnly (runs on every track() and re-added a kit after toState)</li><li>HOVERING VOICES fixed on the analog font: voice/choir/string/organ instruments (and all PADS) route to the POLY juno60 instead of collapsing on mono modeld.</li><li>Renamed the fonts: MiniMoog → &quot;Pure Analog&quot;, DX7 → &quot;Pure FM&quot;; small oscillator drift floor across the analog voices.</li></ul>\n<p><em>Verified:</em> fixtures 0-drift (all opt-in/live-only); synthfont probe both fonts render audio (Pure Analog rms .074 / Pure FM .080), pads poly juno60 at render; video probe PASS (201KB webm + progress)</p>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=4451&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/9d829f9bd738b212bae4ebbb5e80d4d530541914\">9d829f9</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The v2 service worker served a load-behind copy, so Paul saw NONE of the recent batch. Bump VERSION v2→v3 (purges old cache on activate → a deploy lands in ONE load).\n\n• VAPOR is a real \"empty mall\" now: as vapor 0→1 the master MUFFLES (lowpass 20k→1.4k), RECEDES (dry ducks) and drenches in a big DIFFUSE hall wash (3 lowpassed comb delays + pre-delay)\n\nSYNTH-FONT DRUMS — a synth font now drops the sampled kit so drums are the engine's synthesized voices too. The real gate was applySampledOnly (runs on every track() and re-added a kit after toState)\n\n• HOVERING VOICES fixed on the analog font: voice/choir/string/organ instruments (and all PADS) route to the POLY juno60 instead of collapsing on mono modeld.\n\n• Renamed the fonts: MiniMoog → \"Pure Analog\", DX7 → \"Pure FM\"; small oscillator drift floor across the analog voices.\n\nVerified: fixtures 0-drift (all opt-in/live-only); synthfont probe both fonts render audio (Pure Analog rms .074 / Pure FM .080), pads poly juno60 at render; video probe PASS (201KB webm + progress)\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=4451&path=694.13834,713.13867,675.13867&xdur=13.122\n\n9d829f9 https://github.com/aboard-io/stellate/commit/9d829f9bd738b212bae4ebbb5e80d4d530541914",
   "date_published": "2026-07-11T13:16:30.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "55938b0316f266c1be71b4f8c4e007b0d4d3dc28",
   "url": "https://stellate.app/?genre=transitwave&seed=8739&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/55938b0316f266c1be71b4f8c4e007b0d4d3dc28",
   "title": "E: video export — record the live visuals + audio to webm (no ffmpeg)",
   "summary": "A ⏺ video button in the ⚙ panel records the live journey to a .webm: the built-in MediaRecorder muxes a canvas.captureStream() with the engine's master audio track — NO 30MB ffmpeg.wasm dependency.",
   "content_html": "<p>A ⏺ video button in the ⚙ panel records the live journey to a .webm: the built-in MediaRecorder muxes a canvas.captureStream() with the engine's master audio track — NO 30MB ffmpeg.wasm dependency.</p>\n<ul><li>Compositor (app/video-export.js): the found-VIDEO front clip cover-fit as the background with the DEMOSCENE screen-blended on top — the same look as live.</li><li>live.js handle: audioStream() → the msDest MediaStream (falls back to mediaEl.captureStream).</li><li>video-layer.js: _frontEl() → the front &lt;video&gt; for compositing.</li><li>panels.js: the ⏺/⏹ button. video-export.js: recordVideo/stopVideo (+ window.__VIDEO).</li></ul>\n<p><em>Verified:</em> test/video-export-probe.js (browser) — button present, MediaRecorder supported, a 4s take returns a valid ~421 KB webm (vp9) of the composited visuals + audio.</p>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=8739&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/55938b0316f266c1be71b4f8c4e007b0d4d3dc28\">55938b0</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "A ⏺ video button in the ⚙ panel records the live journey to a .webm: the built-in MediaRecorder muxes a canvas.captureStream() with the engine's master audio track — NO 30MB ffmpeg.wasm dependency.\n\n• Compositor (app/video-export.js): the found-VIDEO front clip cover-fit as the background with the DEMOSCENE screen-blended on top — the same look as live.\n\n• live.js handle: audioStream() → the msDest MediaStream (falls back to mediaEl.captureStream).\n\n• video-layer.js: _frontEl() → the front <video> for compositing.\n\n• panels.js: the ⏺/⏹ button. video-export.js: recordVideo/stopVideo (+ window.__VIDEO).\n\nVerified: test/video-export-probe.js (browser) — button present, MediaRecorder supported, a 4s take returns a valid ~421 KB webm (vp9) of the composited visuals + audio.\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=8739&path=749.12536,768.12569,730.12569&xdur=13.122\n\n55938b0 https://github.com/aboard-io/stellate/commit/55938b0316f266c1be71b4f8c4e007b0d4d3dc28",
   "date_published": "2026-07-11T12:39:34.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "dbc5c9ffc76af800befb875263eb54bd5c6fa916",
   "url": "https://stellate.app/?genre=bigband&seed=8607&path=814.14134,833.14167,795.14167&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/dbc5c9ffc76af800befb875263eb54bd5c6fa916",
   "title": "B: synth fonts — MiniMoog + DX7 in the ⚙ soundfont switcher",
   "summary": "Two NON-sample fonts: picking one routes the sampler lane to a Faust synth voice per GM instrument instead of samples (Wendy-Carlos \"Switched-On Bach\"). Built-in, no assets — pure params, registered into the kernel at init.",
   "content_html": "<p>Two NON-sample fonts: picking one routes the sampler lane to a Faust synth voice per GM instrument instead of samples (Wendy-Carlos &quot;Switched-On Bach&quot;). Built-in, no assets — pure params, registered into the kernel at init.</p>\n<ul><li>MiniMoog (analog): each GM instrument → a modeld voice by tonal family (brass/ reed/flute/string/mallet/pluck/bass/key/organ/voice/lead → cutoff/env/attack/ sustain/drive/oscMix/drift).</li><li><strong>DX7</strong> — each GM instrument → a Yamaha DX7 ROM patch ({algorithm,params} from the 114-patch bank) — per-instrument where the ROM names it (SITAR/KOTO/MARIMBA/ ACCORDION/…), else the family patch…</li><li>genre-kernel: instrMerge() (default toState path) + _sampledOnlySpec() (the allSampled path) emit {model:modeld/juno60/dx7, params/dx7} instead of zones when a synth font is active</li><li>state-engine forceSampled: one branch — spec.synth → route to the existing modeld/dx7 dispatch (level/sends/register ride through the recipe).</li></ul>\n<p><a href=\"https://stellate.app/?genre=bigband&amp;seed=8607&amp;path=814.14134,833.14167,795.14167&amp;xdur=13.122\">▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/dbc5c9ffc76af800befb875263eb54bd5c6fa916\">dbc5c9f</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Two NON-sample fonts: picking one routes the sampler lane to a Faust synth voice per GM instrument instead of samples (Wendy-Carlos \"Switched-On Bach\"). Built-in, no assets — pure params, registered into the kernel at init.\n\n• MiniMoog (analog): each GM instrument → a modeld voice by tonal family (brass/ reed/flute/string/mallet/pluck/bass/key/organ/voice/lead → cutoff/env/attack/ sustain/drive/oscMix/drift).\n\nDX7 — each GM instrument → a Yamaha DX7 ROM patch ({algorithm,params} from the 114-patch bank) — per-instrument where the ROM names it (SITAR/KOTO/MARIMBA/ ACCORDION/…), else the family patch…\n\n• genre-kernel: instrMerge() (default toState path) + _sampledOnlySpec() (the allSampled path) emit {model:modeld/juno60/dx7, params/dx7} instead of zones when a synth font is active\n\n• state-engine forceSampled: one branch — spec.synth → route to the existing modeld/dx7 dispatch (level/sends/register ride through the recipe).\n\n▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments https://stellate.app/?genre=bigband&seed=8607&path=814.14134,833.14167,795.14167&xdur=13.122\n\ndbc5c9f https://github.com/aboard-io/stellate/commit/dbc5c9ffc76af800befb875263eb54bd5c6fa916",
   "date_published": "2026-07-11T12:26:35.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bigband",
    "sampler"
   ]
  },
  {
   "id": "952a0e9128bb5963b9bddcfe3081605162627167",
   "url": "https://stellate.app/?genre=bossanova&seed=4425&path=575.11711,694.13856,1016.6498&xdur=0.102",
   "external_url": "https://github.com/aboard-io/stellate/commit/952a0e9128bb5963b9bddcfe3081605162627167",
   "title": "D.2: a little Bach-minuet chromaticism — applied dominants",
   "summary": "Paul: \"just a little. Think Bach minuet.\" The harmony organ had secondary dominants gated at adventure>0.5, so most genres never reached them and read as all-diatonic.",
   "content_html": "<p>Paul: &quot;just a little. Think Bach minuet.&quot; The harmony organ had secondary dominants gated at adventure&gt;0.5, so most genres never reached them and read as all-diatonic.</p>\n<ul><li>Dose: +~0.75–1.3 non-diatonic tones per 8-bar phrase in the mild-to-mid band (≈ one applied-dominant moment per phrase), tapering at the extremes.</li></ul>\n<p><em>Verified:</em> theory.test (monotonicity + voice-leading motion &lt;3st both green); pipes; verify.sh with FRESH matrix (theory.js isn't a cache-key) = 240/240 diagonal-dominant</p>\n<p><a href=\"https://stellate.app/?genre=bossanova&amp;seed=4425&amp;path=575.11711,694.13856,1016.6498&amp;xdur=0.102\">▶ Play it: Saudade Observatory → Mercury Interrogation → Voltage Curtsy — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/952a0e9128bb5963b9bddcfe3081605162627167\">952a0e9</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"just a little. Think Bach minuet.\" The harmony organ had secondary dominants gated at adventure>0.5, so most genres never reached them and read as all-diatonic.\n\n• Dose: +~0.75–1.3 non-diatonic tones per 8-bar phrase in the mild-to-mid band (≈ one applied-dominant moment per phrase), tapering at the extremes.\n\nVerified: theory.test (monotonicity + voice-leading motion <3st both green); pipes; verify.sh with FRESH matrix (theory.js isn't a cache-key) = 240/240 diagonal-dominant\n\n▶ Play it: Saudade Observatory → Mercury Interrogation → Voltage Curtsy — the three genres this change names, as one path https://stellate.app/?genre=bossanova&seed=4425&path=575.11711,694.13856,1016.6498&xdur=0.102\n\n952a0e9 https://github.com/aboard-io/stellate/commit/952a0e9128bb5963b9bddcfe3081605162627167",
   "date_published": "2026-07-11T11:56:57.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bossanova",
    "bebop",
    "oscillatorminuet",
    "harmony"
   ]
  },
  {
   "id": "90d7f6fce599ffc6b95203daba7c0298bbb872b0",
   "url": "https://stellate.app/?genre=jungle&seed=1572&path=1718.20526,196.11743&xdur=0.084",
   "external_url": "https://github.com/aboard-io/stellate/commit/90d7f6fce599ffc6b95203daba7c0298bbb872b0",
   "title": "D.1: instrument-register law — good octave choices, no shrieks",
   "summary": "Each melodic instrument now has a MUSICAL playing range (MIDI), and a note outside it octave-FOLDS into range (whole octaves → same pitch class → stays in key) — so a flute never climbs into its shriek register and a bass never rumbles below its body.",
   "content_html": "<p>Each melodic instrument now has a MUSICAL playing range (MIDI), and a note outside it octave-FOLDS into range (whole octaves → same pitch class → stays in key) — so a flute never climbs into its shriek register and a bass never rumbles below its body.</p>\n<ul><li>fixtures: 0 drift (composition identical)</li><li>segment-parity: ALL byte-equal (press==stream both fold; covers jungle sampler trombone, spokenword sax, etc.)</li><li>Ranges are my best musical judgment (comfortable ceilings a touch under the physical extreme, where the shriek lives) — tunable per instrument by ear.</li></ul>\n<p><em>Verified:</em> verify.sh + theory/pipes/speech: green</p>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=1572&amp;path=1718.20526,196.11743&amp;xdur=0.084\">▶ Play it: Barometric Stampede → Dial Tone Prophet — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/90d7f6fce599ffc6b95203daba7c0298bbb872b0\">90d7f6f</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Each melodic instrument now has a MUSICAL playing range (MIDI), and a note outside it octave-FOLDS into range (whole octaves → same pitch class → stays in key) — so a flute never climbs into its shriek register and a bass never rumbles below its body.\n\n• fixtures: 0 drift (composition identical)\n\n• segment-parity: ALL byte-equal (press==stream both fold; covers jungle sampler trombone, spokenword sax, etc.)\n\n• Ranges are my best musical judgment (comfortable ceilings a touch under the physical extreme, where the shriek lives) — tunable per instrument by ear.\n\nVerified: verify.sh + theory/pipes/speech: green\n\n▶ Play it: Barometric Stampede → Dial Tone Prophet — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=jungle&seed=1572&path=1718.20526,196.11743&xdur=0.084\n\n90d7f6f https://github.com/aboard-io/stellate/commit/90d7f6fce599ffc6b95203daba7c0298bbb872b0",
   "date_published": "2026-07-11T11:45:48.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "spokenword",
    "voice"
   ]
  },
  {
   "id": "e3643c7d4de3c3807bd1f855f5288a76d3c3107d",
   "url": "https://stellate.app/?genre=jungle&seed=6117&path=1718.20504,1737.20537,1699.20537&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/e3643c7d4de3c3807bd1f855f5288a76d3c3107d",
   "title": "C.1: global VAPOR slider — live-only \"walking through a mall\" master EQ",
   "summary": "A new ⚙ slider (0..100%) that, on the live classic exploreLive graph, rolls the top off (high-shelf down to -16 dB) and adds a short reverb wash, both scaled by vapor 0..1 — the department-store-muffle knob.",
   "content_html": "<p>A new ⚙ slider (0..100%) that, on the live classic exploreLive graph, rolls the top off (high-shelf down to -16 dB) and adds a short reverb wash, both scaled by vapor 0..1 — the department-store-muffle knob.</p>\n<ul><li>live.js: vaporShelf + a small feedback-delay reverb send in the output graph; handle.setVapor(v) -&gt; applyVapor rides both, click-free.</li><li>app/live.js: setVapor wrapper (persist + apply), vapor passed in exploreLive opts.</li><li>state.js: _vapor persisted like _masterVol. panels.js: the slider row.</li><li>WAV-first mobile path plays a plain &lt;audio&gt; (no live graph), so vapor rides the classic/desktop path only</li></ul>\n<p><em>Verified:</em> (test/vapor-loopexport-probe.js, browser): slider persists to localStorage, S.vapor tracks, riding it on the RUNNING graph throws nothing and playback survives.</p>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=6117&amp;path=1718.20504,1737.20537,1699.20537&amp;xdur=13.122\">▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/e3643c7d4de3c3807bd1f855f5288a76d3c3107d\">e3643c7</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "A new ⚙ slider (0..100%) that, on the live classic exploreLive graph, rolls the top off (high-shelf down to -16 dB) and adds a short reverb wash, both scaled by vapor 0..1 — the department-store-muffle knob.\n\n• live.js: vaporShelf + a small feedback-delay reverb send in the output graph; handle.setVapor(v) -> applyVapor rides both, click-free.\n\n• app/live.js: setVapor wrapper (persist + apply), vapor passed in exploreLive opts.\n\n• state.js: _vapor persisted like _masterVol. panels.js: the slider row.\n\n• WAV-first mobile path plays a plain <audio> (no live graph), so vapor rides the classic/desktop path only\n\nVerified: (test/vapor-loopexport-probe.js, browser): slider persists to localStorage, S.vapor tracks, riding it on the RUNNING graph throws nothing and playback survives.\n\n▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide https://stellate.app/?genre=jungle&seed=6117&path=1718.20504,1737.20537,1699.20537&xdur=13.122\n\ne3643c7 https://github.com/aboard-io/stellate/commit/e3643c7d4de3c3807bd1f855f5288a76d3c3107d",
   "date_published": "2026-07-11T05:10:24.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "drums"
   ]
  },
  {
   "id": "17ab74c91b9cc83c2d7e82f55e07f4ade129f1a0",
   "url": "https://stellate.app/?genre=vaporwave&seed=6521&path=1679.4415,292.16891,1718.20526&xdur=0.046",
   "external_url": "https://github.com/aboard-io/stellate/commit/17ab74c91b9cc83c2d7e82f55e07f4ade129f1a0",
   "title": "F.3: make the whole-path AUDIO export walk async + chunked",
   "summary": "buildLoopPlan walked the entire loop SYNCHRONOUSLY on the main thread (same shape as the MIDI-export crash) — a long path's per-bar stateAt + buildEvents + voice units froze the page.",
   "content_html": "<p>buildLoopPlan walked the entire loop SYNCHRONOUSLY on the main thread (same shape as the MIDI-export crash) — a long path's per-bar stateAt + buildEvents + voice units froze the page.</p>\n<p><em>Verified:</em> journey.js/export.js parse; simulate-path gate green (walk intact). Browser export-flow verification to follow at the checkpoint.</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=6521&amp;path=1679.4415,292.16891,1718.20526&amp;xdur=0.046\">▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/17ab74c91b9cc83c2d7e82f55e07f4ade129f1a0\">17ab74c</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "buildLoopPlan walked the entire loop SYNCHRONOUSLY on the main thread (same shape as the MIDI-export crash) — a long path's per-bar stateAt + buildEvents + voice units froze the page.\n\nVerified: journey.js/export.js parse; simulate-path gate green (walk intact). Browser export-flow verification to follow at the checkpoint.\n\n▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix https://stellate.app/?genre=vaporwave&seed=6521&path=1679.4415,292.16891,1718.20526&xdur=0.046\n\n17ab74c https://github.com/aboard-io/stellate/commit/17ab74c91b9cc83c2d7e82f55e07f4ade129f1a0",
   "date_published": "2026-07-11T04:57:27.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "jazz",
    "jungle",
    "travel"
   ]
  },
  {
   "id": "38c3a6bd07b685d7bbf7263006d20e7124ca2e1d",
   "url": "https://stellate.app/?genre=vaporwave&seed=3301&path=1679.4415,292.16891&xdur=0.06",
   "external_url": "https://github.com/aboard-io/stellate/commit/38c3a6bd07b685d7bbf7263006d20e7124ca2e1d",
   "title": "A.2: granular repitch on far-from-root sampled notes (opt-in, render-only)",
   "summary": "The sampler's granular capability now fires automatically: a unit that sets recipe `granular:<st>` takes the formant/length-preserving grain path for any note whose playback rate stretches the sample >= that many semitones from a zone root — instead of chipmunk/rumble rate-stretch.",
   "content_html": "<p>The sampler's granular capability now fires automatically: a unit that sets recipe `granular:&lt;st&gt;` takes the formant/length-preserving grain path for any note whose playback rate stretches the sample &gt;= that many semitones from a zone root — instead of chipmunk/rumble rate-stretch.</p>\n<ul><li>sampler.js mixPCM: threshold trigger off sends.granularOverSt (per-note rate); n.granular still forces it. Absent =&gt; byte-identical.</li><li>state-engine samplerUnit: carry granularOverSt/grainSec from the recipe.</li><li>press.js + stream-renderer.js: pass the config through the per-unit sends.</li><li>genre-kernel: RECIPE_PASSTHROUGH set so the scalar flag blends WITHOUT an inRange draw — the composition is byte-identical, ONLY the render changes (vaporwave events+features unchanged; just the new state key).</li></ul>\n<p><em>Verified:</em> fixtures scoped to vaporwave state only (events/features identical); verify.sh green; segment-parity ALL byte-equal incl vaporwave_s1. ~13% of the sax notes trigger.</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=3301&amp;path=1679.4415,292.16891&amp;xdur=0.06\">▶ Play it: Food Court Eternity → Smoke Arithmetic — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/38c3a6bd07b685d7bbf7263006d20e7124ca2e1d\">38c3a6b</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The sampler's granular capability now fires automatically: a unit that sets recipe `granular:<st>` takes the formant/length-preserving grain path for any note whose playback rate stretches the sample >= that many semitones from a zone root — instead of chipmunk/rumble rate-stretch.\n\n• sampler.js mixPCM: threshold trigger off sends.granularOverSt (per-note rate); n.granular still forces it. Absent => byte-identical.\n\n• state-engine samplerUnit: carry granularOverSt/grainSec from the recipe.\n\n• press.js + stream-renderer.js: pass the config through the per-unit sends.\n\n• genre-kernel: RECIPE_PASSTHROUGH set so the scalar flag blends WITHOUT an inRange draw — the composition is byte-identical, ONLY the render changes (vaporwave events+features unchanged; just the new state key).\n\nVerified: fixtures scoped to vaporwave state only (events/features identical); verify.sh green; segment-parity ALL byte-equal incl vaporwave_s1. ~13% of the sax notes trigger.\n\n▶ Play it: Food Court Eternity → Smoke Arithmetic — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=vaporwave&seed=3301&path=1679.4415,292.16891&xdur=0.06\n\n38c3a6b https://github.com/aboard-io/stellate/commit/38c3a6bd07b685d7bbf7263006d20e7124ca2e1d",
   "date_published": "2026-07-11T04:57:12.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "jazz",
    "found"
   ]
  },
  {
   "id": "b4dc8a5ed410d392a6a339fc421dc2a7cd491bde",
   "url": "https://stellate.app/?genre=techno&seed=3222&path=1956.22436,1101.20850,1718.20526&xdur=0.339",
   "external_url": "https://github.com/aboard-io/stellate/commit/b4dc8a5ed410d392a6a339fc421dc2a7cd491bde",
   "title": "Scratch: opt in ALL chops-role genres by default (Paul: \"lots of other genres\")",
   "summary": "\"Opt in lots of other genres for scratching anywhere we loop a vocal chop / synth sample / instrumental.\" The CHOPS found role IS that looped material, so it now scratches BY DEFAULT catalog-wide: foundScratch defaults 0.14 for role \"chops\" (explicit per-genre `scratch:` still overrides, incl 0 to…",
   "content_html": "<p>&quot;Opt in lots of other genres for scratching anywhere we loop a vocal chop / synth sample / instrumental.&quot; The CHOPS found role IS that looped material, so it now scratches BY DEFAULT catalog-wide: foundScratch defaults 0.14 for role &quot;chops&quot; (explicit per-genre `scratch:` still overrides, incl 0 to…</p>\n<ul><li>BREAK (drum loops) is deliberately NOT defaulted — it's not the vocal/instrumental material named; boombap/jungle keep their explicit stutter-only scratch.</li><li>Byte-scope: drift is EXACTLY the chops/break genres (bed/narration/response/buried untouched, byte-identical); fixtures recaptured.</li></ul>\n<p><a href=\"https://stellate.app/?genre=techno&amp;seed=3222&amp;path=1956.22436,1101.20850,1718.20526&amp;xdur=0.339\">▶ Play it: Unblinking Interval → Congregation Furnace → Barometric Stampede — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/b4dc8a5ed410d392a6a339fc421dc2a7cd491bde\">b4dc8a5</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "\"Opt in lots of other genres for scratching anywhere we loop a vocal chop / synth sample / instrumental.\" The CHOPS found role IS that looped material, so it now scratches BY DEFAULT catalog-wide: foundScratch defaults 0.14 for role \"chops\" (explicit per-genre `scratch:` still overrides, incl 0 to…\n\n• BREAK (drum loops) is deliberately NOT defaulted — it's not the vocal/instrumental material named; boombap/jungle keep their explicit stutter-only scratch.\n\n• Byte-scope: drift is EXACTLY the chops/break genres (bed/narration/response/buried untouched, byte-identical); fixtures recaptured.\n\n▶ Play it: Unblinking Interval → Congregation Furnace → Barometric Stampede — the three genres this change names, as one path https://stellate.app/?genre=techno&seed=3222&path=1956.22436,1101.20850,1718.20526&xdur=0.339\n\nb4dc8a5 https://github.com/aboard-io/stellate/commit/b4dc8a5ed410d392a6a339fc421dc2a7cd491bde",
   "date_published": "2026-07-11T04:24:42.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "techno",
    "house",
    "jungle",
    "voice"
   ]
  },
  {
   "id": "fd145a3a97ce097e4b31f719864be59892c1ecd5",
   "url": "https://stellate.app/?genre=jungle&seed=4466&path=1718.20526,205.10395,90.9508&xdur=0.067",
   "external_url": "https://github.com/aboard-io/stellate/commit/fd145a3a97ce097e4b31f719864be59892c1ecd5",
   "title": "Wire scratch to FIRE: turntablist genres get the fwd↔back hand (A.1)",
   "summary": "The f.scratch DSP capability landed opt-in/silent last session; this makes it play. Deterministic + occasional, biased to turntablist genres, byte-safe when absent (a dedicated +7333 rng stream never drawn unless a genre opts in).",
   "content_html": "<p>The f.scratch DSP capability landed opt-in/silent last session; this makes it play. Deterministic + occasional, biased to turntablist genres, byte-safe when absent (a dedicated +7333 rng stream never drawn unless a genre opts in).</p>\n<ul><li>csd-engine: stamp scratch on chops-role hits (crateflip's soul-78 chops) and ONLY the break-role stutter ornament (boombap/jungle amen) so the drum groove stays intact; carry scratch onto srcById conditionally.</li><li>state-engine: plumb scratch through the chop push -&gt; found-player sees f.scratch.</li><li>found-player: the real-time FoundLive.chop pre-renders the triangle scrub into a one-shot buffer (WebAudio has no scrub primitive), same math as mixPCM.</li><li>genre-kernel: foundScratch pulled from the found parent; scratch key baked onto opted sources only. crateflip 0.18 (chops), boombap 0.5 / jungle 0.45 (stutter).</li></ul>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=4466&amp;path=1718.20526,205.10395,90.9508&amp;xdur=0.067\">▶ Play it: Barometric Stampede → Milk Crate Scripture → Shellac Excavation — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/fd145a3a97ce097e4b31f719864be59892c1ecd5\">fd145a3</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The f.scratch DSP capability landed opt-in/silent last session; this makes it play. Deterministic + occasional, biased to turntablist genres, byte-safe when absent (a dedicated +7333 rng stream never drawn unless a genre opts in).\n\n• csd-engine: stamp scratch on chops-role hits (crateflip's soul-78 chops) and ONLY the break-role stutter ornament (boombap/jungle amen) so the drum groove stays intact; carry scratch onto srcById conditionally.\n\n• state-engine: plumb scratch through the chop push -> found-player sees f.scratch.\n\n• found-player: the real-time FoundLive.chop pre-renders the triangle scrub into a one-shot buffer (WebAudio has no scrub primitive), same math as mixPCM.\n\n• genre-kernel: foundScratch pulled from the found parent; scratch key baked onto opted sources only. crateflip 0.18 (chops), boombap 0.5 / jungle 0.45 (stutter).\n\n▶ Play it: Barometric Stampede → Milk Crate Scripture → Shellac Excavation — the three genres this change names, as one path https://stellate.app/?genre=jungle&seed=4466&path=1718.20526,205.10395,90.9508&xdur=0.067\n\nfd145a3 https://github.com/aboard-io/stellate/commit/fd145a3a97ce097e4b31f719864be59892c1ecd5",
   "date_published": "2026-07-11T04:15:35.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "boombap",
    "crateflip",
    "voice"
   ]
  },
  {
   "id": "d62db0da89cd76ee874e61afce6583a36f49a44a",
   "url": "https://stellate.app/?genre=synthwave&seed=6618&path=859.9909,878.9942,840.9942&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/d62db0da89cd76ee874e61afce6583a36f49a44a",
   "title": "Fix MIDI-still-crashing: async chunked whole-path walk (don't freeze the page)",
   "summary": "The 2048-bar cap wasn't enough: the per-bar stateAt (K.mix genre blend) + buildEvents cost ~11ms, so a long loop's SYNCHRONOUS main-thread walk blocked the UI ~22s and the browser killed the page.",
   "content_html": "<p>The 2048-bar cap wasn't enough: the per-bar stateAt (K.mix genre blend) + buildEvents cost ~11ms, so a long loop's SYNCHRONOUS main-thread walk blocked the UI ~22s and the browser killed the page.</p>\n<p><a href=\"https://stellate.app/?genre=synthwave&amp;seed=6618&amp;path=859.9909,878.9942,840.9942&amp;xdur=13.122\">▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/d62db0da89cd76ee874e61afce6583a36f49a44a\">d62db0d</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The 2048-bar cap wasn't enough: the per-bar stateAt (K.mix genre blend) + buildEvents cost ~11ms, so a long loop's SYNCHRONOUS main-thread walk blocked the UI ~22s and the browser killed the page.\n\n▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration https://stellate.app/?genre=synthwave&seed=6618&path=859.9909,878.9942,840.9942&xdur=13.122\n\nd62db0d https://github.com/aboard-io/stellate/commit/d62db0da89cd76ee874e61afce6583a36f49a44a",
   "date_published": "2026-07-11T03:29:22.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "synthwave",
    "synth"
   ]
  },
  {
   "id": "def90c618427e2a97229e6b64d39c9fd900fb365",
   "url": "https://stellate.app/?genre=jungle&seed=5585&path=1718.20504,1737.20537,1699.20537&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/def90c618427e2a97229e6b64d39c9fd900fb365",
   "title": "Found-player: scratch mode on chops (turntablist read-rate DSP)",
   "summary": "Paul: 'introduce the concept of scratching on samples from time to time.' Adds an opt-in f.scratch to the chop renderer: the read position oscillates forward<->reverse (a triangle wave, constant rate each direction) over passes across a small of the buffer, so the chop plays fwd/back/fwd",
   "content_html": "<p>Paul: 'introduce the concept of scratching on samples from time to time.' Adds an opt-in f.scratch to the chop renderer: the read position oscillates forward&lt;-&gt;reverse (a triangle wave, constant rate each direction) over passes across a small of the buffer, so the chop plays fwd/back/fwd</p>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=5585&amp;path=1718.20504,1737.20537,1699.20537&amp;xdur=13.122\">▶ Play it: Barometric Stampede — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/def90c618427e2a97229e6b64d39c9fd900fb365\">def90c6</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: 'introduce the concept of scratching on samples from time to time.' Adds an opt-in f.scratch to the chop renderer: the read position oscillates forward<->reverse (a triangle wave, constant rate each direction) over passes across a small of the buffer, so the chop plays fwd/back/fwd\n\n▶ Play it: Barometric Stampede — parked on the genre this change names https://stellate.app/?genre=jungle&seed=5585&path=1718.20504,1737.20537,1699.20537&xdur=13.122\n\ndef90c6 https://github.com/aboard-io/stellate/commit/def90c618427e2a97229e6b64d39c9fd900fb365",
   "date_published": "2026-07-11T03:18:09.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "found"
   ]
  },
  {
   "id": "3ee93f5dd1a0d28d7591fb17dee079c2544459fe",
   "url": "https://stellate.app/?genre=vaporwave&seed=8501&path=1679.4415,292.16891,1718.20526&xdur=0.046",
   "external_url": "https://github.com/aboard-io/stellate/commit/3ee93f5dd1a0d28d7591fb17dee079c2544459fe",
   "title": "Playhead scrub: use constant-pace distance math so ▶ resumes where you dragged",
   "summary": "Paul: 'when I move the playhead and hit play it just goes back where it was.' dragPlayhead still computed the measure as (seg+t)*pace (old fixed-bars-per-leg), but goLive's drop-in and the URL now use the distance-based travelForBar",
   "content_html": "<p>Paul: 'when I move the playhead and hit play it just goes back where it was.' dragPlayhead still computed the measure as (seg+t)*pace (old fixed-bars-per-leg), but goLive's drop-in and the URL now use the distance-based travelForBar</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=8501&amp;path=1679.4415,292.16891,1718.20526&amp;xdur=0.046\">▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/3ee93f5dd1a0d28d7591fb17dee079c2544459fe\">3ee93f5</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: 'when I move the playhead and hit play it just goes back where it was.' dragPlayhead still computed the measure as (seg+t)*pace (old fixed-bars-per-leg), but goLive's drop-in and the URL now use the distance-based travelForBar\n\n▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix https://stellate.app/?genre=vaporwave&seed=8501&path=1679.4415,292.16891,1718.20526&xdur=0.046\n\n3ee93f5 https://github.com/aboard-io/stellate/commit/3ee93f5dd1a0d28d7591fb17dee079c2544459fe",
   "date_published": "2026-07-11T03:13:11.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "jazz",
    "jungle",
    "travel"
   ]
  },
  {
   "id": "baffad0fee6008d1ede9f0aad23eb88a6f7b39b8",
   "url": "https://stellate.app/?genre=vaporwave&seed=9159&path=1679.4415,292.16891,1718.20526&xdur=0.046",
   "external_url": "https://github.com/aboard-io/stellate/commit/baffad0fee6008d1ede9f0aad23eb88a6f7b39b8",
   "title": "Viz: bigger everything, more vertical spread, larger fx chips",
   "summary": "Paul: 'make everything bigger and spread it out vertically' + 'the effects don't need to be tiny.' Taller blend bar (16->22) + rolls (34->50px), larger radar (262->340), roomier section + lane spacing (tlrow .85rem->1.45rem), bigger lane titles (16->19) + labels, wider graph (380->470)",
   "content_html": "<p>Paul: 'make everything bigger and spread it out vertically' + 'the effects don't need to be tiny.' Taller blend bar (16-&gt;22) + rolls (34-&gt;50px), larger radar (262-&gt;340), roomier section + lane spacing (tlrow .85rem-&gt;1.45rem), bigger lane titles (16-&gt;19) + labels, wider graph (380-&gt;470)</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=9159&amp;path=1679.4415,292.16891,1718.20526&amp;xdur=0.046\">▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/baffad0fee6008d1ede9f0aad23eb88a6f7b39b8\">baffad0</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: 'make everything bigger and spread it out vertically' + 'the effects don't need to be tiny.' Taller blend bar (16->22) + rolls (34->50px), larger radar (262->340), roomier section + lane spacing (tlrow .85rem->1.45rem), bigger lane titles (16->19) + labels, wider graph (380->470)\n\n▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix https://stellate.app/?genre=vaporwave&seed=9159&path=1679.4415,292.16891,1718.20526&xdur=0.046\n\nbaffad0 https://github.com/aboard-io/stellate/commit/baffad0fee6008d1ede9f0aad23eb88a6f7b39b8",
   "date_published": "2026-07-11T03:13:11.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "jazz",
    "jungle",
    "travel"
   ]
  },
  {
   "id": "94a23b9913868fbd0bfef5481cd3e7c97ee8839b",
   "url": "https://stellate.app/?genre=reedrush&seed=4057&path=845.15053,864.15086,826.15086&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/94a23b9913868fbd0bfef5481cd3e7c97ee8839b",
   "title": "reedrush: lead forward + softer kick (fix quiet lead + kick transient click)",
   "summary": "Paul at a reedrush location: 'lead too quiet' + 'bass drum processed, bad transient click.' Lead: the kpluck arp was level 0.62-0.74 but drowning in its OWN delay (dsend 0.46-0.56) — level up to 0.84-0.98, dsend halved to 0.2-0.32 so the dry lead sits up front.",
   "content_html": "<p>Paul at a reedrush location: 'lead too quiet' + 'bass drum processed, bad transient click.' Lead: the kpluck arp was level 0.62-0.74 but drowning in its OWN delay (dsend 0.46-0.56) — level up to 0.84-0.98, dsend halved to 0.2-0.32 so the dry lead sits up front.</p>\n<p><a href=\"https://stellate.app/?genre=reedrush&amp;seed=4057&amp;path=845.15053,864.15086,826.15086&amp;xdur=13.122\">▶ Play it: Bulrush Cyclotron — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/94a23b9913868fbd0bfef5481cd3e7c97ee8839b\">94a23b9</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul at a reedrush location: 'lead too quiet' + 'bass drum processed, bad transient click.' Lead: the kpluck arp was level 0.62-0.74 but drowning in its OWN delay (dsend 0.46-0.56) — level up to 0.84-0.98, dsend halved to 0.2-0.32 so the dry lead sits up front.\n\n▶ Play it: Bulrush Cyclotron — parked on the genre this change names https://stellate.app/?genre=reedrush&seed=4057&path=845.15053,864.15086,826.15086&xdur=13.122\n\n94a23b9 https://github.com/aboard-io/stellate/commit/94a23b9913868fbd0bfef5481cd3e7c97ee8839b",
   "date_published": "2026-07-11T03:13:11.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "reedrush",
    "drums"
   ]
  },
  {
   "id": "1688b6a7b54ffc3f014599d476ceb3dbd0f98ecc",
   "url": "https://stellate.app/?genre=bebop&seed=5407&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/1688b6a7b54ffc3f014599d476ceb3dbd0f98ecc",
   "title": "Viz zoom is independent + contain the iOS pinch-escape",
   "summary": "Paul: (a) 'let me zoom in on the viz but don't let it affect the other modes' zoom' and (b) 'max zoom-out + keep going in iOS gets me to my browser tabs.' (a) The viz view gets its own VIZ={k,ox,oy} zoom state (CSS transform on #inside), completely separate from the map's ZOOM",
   "content_html": "<p>Paul: (a) 'let me zoom in on the viz but don't let it affect the other modes' zoom' and (b) 'max zoom-out + keep going in iOS gets me to my browser tabs.' (a) The viz view gets its own VIZ={k,ox,oy} zoom state (CSS transform on #inside), completely separate from the map's ZOOM</p>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=5407&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/1688b6a7b54ffc3f014599d476ceb3dbd0f98ecc\">1688b6a</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: (a) 'let me zoom in on the viz but don't let it affect the other modes' zoom' and (b) 'max zoom-out + keep going in iOS gets me to my browser tabs.' (a) The viz view gets its own VIZ={k,ox,oy} zoom state (CSS transform on #inside), completely separate from the map's ZOOM\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=5407&path=694.13834,713.13867,675.13867&xdur=13.122\n\n1688b6a https://github.com/aboard-io/stellate/commit/1688b6a7b54ffc3f014599d476ceb3dbd0f98ecc",
   "date_published": "2026-07-11T03:02:08.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "132df3bb13abce8a6c42f7f19c319d53d1edbab1",
   "url": "https://stellate.app/?genre=vaporwave&seed=2619&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/132df3bb13abce8a6c42f7f19c319d53d1edbab1",
   "title": "Viz graph: draw the fx chain as CONNECTED, directed nodes",
   "summary": "Paul: 'show how the node graph works... I can't see how they're connected.' The per-voice chips were a floating list; now the chain is drawn as connected nodes with arrowheads — voice -> fx1 -> fx2 -> ... -> sends -> delay -> reverb -> master -> out — so the signal flow reads as a directed graph.",
   "content_html": "<p>Paul: 'show how the node graph works... I can't see how they're connected.' The per-voice chips were a floating list; now the chain is drawn as connected nodes with arrowheads — voice -&gt; fx1 -&gt; fx2 -&gt; ... -&gt; sends -&gt; delay -&gt; reverb -&gt; master -&gt; out — so the signal flow reads as a directed graph.</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=2619&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — the brightest, most processed corner of the space</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/132df3bb13abce8a6c42f7f19c319d53d1edbab1\">132df3b</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: 'show how the node graph works... I can't see how they're connected.' The per-voice chips were a floating list; now the chain is drawn as connected nodes with arrowheads — voice -> fx1 -> fx2 -> ... -> sends -> delay -> reverb -> master -> out — so the signal flow reads as a directed graph.\n\n▶ Play it: Food Court Eternity — the brightest, most processed corner of the space https://stellate.app/?genre=vaporwave&seed=2619&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\n132df3b https://github.com/aboard-io/stellate/commit/132df3bb13abce8a6c42f7f19c319d53d1edbab1",
   "date_published": "2026-07-11T03:02:08.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "mix"
   ]
  },
  {
   "id": "bd3d6e434e8f0dd895733b2117ed98073081778f",
   "url": "https://stellate.app/?genre=vaporwave&seed=8747&path=1679.4415,292.16891,1718.20526&xdur=0.046",
   "external_url": "https://github.com/aboard-io/stellate/commit/bd3d6e434e8f0dd895733b2117ed98073081778f",
   "title": "Fix browser crash: cap the whole-path walk length (constant-pace regression)",
   "summary": "Paul hit a crash downloading MIDI from a large-coordinate loop URL (?m=787, path spanning y~16k-19k). Constant-pace made the loop length perim/speed",
   "content_html": "<p>Paul hit a crash downloading MIDI from a large-coordinate loop URL (?m=787, path spanning y~16k-19k). Constant-pace made the loop length perim/speed</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=8747&amp;path=1679.4415,292.16891,1718.20526&amp;xdur=0.046\">▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/bd3d6e434e8f0dd895733b2117ed98073081778f\">bd3d6e4</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul hit a crash downloading MIDI from a large-coordinate loop URL (?m=787, path spanning y~16k-19k). Constant-pace made the loop length perim/speed\n\n▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix https://stellate.app/?genre=vaporwave&seed=8747&path=1679.4415,292.16891,1718.20526&xdur=0.046\n\nbd3d6e4 https://github.com/aboard-io/stellate/commit/bd3d6e434e8f0dd895733b2117ed98073081778f",
   "date_published": "2026-07-11T03:02:08.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "jazz",
    "jungle",
    "travel"
   ]
  },
  {
   "id": "671f77eb10cfaca4b3780b14b8208dd5c9d8602a",
   "url": "https://stellate.app/?genre=transitwave&seed=1563&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/671f77eb10cfaca4b3780b14b8208dd5c9d8602a",
   "title": "Sampler: granular repitch mode (Pass 1 of the Faust-fun program)",
   "summary": "Paul: 'I really miss granular repitching when it made sense.' Adds an opt-in n.granular mode to the sampler's mixPCM: it decouples pitch from duration",
   "content_html": "<p>Paul: 'I really miss granular repitching when it made sense.' Adds an opt-in n.granular mode to the sampler's mixPCM: it decouples pitch from duration</p>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=1563&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/671f77eb10cfaca4b3780b14b8208dd5c9d8602a\">671f77e</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: 'I really miss granular repitching when it made sense.' Adds an opt-in n.granular mode to the sampler's mixPCM: it decouples pitch from duration\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=1563&path=749.12536,768.12569,730.12569&xdur=13.122\n\n671f77e https://github.com/aboard-io/stellate/commit/671f77eb10cfaca4b3780b14b8208dd5c9d8602a",
   "date_published": "2026-07-11T02:50:51.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "904b8493cd85c7cae3a65c9bc92ebc68a3979331",
   "url": "https://stellate.app/?genre=vaporwave&seed=4243&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/904b8493cd85c7cae3a65c9bc92ebc68a3979331",
   "title": "Viz graph: show each voice's FULL fx chain as chips, not just declared inserts",
   "summary": "Paul: 'there were tons of effects listed and none showing up in the nodes — were they not actually on?' They were on — the graph only drew u.inserts (<=2), dropping the real channel-strip DSP (HPF/LPF/EQ/saturate/comp/chorus/…) that the old per-lane line listed via fxLabels.",
   "content_html": "<p>Paul: 'there were tons of effects listed and none showing up in the nodes — were they not actually on?' They were on — the graph only drew u.inserts (&lt;=2), dropping the real channel-strip DSP (HPF/LPF/EQ/saturate/comp/chorus/…) that the old per-lane line listed via fxLabels.</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=4243&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — the brightest, most processed corner of the space</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/904b8493cd85c7cae3a65c9bc92ebc68a3979331\">904b849</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: 'there were tons of effects listed and none showing up in the nodes — were they not actually on?' They were on — the graph only drew u.inserts (<=2), dropping the real channel-strip DSP (HPF/LPF/EQ/saturate/comp/chorus/…) that the old per-lane line listed via fxLabels.\n\n▶ Play it: Food Court Eternity — the brightest, most processed corner of the space https://stellate.app/?genre=vaporwave&seed=4243&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\n904b849 https://github.com/aboard-io/stellate/commit/904b8493cd85c7cae3a65c9bc92ebc68a3979331",
   "date_published": "2026-07-11T02:35:33.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "mix"
   ]
  },
  {
   "id": "8d3aca52b32131ad8e305d6fda66449c93dacb2c",
   "url": "https://stellate.app/?genre=longshipwhip&seed=2338&path=576.3328,430.3999&xdur=1.092",
   "external_url": "https://github.com/aboard-io/stellate/commit/8d3aca52b32131ad8e305d6fda66449c93dacb2c",
   "title": "longshipwhip: thick death metal, not dry thrash — big reverb + ringing chords",
   "summary": "Paul: 'I expect big reverb and chords on longshipwhip; it's not supposed to be that dry, supposed to feel thick like death metal.' Eased the tail-choking higain gate on lead + pads (0.6-0.8 -> 0.3-0.48) so the riff and the power-chord wall RING OUT",
   "content_html": "<p>Paul: 'I expect big reverb and chords on longshipwhip; it's not supposed to be that dry, supposed to feel thick like death metal.' Eased the tail-choking higain gate on lead + pads (0.6-0.8 -&gt; 0.3-0.48) so the riff and the power-chord wall RING OUT</p>\n<p><a href=\"https://stellate.app/?genre=longshipwhip&amp;seed=2338&amp;path=576.3328,430.3999&amp;xdur=1.092\">▶ Play it: Maelstrom Rowing Club → Molten Horsepower — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/8d3aca52b32131ad8e305d6fda66449c93dacb2c\">8d3aca5</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: 'I expect big reverb and chords on longshipwhip; it's not supposed to be that dry, supposed to feel thick like death metal.' Eased the tail-choking higain gate on lead + pads (0.6-0.8 -> 0.3-0.48) so the riff and the power-chord wall RING OUT\n\n▶ Play it: Maelstrom Rowing Club → Molten Horsepower — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=longshipwhip&seed=2338&path=576.3328,430.3999&xdur=1.092\n\n8d3aca5 https://github.com/aboard-io/stellate/commit/8d3aca52b32131ad8e305d6fda66449c93dacb2c",
   "date_published": "2026-07-11T02:23:56.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "longshipwhip",
    "heavymetal",
    "harmony"
   ]
  },
  {
   "id": "270832cb9862f5bba6856e9522fed00f4ca303e9",
   "url": "https://stellate.app/?genre=jungle&seed=9715&path=1718.20504,1737.20537,1699.20537&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/270832cb9862f5bba6856e9522fed00f4ca303e9",
   "title": "Inside viz: translucent graph nodes (read the send curves beneath)",
   "summary": "Paul: 'make the nodes translucent so I can read beneath them.' The voice boxes were the only opaque node (fill .85); dropped to .42 so the send curves passing behind them show through.",
   "content_html": "<p>Paul: 'make the nodes translucent so I can read beneath them.' The voice boxes were the only opaque node (fill .85); dropped to .42 so the send curves passing behind them show through.</p>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=9715&amp;path=1718.20504,1737.20537,1699.20537&amp;xdur=13.122\">▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/270832cb9862f5bba6856e9522fed00f4ca303e9\">270832c</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: 'make the nodes translucent so I can read beneath them.' The voice boxes were the only opaque node (fill .85); dropped to .42 so the send curves passing behind them show through.\n\n▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide https://stellate.app/?genre=jungle&seed=9715&path=1718.20504,1737.20537,1699.20537&xdur=13.122\n\n270832c https://github.com/aboard-io/stellate/commit/270832cb9862f5bba6856e9522fed00f4ca303e9",
   "date_published": "2026-07-11T02:23:56.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "drums"
   ]
  },
  {
   "id": "0ffd38aac780ff473a367068052e6e4b23dfd4b0",
   "url": "https://stellate.app/?genre=vaporwave&seed=9354&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/0ffd38aac780ff473a367068052e6e4b23dfd4b0",
   "title": "Inside viz: effects are graph nodes only, not a line under each roll",
   "summary": "Paul: 'the effects listed under the piano rolls — don't put them there, they should be nodes in the graph.' Removed the per-lane .vz-fxline caption; the mixing node graph beneath the rolls (insert chips + reverb/delay/master nodes) is now the sole fx surface.",
   "content_html": "<p>Paul: 'the effects listed under the piano rolls — don't put them there, they should be nodes in the graph.' Removed the per-lane .vz-fxline caption; the mixing node graph beneath the rolls (insert chips + reverb/delay/master nodes) is now the sole fx surface.</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=9354&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — the brightest, most processed corner of the space</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/0ffd38aac780ff473a367068052e6e4b23dfd4b0\">0ffd38a</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: 'the effects listed under the piano rolls — don't put them there, they should be nodes in the graph.' Removed the per-lane .vz-fxline caption; the mixing node graph beneath the rolls (insert chips + reverb/delay/master nodes) is now the sole fx surface.\n\n▶ Play it: Food Court Eternity — the brightest, most processed corner of the space https://stellate.app/?genre=vaporwave&seed=9354&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\n0ffd38a https://github.com/aboard-io/stellate/commit/0ffd38aac780ff473a367068052e6e4b23dfd4b0",
   "date_published": "2026-07-11T02:23:56.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "mix"
   ]
  },
  {
   "id": "2a769ff27b178ed4f46efd3a37f692e652d6115d",
   "url": "https://stellate.app/?genre=bebop&seed=5266&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/2a769ff27b178ed4f46efd3a37f692e652d6115d",
   "title": "Constant-pace travel: the playhead moves at a fixed speed, not fixed bars/leg",
   "summary": "Paul: 'the playhead should always move at a constant pace; distance between nodes shouldn't matter.' The old model gave every leg exactly `pace` bars, so the traveler raced across long legs and crawled short ones.",
   "content_html": "<p>Paul: 'the playhead should always move at a constant pace; distance between nodes shouldn't matter.' The old model gave every leg exactly `pace` bars, so the traveler raced across long legs and crawled short ones.</p>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=5266&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/2a769ff27b178ed4f46efd3a37f692e652d6115d\">2a769ff</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: 'the playhead should always move at a constant pace; distance between nodes shouldn't matter.' The old model gave every leg exactly `pace` bars, so the traveler raced across long legs and crawled short ones.\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=5266&path=694.13834,713.13867,675.13867&xdur=13.122\n\n2a769ff https://github.com/aboard-io/stellate/commit/2a769ff27b178ed4f46efd3a37f692e652d6115d",
   "date_published": "2026-07-11T02:23:56.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "e1a93b5f27dd360702e9bba129aad5a08e3ac892",
   "url": "https://stellate.app/?genre=disco&seed=7383&path=1361.12546,1380.12579,1342.12579&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/e1a93b5f27dd360702e9bba129aad5a08e3ac892",
   "title": "disco (Mirrorball Shift): drums -25% — the kit dominated the mix",
   "summary": "Paul, ear-checking live: 'drums dominate and should come down about 25%.' The mirrorball power kit (kick 1.1-1.3, snare .75-1, hat 1.1-1.4) sat too hot over the octave bass + organ glitter; the gentle global drum-balance only trimmed it ~4% (peak just over target).",
   "content_html": "<p>Paul, ear-checking live: 'drums dominate and should come down about 25%.' The mirrorball power kit (kick 1.1-1.3, snare .75-1, hat 1.1-1.4) sat too hot over the octave bass + organ glitter; the gentle global drum-balance only trimmed it ~4% (peak just over target).</p>\n<p><a href=\"https://stellate.app/?genre=disco&amp;seed=7383&amp;path=1361.12546,1380.12579,1342.12579&amp;xdur=13.122\">▶ Play it: Mirrorball Panopticon — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/e1a93b5f27dd360702e9bba129aad5a08e3ac892\">e1a93b5</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul, ear-checking live: 'drums dominate and should come down about 25%.' The mirrorball power kit (kick 1.1-1.3, snare .75-1, hat 1.1-1.4) sat too hot over the octave bass + organ glitter; the gentle global drum-balance only trimmed it ~4% (peak just over target).\n\n▶ Play it: Mirrorball Panopticon — parked on the genre this change names https://stellate.app/?genre=disco&seed=7383&path=1361.12546,1380.12579,1342.12579&xdur=13.122\n\ne1a93b5 https://github.com/aboard-io/stellate/commit/e1a93b5f27dd360702e9bba129aad5a08e3ac892",
   "date_published": "2026-07-11T01:56:39.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "disco",
    "drums"
   ]
  },
  {
   "id": "1f12c0f3dfb085fea4995da1cead32e8b638d3ca",
   "url": "https://stellate.app/?genre=transitwave&seed=7739&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/1f12c0f3dfb085fea4995da1cead32e8b638d3ca",
   "title": "Whole-path audio export: render the ENTIRE loop, not just the current song",
   "summary": "Paul: 'export the entire path, not just the current song. The whole mix.' journey.js buildLoopPlan groups the offline loop-walk into topology-stable RUNS (a new run = a reverb/master/unit-topology change = a crossfade seam) and enumerates every found/sampler/vocoder source the loop touches (decode…",
   "content_html": "<p>Paul: 'export the entire path, not just the current song. The whole mix.' journey.js buildLoopPlan groups the offline loop-walk into topology-stable RUNS (a new run = a reverb/master/unit-topology change = a crossfade seam) and enumerates every found/sampler/vocoder source the loop touches (decode…</p>\n<ul><li>export.js exportLoopAudio decodes the sources, drives the worker, and assembles a WAV Blob-of-parts (int16 bodies, no giant contiguous copy) or feeds the mp3 worker block-by-block</li></ul>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=7739&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/1f12c0f3dfb085fea4995da1cead32e8b638d3ca\">1f12c0f</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: 'export the entire path, not just the current song. The whole mix.' journey.js buildLoopPlan groups the offline loop-walk into topology-stable RUNS (a new run = a reverb/master/unit-topology change = a crossfade seam) and enumerates every found/sampler/vocoder source the loop touches (decode…\n\n• export.js exportLoopAudio decodes the sources, drives the worker, and assembles a WAV Blob-of-parts (int16 bodies, no giant contiguous copy) or feeds the mp3 worker block-by-block\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=7739&path=749.12536,768.12569,730.12569&xdur=13.122\n\n1f12c0f https://github.com/aboard-io/stellate/commit/1f12c0f3dfb085fea4995da1cead32e8b638d3ca",
   "date_published": "2026-07-11T01:46:16.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "3cfb1b1ecb1a1f9ef00923dbbd5cfb5bd8b0c424",
   "url": "https://stellate.app/?genre=vaporwave&seed=6438&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/3cfb1b1ecb1a1f9ef00923dbbd5cfb5bd8b0c424",
   "title": "Inside viz: a mixing node graph under the piano rolls (vertical, mobile-first)",
   "summary": "Paul: 'the effects being text isn't working for me — render the full mixing node graph under the piano rolls, showing how effects are invoked and what levels.' The master effects TEXT is replaced by an inline-SVG signal-flow graph: voice boxes with their insert chain (each chip labelled with type +…",
   "content_html": "<p>Paul: 'the effects being text isn't working for me — render the full mixing node graph under the piano rolls, showing how effects are invoked and what levels.' The master effects TEXT is replaced by an inline-SVG signal-flow graph: voice boxes with their insert chain (each chip labelled with type +…</p>\n<ul><li>Arranged VERTICALLY (top-&gt;bottom) so it stays legible on a phone — a portrait column capped at 380px, not a wide fan that shrinks to nothing.</li></ul>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=6438&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — the brightest, most processed corner of the space</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/3cfb1b1ecb1a1f9ef00923dbbd5cfb5bd8b0c424\">3cfb1b1</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: 'the effects being text isn't working for me — render the full mixing node graph under the piano rolls, showing how effects are invoked and what levels.' The master effects TEXT is replaced by an inline-SVG signal-flow graph: voice boxes with their insert chain (each chip labelled with type +…\n\n• Arranged VERTICALLY (top->bottom) so it stays legible on a phone — a portrait column capped at 380px, not a wide fan that shrinks to nothing.\n\n▶ Play it: Food Court Eternity — the brightest, most processed corner of the space https://stellate.app/?genre=vaporwave&seed=6438&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\n3cfb1b1 https://github.com/aboard-io/stellate/commit/3cfb1b1ecb1a1f9ef00923dbbd5cfb5bd8b0c424",
   "date_published": "2026-07-11T01:46:03.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "mix"
   ]
  },
  {
   "id": "3a1ab70fdecc5beef6b6c466e5776bc06158242f",
   "url": "https://stellate.app/?genre=surfrock&seed=4327&path=1315.6203,945.16205,1089.13532&xdur=0.075",
   "external_url": "https://github.com/aboard-io/stellate/commit/3a1ab70fdecc5beef6b6c466e5776bc06158242f",
   "title": "Ring-out + delay: give the dreamy guitar genres real tails",
   "summary": "The taste pass for 'power chords with long fuzzy reverb tails phasing in and out, MBV levels of processing' — on the RING-CLASS guitar/string genres only (moonlagoon, budstep, meadowmellotron, walrusfuzz, surfrock, desertblues, meadowjangle, flannelburst, chromeufo)",
   "content_html": "<p>The taste pass for 'power chords with long fuzzy reverb tails phasing in and out, MBV levels of processing' — on the RING-CLASS guitar/string genres only (moonlagoon, budstep, meadowmellotron, walrusfuzz, surfrock, desertblues, meadowjangle, flannelburst, chromeufo)</p>\n<ul><li>Also fixes a latent bug: 'delay' was a working state-engine module but was never registered in the kernel's INSERT_DEFAULTS, so any pool-declared delay was silently dropped catalog-wide</li></ul>\n<p><a href=\"https://stellate.app/?genre=surfrock&amp;seed=4327&amp;path=1315.6203,945.16205,1089.13532&amp;xdur=0.075\">▶ Play it: Undertow Sock Hop → Dune Recursion → Amen Monolith — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/3a1ab70fdecc5beef6b6c466e5776bc06158242f\">3a1ab70</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The taste pass for 'power chords with long fuzzy reverb tails phasing in and out, MBV levels of processing' — on the RING-CLASS guitar/string genres only (moonlagoon, budstep, meadowmellotron, walrusfuzz, surfrock, desertblues, meadowjangle, flannelburst, chromeufo)\n\n• Also fixes a latent bug: 'delay' was a working state-engine module but was never registered in the kernel's INSERT_DEFAULTS, so any pool-declared delay was silently dropped catalog-wide\n\n▶ Play it: Undertow Sock Hop → Dune Recursion → Amen Monolith — the three genres this change names, as one path https://stellate.app/?genre=surfrock&seed=4327&path=1315.6203,945.16205,1089.13532&xdur=0.075\n\n3a1ab70 https://github.com/aboard-io/stellate/commit/3a1ab70fdecc5beef6b6c466e5776bc06158242f",
   "date_published": "2026-07-11T01:45:51.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "surfrock",
    "desertblues",
    "budstep",
    "harmony"
   ]
  },
  {
   "id": "a13609a42eeb97b8c45b4b9f4980009dd51285e5",
   "url": "https://stellate.app/?genre=gabber&seed=3188&path=1809.17511,1828.17544,1790.17544&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/a13609a42eeb97b8c45b4b9f4980009dd51285e5",
   "title": "Filter-env on sampled voices + a gentle drum balance",
   "summary": "fenv on samples (Paul: 'filter envelopes on samples are great esp when you want resonance and to mess with dynamics'): the recipe fenv key was inert on the native sampler lane (only synth models read it).",
   "content_html": "<p>fenv on samples (Paul: 'filter envelopes on samples are great esp when you want resonance and to mess with dynamics'): the recipe fenv key was inert on the native sampler lane (only synth models read it).</p>\n<ul><li>Drum balance (Paul: 'drums in the louder genres are very hot — balance voices everywhere'): a gentle hot-kit level pull at the shared mastering choke point (press + stream + live-bake).</li></ul>\n<p><a href=\"https://stellate.app/?genre=gabber&amp;seed=3188&amp;path=1809.17511,1828.17544,1790.17544&amp;xdur=13.122\">▶ Play it: Jackhammer Communion — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/a13609a42eeb97b8c45b4b9f4980009dd51285e5\">a13609a</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "fenv on samples (Paul: 'filter envelopes on samples are great esp when you want resonance and to mess with dynamics'): the recipe fenv key was inert on the native sampler lane (only synth models read it).\n\n• Drum balance (Paul: 'drums in the louder genres are very hot — balance voices everywhere'): a gentle hot-kit level pull at the shared mastering choke point (press + stream + live-bake).\n\n▶ Play it: Jackhammer Communion — parked on the genre this change names https://stellate.app/?genre=gabber&seed=3188&path=1809.17511,1828.17544,1790.17544&xdur=13.122\n\na13609a https://github.com/aboard-io/stellate/commit/a13609a42eeb97b8c45b4b9f4980009dd51285e5",
   "date_published": "2026-07-11T01:45:39.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "gabber",
    "sampler"
   ]
  },
  {
   "id": "0399807efd1a047bdf3db57c771cdc9428f68b5f",
   "url": "https://stellate.app/?genre=bigband&seed=2550&path=814.14134,833.14167,795.14167&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/0399807efd1a047bdf3db57c771cdc9428f68b5f",
   "title": "Sampler loop-end clamp: the Turtle Beach (Montego) short-envelope fix",
   "summary": "A soundfont-importer off-by-one wrote loopEnd = sampleLen+1 on some switcher fonts (montego 19 zones, blackberry 9, diet_candy 6), so the sampler's buffer-end guard (pos >= src.length-1) fired BEFORE the loop-wrap could",
   "content_html": "<p>A soundfont-importer off-by-one wrote loopEnd = sampleLen+1 on some switcher fonts (montego 19 zones, blackberry 9, diet_candy 6), so the sampler's buffer-end guard (pos &gt;= src.length-1) fired BEFORE the loop-wrap could</p>\n<ul><li>Fix, two layers: sampler.js clamps loopEnd = min(z.loopEnd, src.length-1) in BOTH the mixPCM (press/stream/bake) and live-native paths</li></ul>\n<p><a href=\"https://stellate.app/?genre=bigband&amp;seed=2550&amp;path=814.14134,833.14167,795.14167&amp;xdur=13.122\">▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/0399807efd1a047bdf3db57c771cdc9428f68b5f\">0399807</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "A soundfont-importer off-by-one wrote loopEnd = sampleLen+1 on some switcher fonts (montego 19 zones, blackberry 9, diet_candy 6), so the sampler's buffer-end guard (pos >= src.length-1) fired BEFORE the loop-wrap could\n\n• Fix, two layers: sampler.js clamps loopEnd = min(z.loopEnd, src.length-1) in BOTH the mixPCM (press/stream/bake) and live-native paths\n\n▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments https://stellate.app/?genre=bigband&seed=2550&path=814.14134,833.14167,795.14167&xdur=13.122\n\n0399807 https://github.com/aboard-io/stellate/commit/0399807efd1a047bdf3db57c771cdc9428f68b5f",
   "date_published": "2026-07-11T01:45:29.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bigband",
    "sampler"
   ]
  },
  {
   "id": "4eaada1de7a77579b9f3c69f50d7110e0991d5c0",
   "url": "https://stellate.app/?genre=bigband&seed=6805&path=814.14134,833.14167,795.14167&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/4eaada1de7a77579b9f3c69f50d7110e0991d5c0",
   "title": "Faithful export: whole-path MIDI (the full loop, not the current song)",
   "summary": "Paul: \"video, audio, and MIDI export … the entire path, not just the current song.\" First of the three: MIDI.",
   "content_html": "<p>Paul: &quot;video, audio, and MIDI export … the entire path, not just the current song.&quot; First of the three: MIDI.</p>\n<ul><li>makeWalk's per-bar payload now carries `ev` (the note-level buildEvents of that bar's collapsed section).</li><li>midi-export.buildMidiJourney(bars) concatenates the per-bar note events (each offset by its absolute startBeat) into ONE SMF with a tempo map — pads/bass/ melody + GM drums across every genre the loop crosses.</li><li>journey.buildLoopMidi() walks one full loop and assembles it.</li><li>app/export.js downloadMidi now exports the WHOLE PATH when a loop is drawn (&quot;… (full path).mid&quot;), falling back to the current song when there's no path.</li></ul>\n<p><em>Verified:</em> a 3-waypoint loop -&gt; a valid format-1 5-track SMF; explorer-ui's MIDI gate parses it clean.</p>\n<p><a href=\"https://stellate.app/?genre=bigband&amp;seed=6805&amp;path=814.14134,833.14167,795.14167&amp;xdur=13.122\">▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/4eaada1de7a77579b9f3c69f50d7110e0991d5c0\">4eaada1</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"video, audio, and MIDI export … the entire path, not just the current song.\" First of the three: MIDI.\n\n• makeWalk's per-bar payload now carries `ev` (the note-level buildEvents of that bar's collapsed section).\n\n• midi-export.buildMidiJourney(bars) concatenates the per-bar note events (each offset by its absolute startBeat) into ONE SMF with a tempo map — pads/bass/ melody + GM drums across every genre the loop crosses.\n\n• journey.buildLoopMidi() walks one full loop and assembles it.\n\n• app/export.js downloadMidi now exports the WHOLE PATH when a loop is drawn (\"… (full path).mid\"), falling back to the current song when there's no path.\n\nVerified: a 3-waypoint loop -> a valid format-1 5-track SMF; explorer-ui's MIDI gate parses it clean.\n\n▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments https://stellate.app/?genre=bigband&seed=6805&path=814.14134,833.14167,795.14167&xdur=13.122\n\n4eaada1 https://github.com/aboard-io/stellate/commit/4eaada1de7a77579b9f3c69f50d7110e0991d5c0",
   "date_published": "2026-07-10T22:37:43.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bigband",
    "sampler"
   ]
  },
  {
   "id": "a43c0bf0a9c76291565d1f8107020f5b9c6661d8",
   "url": "https://stellate.app/?genre=bebop&seed=4640&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/a43c0bf0a9c76291565d1f8107020f5b9c6661d8",
   "title": "Faithful whole-path export: the offline loop-walk foundation",
   "summary": "Paul's program #2 (export the whole path, not just the current song). The pieces that let us render the full journey offline without playing it in real time:",
   "content_html": "<p>Paul's program #2 (export the whole path, not just the current song). The pieces that let us render the full journey offline without playing it in real time:</p>\n<ul><li>FaustLive.makeWalk is EXPORTED — the same per-bar walk the live conductors run.</li><li>targeting.stateAt(pt): the pure blend state (K.mix + key/bpm/mode) with no store side effects.</li><li>app/journey.js walkLoop(): drives makeWalk with a getState that walks the loop (pointOnPath(travelForBar(b)) -&gt; stateAt), returning per-bar render payloads for one full loop (waypoints × pace bars).</li></ul>\n<p><em>Verified:</em> headless: a 3-waypoint loop walks 72 bars / 303s, states evolve (2 unit topologies), events 26-59/bar, zero errors.</p>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=4640&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/a43c0bf0a9c76291565d1f8107020f5b9c6661d8\">a43c0bf</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul's program #2 (export the whole path, not just the current song). The pieces that let us render the full journey offline without playing it in real time:\n\n• FaustLive.makeWalk is EXPORTED — the same per-bar walk the live conductors run.\n\n• targeting.stateAt(pt): the pure blend state (K.mix + key/bpm/mode) with no store side effects.\n\n• app/journey.js walkLoop(): drives makeWalk with a getState that walks the loop (pointOnPath(travelForBar(b)) -> stateAt), returning per-bar render payloads for one full loop (waypoints × pace bars).\n\nVerified: headless: a 3-waypoint loop walks 72 bars / 303s, states evolve (2 unit topologies), events 26-59/bar, zero errors.\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=4640&path=694.13834,713.13867,675.13867&xdur=13.122\n\na43c0bf https://github.com/aboard-io/stellate/commit/a43c0bf0a9c76291565d1f8107020f5b9c6661d8",
   "date_published": "2026-07-10T22:32:49.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "576570b46f3acf325c572da693bc9976fa0b22b7",
   "url": "https://stellate.app/?genre=chiptune&seed=4780&path=1336.7608,1355.7641,1317.7641&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/576570b46f3acf325c572da693bc9976fa0b22b7",
   "title": "Soundfont pack: 11 character fonts in the switcher",
   "summary": "Extracted (tools/gen-font.js, full-capture) the fonts Paul linked into the picker: SGM Pro 15, Windows GM, Yamaha XG, Turtle Beach Montego, Roland SC-55, Gravis Ultrasound, Game Boy Advance, E-mu APS, Diet Candy, Blackberry, 8-bit Chiptune",
   "content_html": "<p>Extracted (tools/gen-font.js, full-capture) the fonts Paul linked into the picker: SGM Pro 15, Windows GM, Yamaha XG, Turtle Beach Montego, Roland SC-55, Gravis Ultrasound, Game Boy Advance, E-mu APS, Diet Candy, Blackberry, 8-bit Chiptune</p>\n<p><a href=\"https://stellate.app/?genre=chiptune&amp;seed=4780&amp;path=1336.7608,1355.7641,1317.7641&amp;xdur=13.122\">▶ Play it: Sprite Metabolism — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/576570b46f3acf325c572da693bc9976fa0b22b7\">576570b</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Extracted (tools/gen-font.js, full-capture) the fonts Paul linked into the picker: SGM Pro 15, Windows GM, Yamaha XG, Turtle Beach Montego, Roland SC-55, Gravis Ultrasound, Game Boy Advance, E-mu APS, Diet Candy, Blackberry, 8-bit Chiptune\n\n▶ Play it: Sprite Metabolism — parked on the genre this change names https://stellate.app/?genre=chiptune&seed=4780&path=1336.7608,1355.7641,1317.7641&xdur=13.122\n\n576570b https://github.com/aboard-io/stellate/commit/576570b46f3acf325c572da693bc9976fa0b22b7",
   "date_published": "2026-07-10T22:12:57.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "chiptune",
    "found"
   ]
  },
  {
   "id": "0c7bd2889e7b34d00062ac98d7af9f82481505fe",
   "url": "https://stellate.app/?genre=transitwave&seed=3416&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/0c7bd2889e7b34d00062ac98d7af9f82481505fe",
   "title": "Soundfont switcher: pick the sampled-instrument font live in settings",
   "summary": "Paul: \"let me switch soundfonts in the settings section … that sounds really fun.\" The sampled instruments were baked FluidR3; this makes the font a runtime choice.",
   "content_html": "<p>Paul: &quot;let me switch soundfonts in the settings section … that sounds really fun.&quot; The sampled instruments were baked FluidR3; this makes the font a runtime choice.</p>\n<ul><li>tools/gen-font.js extracts any GM SF2 into a parallel set (found/samples/instruments-&lt;key&gt;/, full-capture via sf2.js) + a compact engine/faust/font-&lt;key&gt;.json {base, instr:{slug:{sr,zones}}}, matching kernel…</li><li>genre-kernel routes the 4 sampler-build sites through fontInstr(id): the ACTIVE font's zones + sample dir, with PER-INSTRUMENT fallback to FluidR3 for anything a font lacks (specialty slugs: upright piano…</li><li>native sampler zoneFor now selects the zone by VELOCITY too (vlo/vhi; absent = full range, so single-velocity fonts are unaffected)</li><li>app/fonts.js loads the manifest, lazy-registers a font on pick, rebuilds the mix and hot-restarts the engine (shared srcIds → reload the caches).</li></ul>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=3416&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/0c7bd2889e7b34d00062ac98d7af9f82481505fe\">0c7bd28</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"let me switch soundfonts in the settings section … that sounds really fun.\" The sampled instruments were baked FluidR3; this makes the font a runtime choice.\n\n• tools/gen-font.js extracts any GM SF2 into a parallel set (found/samples/instruments-<key>/, full-capture via sf2.js) + a compact engine/faust/font-<key>.json {base, instr:{slug:{sr,zones}}}, matching kernel…\n\n• genre-kernel routes the 4 sampler-build sites through fontInstr(id): the ACTIVE font's zones + sample dir, with PER-INSTRUMENT fallback to FluidR3 for anything a font lacks (specialty slugs: upright piano…\n\n• native sampler zoneFor now selects the zone by VELOCITY too (vlo/vhi; absent = full range, so single-velocity fonts are unaffected)\n\n• app/fonts.js loads the manifest, lazy-registers a font on pick, rebuilds the mix and hot-restarts the engine (shared srcIds → reload the caches).\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=3416&path=749.12536,768.12569,730.12569&xdur=13.122\n\n0c7bd28 https://github.com/aboard-io/stellate/commit/0c7bd2889e7b34d00062ac98d7af9f82481505fe",
   "date_published": "2026-07-10T22:10:43.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "8b13bae10203105cb5a66153eff96481fe1f9de0",
   "url": "https://stellate.app/?genre=bigband&seed=5049&path=814.14134,833.14167,795.14167&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/8b13bae10203105cb5a66153eff96481fe1f9de0",
   "title": "sf2 extract: FULL CAPTURE — every key-zone + every velocity layer",
   "summary": "Paul: \"re-extract the soundfont fully, capture everything.\" zonesOf kept only the forte layer (vel~100) and extract thinned to --max-zones 6. Now zonesOf keeps EVERY velocity layer (records velLo/velHi), and extract defaults to no thinning (--max-zones 0 = full capture",
   "content_html": "<p>Paul: &quot;re-extract the soundfont fully, capture everything.&quot; zonesOf kept only the forte layer (vel~100) and extract thinned to --max-zones 6. Now zonesOf keeps EVERY velocity layer (records velLo/velHi), and extract defaults to no thinning (--max-zones 0 = full capture</p>\n<ul><li>Validated: UprightPianoKW -&gt; 66 zones across BOTH velocity layers (0-80 soft, 81-127 loud, previously the soft layer was discarded); FluidR3 Yamaha Grand -&gt; all 20 key-zones (was 6).</li><li>This is the extract side only. Consuming it needs the kernel INSTRUMENTS block regenerated from the fuller zones.json (velLo/velHi added) + the native sampler selecting a zone by velocity, not just note</li></ul>\n<p><a href=\"https://stellate.app/?genre=bigband&amp;seed=5049&amp;path=814.14134,833.14167,795.14167&amp;xdur=13.122\">▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/8b13bae10203105cb5a66153eff96481fe1f9de0\">8b13bae</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"re-extract the soundfont fully, capture everything.\" zonesOf kept only the forte layer (vel~100) and extract thinned to --max-zones 6. Now zonesOf keeps EVERY velocity layer (records velLo/velHi), and extract defaults to no thinning (--max-zones 0 = full capture\n\n• Validated: UprightPianoKW -> 66 zones across BOTH velocity layers (0-80 soft, 81-127 loud, previously the soft layer was discarded); FluidR3 Yamaha Grand -> all 20 key-zones (was 6).\n\n• This is the extract side only. Consuming it needs the kernel INSTRUMENTS block regenerated from the fuller zones.json (velLo/velHi added) + the native sampler selecting a zone by velocity, not just note\n\n▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments https://stellate.app/?genre=bigband&seed=5049&path=814.14134,833.14167,795.14167&xdur=13.122\n\n8b13bae https://github.com/aboard-io/stellate/commit/8b13bae10203105cb5a66153eff96481fe1f9de0",
   "date_published": "2026-07-10T21:44:59.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bigband",
    "sampler"
   ]
  },
  {
   "id": "503559e53f71e588c41b0b1a19a6c01d30779293",
   "url": "https://stellate.app/?genre=spokenword&seed=3701&path=196.11721,215.11754,177.11754&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/503559e53f71e588c41b0b1a19a6c01d30779293",
   "title": "Viz: the constantly-firing stab lane is SYNTH stabs, not \"sampled stabs\"",
   "summary": "Paul: \"sampled stabs show up a lot but never play audio.\" Diagnosis: the timeline \"stabs\" lane keys on role sfx — which is the SYNTH stab voice (stab.dsp), and that voice DOES play (72–124 hits/song, ~77% of seeds).",
   "content_html": "<p>Paul: &quot;sampled stabs show up a lot but never play audio.&quot; Diagnosis: the timeline &quot;stabs&quot; lane keys on role sfx — which is the SYNTH stab voice (stab.dsp), and that voice DOES play (72–124 hits/song, ~77% of seeds).</p>\n<ul><li>Relabel the sfx lane &quot;synth stabs&quot; so the viz is honest; &quot;sampled stabs&quot; now refers only to the real sample layer.</li><li>Not touched here: the sampled-hit layer is genuinely rare because the engine picks ONE hits source per seed and most EDM genres mix stab pools with speech ids (sp_system/sp_energy) ~50/50</li></ul>\n<p><a href=\"https://stellate.app/?genre=spokenword&amp;seed=3701&amp;path=196.11721,215.11754,177.11754&amp;xdur=13.122\">▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/503559e53f71e588c41b0b1a19a6c01d30779293\">503559e</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"sampled stabs show up a lot but never play audio.\" Diagnosis: the timeline \"stabs\" lane keys on role sfx — which is the SYNTH stab voice (stab.dsp), and that voice DOES play (72–124 hits/song, ~77% of seeds).\n\n• Relabel the sfx lane \"synth stabs\" so the viz is honest; \"sampled stabs\" now refers only to the real sample layer.\n\n• Not touched here: the sampled-hit layer is genuinely rare because the engine picks ONE hits source per seed and most EDM genres mix stab pools with speech ids (sp_system/sp_energy) ~50/50\n\n▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices https://stellate.app/?genre=spokenword&seed=3701&path=196.11721,215.11754,177.11754&xdur=13.122\n\n503559e https://github.com/aboard-io/stellate/commit/503559e53f71e588c41b0b1a19a6c01d30779293",
   "date_published": "2026-07-10T21:17:07.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "spokenword",
    "voice"
   ]
  },
  {
   "id": "c42f3ff00f1b5dda2864e44c5307f224214a7d16",
   "url": "https://stellate.app/?genre=vaporwave&seed=5896&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/c42f3ff00f1b5dda2864e44c5307f224214a7d16",
   "title": "Master bus on the live mix: glue + makeup + limiter (fix \"muted\")",
   "summary": "Paul: \"everything sounds very muted … I don't hear a lot of the master chain.\" Diagnosis (signal-chain audit): on desktop the LIVE ring path summed into a UNITY masterGain with no glue and no makeup.",
   "content_html": "<p>Paul: &quot;everything sounds very muted … I don't hear a lot of the master chain.&quot; Diagnosis (signal-chain audit): on desktop the LIVE ring path summed into a UNITY masterGain with no glue and no makeup.</p>\n<ul><li>This adds a causal master bus on the live SUM: a gentle glue compressor (−22 dB, 2.2:1) → a makeup lift (~+8 dB) → a brickwall limiter (−1.5 dB, 20:1) for peak safety.</li><li><strong>LIVE-ONLY</strong> — the baked export path keeps its own mastering, so segment-parity and the fixtures byte-identity are untouched.</li></ul>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=5896&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — the brightest, most processed corner of the space</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/c42f3ff00f1b5dda2864e44c5307f224214a7d16\">c42f3ff</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"everything sounds very muted … I don't hear a lot of the master chain.\" Diagnosis (signal-chain audit): on desktop the LIVE ring path summed into a UNITY masterGain with no glue and no makeup.\n\n• This adds a causal master bus on the live SUM: a gentle glue compressor (−22 dB, 2.2:1) → a makeup lift (~+8 dB) → a brickwall limiter (−1.5 dB, 20:1) for peak safety.\n\nLIVE-ONLY — the baked export path keeps its own mastering, so segment-parity and the fixtures byte-identity are untouched.\n\n▶ Play it: Food Court Eternity — the brightest, most processed corner of the space https://stellate.app/?genre=vaporwave&seed=5896&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\nc42f3ff https://github.com/aboard-io/stellate/commit/c42f3ff00f1b5dda2864e44c5307f224214a7d16",
   "date_published": "2026-07-10T21:14:08.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "mix"
   ]
  },
  {
   "id": "fbb1db5f974b0f6456eaf75b1a6cdc3562ef0ca3",
   "url": "https://stellate.app/?genre=vaporwave&seed=1247&path=1679.4415,292.16891,1718.20526&xdur=0.046",
   "external_url": "https://github.com/aboard-io/stellate/commit/fbb1db5f974b0f6456eaf75b1a6cdc3562ef0ca3",
   "title": "Playhead scrub rewrites the URL measure while stopped",
   "summary": "Paul: moving the playhead then hitting play \"reverts\" and \"isn't updating the URL.\" urlTick fired only from onBar (live) and stopLive — never on a stopped playhead drag, so the address bar's ?m= went stale the moment you scrubbed.",
   "content_html": "<p>Paul: moving the playhead then hitting play &quot;reverts&quot; and &quot;isn't updating the URL.&quot; urlTick fired only from onBar (live) and stopLive — never on a stopped playhead drag, so the address bar's ?m= went stale the moment you scrubbed.</p>\n<ul><li>(The drop-in itself is correct: verified headless that setting startBar=137 and hitting ▶ drops the walk in at serial 137 with matching travel — goLive honors the measure, no revert.</li></ul>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=1247&amp;path=1679.4415,292.16891,1718.20526&amp;xdur=0.046\">▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/fbb1db5f974b0f6456eaf75b1a6cdc3562ef0ca3\">fbb1db5</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: moving the playhead then hitting play \"reverts\" and \"isn't updating the URL.\" urlTick fired only from onBar (live) and stopLive — never on a stopped playhead drag, so the address bar's ?m= went stale the moment you scrubbed.\n\n• (The drop-in itself is correct: verified headless that setting startBar=137 and hitting ▶ drops the walk in at serial 137 with matching travel — goLive honors the measure, no revert.\n\n▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix https://stellate.app/?genre=vaporwave&seed=1247&path=1679.4415,292.16891,1718.20526&xdur=0.046\n\nfbb1db5 https://github.com/aboard-io/stellate/commit/fbb1db5f974b0f6456eaf75b1a6cdc3562ef0ca3",
   "date_published": "2026-07-10T21:04:26.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "jazz",
    "jungle",
    "travel"
   ]
  },
  {
   "id": "77736bea01ffbec3c717ef6df36e70426cd8206b",
   "url": "https://stellate.app/?genre=vaporwave&seed=5970&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/77736bea01ffbec3c717ef6df36e70426cd8206b",
   "title": "Master volume control + reposition the ⚙ panel above the settings button",
   "summary": "Paul: \"add a master volume control to the settings popup panel and pop that panel up aligned right above the settings button rather than at the top.\"",
   "content_html": "<p>Paul: &quot;add a master volume control to the settings popup panel and pop that panel up aligned right above the settings button rather than at the top.&quot;</p>\n<ul><li><strong>VOLUME</strong> — a dedicated userGain node rides AFTER the analyser in the ring path (engine/faust/live.js) — placed there so the listener's volume never collides with the engine's fade/mute automation on masterGain, and the…</li><li><strong>PANEL POSITION</strong> — #panel was pinned top-right; it now anchors bottom-right ABOVE the chips row (bottom:4.2rem, right:.7rem — the settings button's edge) and grows upward, matching what the mobile layout already did.</li></ul>\n<p><em>Verified:</em> headless: panel opens above the chips, right-aligned, off the top of the screen, volume slider drives S.masterVol + localStorage</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=5970&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — the brightest, most processed corner of the space</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/77736bea01ffbec3c717ef6df36e70426cd8206b\">77736be</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"add a master volume control to the settings popup panel and pop that panel up aligned right above the settings button rather than at the top.\"\n\nVOLUME — a dedicated userGain node rides AFTER the analyser in the ring path (engine/faust/live.js) — placed there so the listener's volume never collides with the engine's fade/mute automation on masterGain, and the…\n\nPANEL POSITION — #panel was pinned top-right; it now anchors bottom-right ABOVE the chips row (bottom:4.2rem, right:.7rem — the settings button's edge) and grows upward, matching what the mobile layout already did.\n\nVerified: headless: panel opens above the chips, right-aligned, off the top of the screen, volume slider drives S.masterVol + localStorage\n\n▶ Play it: Food Court Eternity — the brightest, most processed corner of the space https://stellate.app/?genre=vaporwave&seed=5970&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\n77736be https://github.com/aboard-io/stellate/commit/77736bea01ffbec3c717ef6df36e70426cd8206b",
   "date_published": "2026-07-10T21:00:27.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "mix"
   ]
  },
  {
   "id": "3d592de64b0114696fd9c23b50c7957ddb27f013",
   "url": "https://stellate.app/?genre=spokenword&seed=6630&path=196.11721,215.11754,177.11754&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/3d592de64b0114696fd9c23b50c7957ddb27f013",
   "title": "Live found voices fade when the mix leaves their genre",
   "summary": "Paul: Terms & Conditions Wave kept playing its synthesized vocal loop at full volume even at 2% of the mix — and after it was gone. Root cause: narration is emitted as a long looping chop (csd-engine ~1444: dur=secBeats, amp≈vol*1.5) played by FoundPlayer's live.chop with the amp fixed at schedule…",
   "content_html": "<p>Paul: Terms &amp; Conditions Wave kept playing its synthesized vocal loop at full volume even at 2% of the mix — and after it was gone. Root cause: narration is emitted as a long looping chop (csd-engine ~1444: dur=secBeats, amp≈vol*1.5) played by FoundPlayer's live.chop with the amp fixed at schedule…</p>\n<ul><li>FoundLive gains a fadeAll(sec) (+ bed handle.fade) — the graceful sibling of stopAll: chops ramp their amp envelope, beds ramp out.gain, then stop.</li><li><strong>LIVE-ONLY</strong> — the native FoundLive voices are never baked into the worker stream, so the baked press mix — and segment-parity / fixtures byte-identity — are untouched. live-test + sampler-inserts-live green, zero errors.</li></ul>\n<p><a href=\"https://stellate.app/?genre=spokenword&amp;seed=6630&amp;path=196.11721,215.11754,177.11754&amp;xdur=13.122\">▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/3d592de64b0114696fd9c23b50c7957ddb27f013\">3d592de</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: Terms & Conditions Wave kept playing its synthesized vocal loop at full volume even at 2% of the mix — and after it was gone. Root cause: narration is emitted as a long looping chop (csd-engine ~1444: dur=secBeats, amp≈vol*1.5) played by FoundPlayer's live.chop with the amp fixed at schedule…\n\n• FoundLive gains a fadeAll(sec) (+ bed handle.fade) — the graceful sibling of stopAll: chops ramp their amp envelope, beds ramp out.gain, then stop.\n\nLIVE-ONLY — the native FoundLive voices are never baked into the worker stream, so the baked press mix — and segment-parity / fixtures byte-identity — are untouched. live-test + sampler-inserts-live green, zero errors.\n\n▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices https://stellate.app/?genre=spokenword&seed=6630&path=196.11721,215.11754,177.11754&xdur=13.122\n\n3d592de https://github.com/aboard-io/stellate/commit/3d592de64b0114696fd9c23b50c7957ddb27f013",
   "date_published": "2026-07-10T20:48:17.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "spokenword",
    "voice"
   ]
  },
  {
   "id": "5d5db34b5666f4e6434deabe0510c9f4873a6386",
   "url": "https://stellate.app/?genre=jungle&seed=8835&path=1718.20526,1379.18248,1670.17099&xdur=0.217",
   "external_url": "https://github.com/aboard-io/stellate/commit/5d5db34b5666f4e6434deabe0510c9f4873a6386",
   "title": "Starmap regions: color-coded territories with big goofy labels",
   "summary": "Paul, 2026-07-10: \"the starmap is now so large that we should be dividing it into regions by color with big textual labels … equivalently goofy to the current names.\"",
   "content_html": "<p>Paul, 2026-07-10: &quot;the starmap is now so large that we should be dividing it into regions by color with big textual labels … equivalently goofy to the current names.&quot;</p>\n<ul><li>computeRegions() (starmap.js) carves the finalized POS into 10 territories via deterministic k-means (farthest-point seeding + Lloyd, NO Math.random</li><li>drawMap() paints each territory first (behind stars/lines): a soft color wash at the centroid + a big uppercase label (.region, dark-stroked for legibility over footage), and every inactive star halo now wears…</li></ul>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=8835&amp;path=1718.20526,1379.18248,1670.17099&amp;xdur=0.217\">▶ Play it: Barometric Stampede → Seismic Ultimatum → Perihelion Squeal — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/5d5db34b5666f4e6434deabe0510c9f4873a6386\">5d5db34</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul, 2026-07-10: \"the starmap is now so large that we should be dividing it into regions by color with big textual labels … equivalently goofy to the current names.\"\n\n• computeRegions() (starmap.js) carves the finalized POS into 10 territories via deterministic k-means (farthest-point seeding + Lloyd, NO Math.random\n\n• drawMap() paints each territory first (behind stars/lines): a soft color wash at the centroid + a big uppercase label (.region, dark-stroked for legibility over footage), and every inactive star halo now wears…\n\n▶ Play it: Barometric Stampede → Seismic Ultimatum → Perihelion Squeal — the three genres this change names, as one path https://stellate.app/?genre=jungle&seed=8835&path=1718.20526,1379.18248,1670.17099&xdur=0.217\n\n5d5db34 https://github.com/aboard-io/stellate/commit/5d5db34b5666f4e6434deabe0510c9f4873a6386",
   "date_published": "2026-07-10T19:58:21.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "dubstep",
    "hogcore"
   ]
  },
  {
   "id": "0c62df5bc143b155f8c4dc22dd0d0aea49ab6749",
   "url": "https://stellate.app/?genre=bebop&seed=6299&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/0c62df5bc143b155f8c4dc22dd0d0aea49ab6749",
   "title": "Background: superimpose the two layers, bigger/livelier glyphs, slower demoscene",
   "summary": "Paul, 2026-07-10: \"superimpose things … everything animate MUCH more slowly.\"",
   "content_html": "<p>Paul, 2026-07-10: &quot;superimpose things … everything animate MUCH more slowly.&quot;</p>\n<ul><li>SUPERIMPOSE (background.js). The demoscene canvas was already built to composite THROUGH the footage (mix-blend:screen @ .45 — &quot;mix them&quot;), but the 2026-07-09 STRICT EXCLUSIVITY law forced one layer at a time.</li><li>GLYPHS livelier (video-layer.js). The roaming station idents are the loudest voice in the chaos deck now: weight 7-&gt;14, denser swarms (often 3-5), size band 2.6..24 -&gt; 4.5..34 vmin (bigger), desktop pool 4-&gt;10…</li><li>SLOWER DEMOSCENE (demo-layer.js). Steady time multiplier speed 1 -&gt; 0.3 (~3x slower) — cosmetic only: the beat-synced `kick` (pulse/note) is untouched so downbeats still punch, and the video wall (already…</li></ul>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=6299&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/0c62df5bc143b155f8c4dc22dd0d0aea49ab6749\">0c62df5</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul, 2026-07-10: \"superimpose things … everything animate MUCH more slowly.\"\n\n• SUPERIMPOSE (background.js). The demoscene canvas was already built to composite THROUGH the footage (mix-blend:screen @ .45 — \"mix them\"), but the 2026-07-09 STRICT EXCLUSIVITY law forced one layer at a time.\n\n• GLYPHS livelier (video-layer.js). The roaming station idents are the loudest voice in the chaos deck now: weight 7->14, denser swarms (often 3-5), size band 2.6..24 -> 4.5..34 vmin (bigger), desktop pool 4->10…\n\n• SLOWER DEMOSCENE (demo-layer.js). Steady time multiplier speed 1 -> 0.3 (~3x slower) — cosmetic only: the beat-synced `kick` (pulse/note) is untouched so downbeats still punch, and the video wall (already…\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=6299&path=694.13834,713.13867,675.13867&xdur=13.122\n\n0c62df5 https://github.com/aboard-io/stellate/commit/0c62df5bc143b155f8c4dc22dd0d0aea49ab6749",
   "date_published": "2026-07-10T19:46:16.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "0ec721cef3c69d49c8a43aa89f766eb24cde6426",
   "url": "https://stellate.app/?genre=happyhardcore&seed=9342&path=1992.10036,694.13856,1463.10683&xdur=0.184",
   "external_url": "https://github.com/aboard-io/stellate/commit/0ec721cef3c69d49c8a43aa89f766eb24cde6426",
   "title": "world.js PROG_MODE: label the six wave-3 progressions",
   "summary": "The forms wave added whole_tone/interchange/mediant/blues_16/quartal/epic_maj to csd-engine PROGRESSIONS and wired them into anchors (moonlagoon, bebop, idm, happyhardcore, …).",
   "content_html": "<p>The forms wave added whole_tone/interchange/mediant/blues_16/quartal/epic_maj to csd-engine PROGRESSIONS and wired them into anchors (moonlagoon, bebop, idm, happyhardcore, …).</p>\n<p><a href=\"https://stellate.app/?genre=happyhardcore&amp;seed=9342&amp;path=1992.10036,694.13856,1463.10683&amp;xdur=0.184\">▶ Play it: Serotonin Stampede → Mercury Interrogation → Tidal Locking — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/0ec721cef3c69d49c8a43aa89f766eb24cde6426\">0ec721c</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The forms wave added whole_tone/interchange/mediant/blues_16/quartal/epic_maj to csd-engine PROGRESSIONS and wired them into anchors (moonlagoon, bebop, idm, happyhardcore, …).\n\n▶ Play it: Serotonin Stampede → Mercury Interrogation → Tidal Locking — the three genres this change names, as one path https://stellate.app/?genre=happyhardcore&seed=9342&path=1992.10036,694.13856,1463.10683&xdur=0.184\n\n0ec721c https://github.com/aboard-io/stellate/commit/0ec721cef3c69d49c8a43aa89f766eb24cde6426",
   "date_published": "2026-07-10T19:16:42.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "happyhardcore",
    "bebop",
    "moonlagoon",
    "harmony"
   ]
  },
  {
   "id": "06b9a4e63414e75733391c9c985e4032cb05b0e7",
   "url": "https://stellate.app/?genre=umpirehouse&seed=6670&path=1735.12588,1647.15288&xdur=0.278",
   "external_url": "https://github.com/aboard-io/stellate/commit/06b9a4e63414e75733391c9c985e4032cb05b0e7",
   "title": "The viz shows every track (and every drum)",
   "summary": "Paul: \"synthesized samples and other samples don't show up in the viz… maybe it's just that you're not showing all tracks.\" Both true:",
   "content_html": "<p>Paul: &quot;synthesized samples and other samples don't show up in the viz… maybe it's just that you're not showing all tracks.&quot; Both true:</p>\n<ul><li>EVERY DRUM PIECE. The sampled kits' clap/rim/ride/crash/perc units fell through noteRole and matched no lane — half of every sampled kit (the default sound!) was invisible.</li><li>ALL TRACKS. The six fixed lanes hid two layers: stabs/hits rode inside the lead lane, and the spoken/vocal sample layers (the auctioneer chant, the umpire, every commission voice) were mushed into the one…</li><li>Probed: auctioncore shows voices &quot;cut-up announcer voice&quot; + its break chops; umpirehouse shows stabs(4) + voices(1); reggae's onedrop shows all 18 kit events. genre-viz + explorer-ui green.</li></ul>\n<p><a href=\"https://stellate.app/?genre=umpirehouse&amp;seed=6670&amp;path=1735.12588,1647.15288&amp;xdur=0.278\">▶ Play it: Full Count Judgment → Going Going Gone — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/06b9a4e63414e75733391c9c985e4032cb05b0e7\">06b9a4e</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"synthesized samples and other samples don't show up in the viz… maybe it's just that you're not showing all tracks.\" Both true:\n\n• EVERY DRUM PIECE. The sampled kits' clap/rim/ride/crash/perc units fell through noteRole and matched no lane — half of every sampled kit (the default sound!) was invisible.\n\n• ALL TRACKS. The six fixed lanes hid two layers: stabs/hits rode inside the lead lane, and the spoken/vocal sample layers (the auctioneer chant, the umpire, every commission voice) were mushed into the one…\n\n• Probed: auctioncore shows voices \"cut-up announcer voice\" + its break chops; umpirehouse shows stabs(4) + voices(1); reggae's onedrop shows all 18 kit events. genre-viz + explorer-ui green.\n\n▶ Play it: Full Count Judgment → Going Going Gone — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=umpirehouse&seed=6670&path=1735.12588,1647.15288&xdur=0.278\n\n06b9a4e https://github.com/aboard-io/stellate/commit/06b9a4e63414e75733391c9c985e4032cb05b0e7",
   "date_published": "2026-07-10T18:43:40.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "umpirehouse",
    "auctioncore",
    "voice"
   ]
  },
  {
   "id": "b7d423395aa504b389e8ea4a484f3fd04559e130",
   "url": "https://stellate.app/?genre=vaporwave&seed=5177&path=1679.4415,835.759,530.12523&xdur=0.063",
   "external_url": "https://github.com/aboard-io/stellate/commit/b7d423395aa504b389e8ea4a484f3fd04559e130",
   "title": "found-video wave 3: 47 new PD clips, every anchor gets a pool, top-5 de-cloned",
   "summary": "THE CENSUS said the video layer was a quarter-catalog monoculture: 89 clips, night_lines in 57 genres, kaleido 56, blue_dinner 53, night_lights 53, dark_face 49 — and 42 anchors had NO pool at all (journeys fell back to the vaporwave pool).",
   "content_html": "<p>THE CENSUS said the video layer was a quarter-catalog monoculture: 89 clips, night_lines in 57 genres, kaleido 56, blue_dinner 53, night_lights 53, dark_face 49 — and 42 anchors had NO pool at all (journeys fell back to the vaporwave pool).</p>\n<ul><li><strong>THE FETCH</strong> — 47 new clips cut from 21 archive.org items — weather/storms (Tornado, the 1938 hurricane, the dust front from The Plow that Broke the Plains, Tacoma Narrows galloping), volcano fire (Kilauea in color), snow…</li><li><strong>THE SPREAD</strong> — 164 genre pools extended (each genre that leaned on a top-5 clip gains &gt;=2 mood-matched new clips</li><li><strong>THE NUMBERS</strong> — 89 -&gt; 136 distinct clips; 240/240 anchors have pools (min 4); night_lines 57-&gt;18, kaleido 56-&gt;27, blue_dinner 53-&gt;24, night_lights 53-&gt;39, dark_face 49-&gt;39; new top-5 share of slots 13.8%.</li></ul>\n<p><em>Verified:</em> verify.sh --no-cache FULLY GREEN (matrix 240/240 diagonal dominant, validate, engine, prove, matproof)</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=5177&amp;path=1679.4415,835.759,530.12523&amp;xdur=0.063\">▶ Play it: Food Court Eternity → Swarm Motet → Tectonic Tantrum — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/b7d423395aa504b389e8ea4a484f3fd04559e130\">b7d4233</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "THE CENSUS said the video layer was a quarter-catalog monoculture: 89 clips, night_lines in 57 genres, kaleido 56, blue_dinner 53, night_lights 53, dark_face 49 — and 42 anchors had NO pool at all (journeys fell back to the vaporwave pool).\n\nTHE FETCH — 47 new clips cut from 21 archive.org items — weather/storms (Tornado, the 1938 hurricane, the dust front from The Plow that Broke the Plains, Tacoma Narrows galloping), volcano fire (Kilauea in color), snow…\n\nTHE SPREAD — 164 genre pools extended (each genre that leaned on a top-5 clip gains >=2 mood-matched new clips\n\nTHE NUMBERS — 89 -> 136 distinct clips; 240/240 anchors have pools (min 4); night_lines 57->18, kaleido 56->27, blue_dinner 53->24, night_lights 53->39, dark_face 49->39; new top-5 share of slots 13.8%.\n\nVerified: verify.sh --no-cache FULLY GREEN (matrix 240/240 diagonal dominant, validate, engine, prove, matproof)\n\n▶ Play it: Food Court Eternity → Swarm Motet → Tectonic Tantrum — the three genres this change names, as one path https://stellate.app/?genre=vaporwave&seed=5177&path=1679.4415,835.759,530.12523&xdur=0.063\n\nb7d4233 https://github.com/aboard-io/stellate/commit/b7d423395aa504b389e8ea4a484f3fd04559e130",
   "date_published": "2026-07-10T18:41:35.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "cloisterloom",
    "marblefury",
    "found"
   ]
  },
  {
   "id": "00350119d76facb976ced3441ea98499c51c630d",
   "url": "https://stellate.app/?genre=chiptune&seed=9689&path=1336.7608,1355.7641,1317.7641&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/00350119d76facb976ced3441ea98499c51c630d",
   "title": "The final chrome: one view button, a four-row panel, fiction everywhere",
   "summary": "Paul's closing UI batch (2026-07-10):",
   "content_html": "<p>Paul's closing UI batch (2026-07-10):</p>\n<ul><li>ONE VIEW BUTTON. insideChip + bgChip merge into #viewChip, cycling the three 100% views — ✦ star map -&gt; ⓘ infoviz -&gt; ▣ video -&gt; map.</li><li>THE FOUR-ROW PANEL. ⚙ is now: seed + 🎲 + ⧉ share · pace · ±bpm · downloads. Gone: LIVE/STOP/MORE/VIDEO buttons, mode/scale lock, the eleven DIMS detail sliders, preset/path import-export, reset-loop.</li><li><strong>FICTION EVERYWHERE</strong> — the STAR MAP now draws kernel labels (culling measures the label), the chyron's blend readout and the lock-screen Media Session speak the fiction too.</li><li>The ? about panel re-written for the new world: three views, the playhead drag, stop-twice, ±bpm, the bookmarkable address bar.</li></ul>\n<p><em>Verified:</em> re-pinned and green: genre-viz (3-chip row, #viewChip opens the viz), explorer-ui (view cycle reaches video mode via the loop, downloads on the main panel), share-url 13, access-ui 11.</p>\n<p><a href=\"https://stellate.app/?genre=chiptune&amp;seed=9689&amp;path=1336.7608,1355.7641,1317.7641&amp;xdur=13.122\">▶ Play it: Sprite Metabolism — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/00350119d76facb976ced3441ea98499c51c630d\">0035011</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul's closing UI batch (2026-07-10):\n\n• ONE VIEW BUTTON. insideChip + bgChip merge into #viewChip, cycling the three 100% views — ✦ star map -> ⓘ infoviz -> ▣ video -> map.\n\n• THE FOUR-ROW PANEL. ⚙ is now: seed + 🎲 + ⧉ share · pace · ±bpm · downloads. Gone: LIVE/STOP/MORE/VIDEO buttons, mode/scale lock, the eleven DIMS detail sliders, preset/path import-export, reset-loop.\n\nFICTION EVERYWHERE — the STAR MAP now draws kernel labels (culling measures the label), the chyron's blend readout and the lock-screen Media Session speak the fiction too.\n\n• The ? about panel re-written for the new world: three views, the playhead drag, stop-twice, ±bpm, the bookmarkable address bar.\n\nVerified: re-pinned and green: genre-viz (3-chip row, #viewChip opens the viz), explorer-ui (view cycle reaches video mode via the loop, downloads on the main panel), share-url 13, access-ui 11.\n\n▶ Play it: Sprite Metabolism — parked on the genre this change names https://stellate.app/?genre=chiptune&seed=9689&path=1336.7608,1355.7641,1317.7641&xdur=13.122\n\n0035011 https://github.com/aboard-io/stellate/commit/00350119d76facb976ced3441ea98499c51c630d",
   "date_published": "2026-07-10T18:36:02.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "chiptune",
    "sampler"
   ]
  },
  {
   "id": "acbad08c5169dcf04d8462a4a8c235ecc25ae3ca",
   "url": "https://stellate.app/?genre=funk&seed=6236&path=1030.7218,694.13856,292.16891&xdur=0.077",
   "external_url": "https://github.com/aboard-io/stellate/commit/acbad08c5169dcf04d8462a4a8c235ecc25ae3ca",
   "title": "De-clone the STRUCTURE: six new form arcs + six new progressions (REPERTOIRE wave 3)",
   "summary": "The census said form \"pop\" = 128/240 — half the catalog walked one 8-node arc — and minor_run/deep_two carried 79/67 of 28 progressions. This adds six genuinely different dramatic shapes as FORMS data (same Tok vocabulary, same buildForm walker, names chosen to classify correctly under csd-engine…",
   "content_html": "<p>The census said form &quot;pop&quot; = 128/240 — half the catalog walked one 8-node arc — and minor_run/deep_two carried 79/67 of 28 progressions. This adds six genuinely different dramatic shapes as FORMS data (same Tok vocabulary, same buildForm walker, names chosen to classify correctly under csd-engine…</p>\n<ul><li><strong>NEW ARCS</strong> — aaba head / head 2 / bridge / head 3 / coda — the 32-bar song form; SOLO_IDIOM splices head-&gt;bridge-&gt;SOLO-&gt;head out (jazz, bebop) vamp groove / layer in / cook / peak vamp / breakdown / layer out / outro</li><li><strong>NEW PROGRESSIONS</strong> — whole_tone (aug planing), interchange (I-bVII-IV-iv), mediant (I-III-I-bVI), blues_16 (Watermelon Man vein — 128-beat cycles, fast genres only), quartal (sus4 planing), epic_maj (I-V-IV-V — authors' wishlist).</li><li><strong>REASSIGNED</strong> — pop 128-&gt;88 (-40), dj 40-&gt;37, wave 39-&gt;35; vamp 10, aaba 13, duet 7, throughline 6, suite 5, storm 4.</li><li>MEASURED, retuned by assignment (never the fence): first pass 224/240 — the losers were tight-auto-target invented genres (7 reverted to pop) and knife-edge progression hosts (7 additions dropped/re-homed)</li></ul>\n<p><em>Verified:</em> verify.sh --no-cache FULLY GREEN (matrix 240/240 diagonal-dominant, validate --quick 0 fail incl. per-seed dominance, engine, prove, matproof)</p>\n<p><a href=\"https://stellate.app/?genre=funk&amp;seed=6236&amp;path=1030.7218,694.13856,292.16891&amp;xdur=0.077\">▶ Play it: Downbeat Notary → Mercury Interrogation → Smoke Arithmetic — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/acbad08c5169dcf04d8462a4a8c235ecc25ae3ca\">acbad08</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The census said form \"pop\" = 128/240 — half the catalog walked one 8-node arc — and minor_run/deep_two carried 79/67 of 28 progressions. This adds six genuinely different dramatic shapes as FORMS data (same Tok vocabulary, same buildForm walker, names chosen to classify correctly under csd-engine…\n\nNEW ARCS — aaba head / head 2 / bridge / head 3 / coda — the 32-bar song form; SOLO_IDIOM splices head->bridge->SOLO->head out (jazz, bebop) vamp groove / layer in / cook / peak vamp / breakdown / layer out / outro\n\nNEW PROGRESSIONS — whole_tone (aug planing), interchange (I-bVII-IV-iv), mediant (I-III-I-bVI), blues_16 (Watermelon Man vein — 128-beat cycles, fast genres only), quartal (sus4 planing), epic_maj (I-V-IV-V — authors' wishlist).\n\nREASSIGNED — pop 128->88 (-40), dj 40->37, wave 39->35; vamp 10, aaba 13, duet 7, throughline 6, suite 5, storm 4.\n\n• MEASURED, retuned by assignment (never the fence): first pass 224/240 — the losers were tight-auto-target invented genres (7 reverted to pop) and knife-edge progression hosts (7 additions dropped/re-homed)\n\nVerified: verify.sh --no-cache FULLY GREEN (matrix 240/240 diagonal-dominant, validate --quick 0 fail incl. per-seed dominance, engine, prove, matproof)\n\n▶ Play it: Downbeat Notary → Mercury Interrogation → Smoke Arithmetic — the three genres this change names, as one path https://stellate.app/?genre=funk&seed=6236&path=1030.7218,694.13856,292.16891&xdur=0.077\n\nacbad08 https://github.com/aboard-io/stellate/commit/acbad08c5169dcf04d8462a4a8c235ecc25ae3ca",
   "date_published": "2026-07-10T18:29:34.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "funk",
    "bebop",
    "jazz",
    "harmony"
   ]
  },
  {
   "id": "386c193136add79512bc8cae2f893547f995f244",
   "url": "https://stellate.app/?genre=house&seed=7433&path=1101.20850,315.4670,2067.11314&xdur=0.046",
   "external_url": "https://github.com/aboard-io/stellate/commit/386c193136add79512bc8cae2f893547f995f244",
   "title": "Repertoire wave 3: the hits+breaks expansion + the one-shot pool sweep",
   "summary": "The census said the one-shot vocabulary was four samples deep (vox_a in 55 genres, vox_b 47, sp_herenow 40, tw_ding 32; four amens carrying 79 break slots). This wave expands it and de-clones it through THE POOL LAW:",
   "content_html": "<p>The census said the one-shot vocabulary was four samples deep (vox_a in 55 genres, vox_b 47, sp_herenow 40, tw_ding 32; four amens carrying 79 break slots). This wave expands it and de-clones it through THE POOL LAW:</p>\n<ul><li>12 breaks 82-140bpm, drumloops113 (archive.org, CC BY 2.5, author-made, bpm measured by classify-sample-cd.py and pinned)</li><li>11 one-shots from VCSL (CC0 via GitHub license API): 4 chimes (tubular bells C4/E3, hand chime, glockenspiel) + 7 orchestral percussion (timpani, gong, anvil, woodblock, slapstick, agogo, cowbell)</li><li>4 pre-1923 78rpm cuts (PD by age, MMA; deterministic loudest-window cut): 2 military-band horn tuttis (1918/1922), Caruso's Tosca climax (1909), a 1920 laughing record</li><li>3 more Apollo capcom one-liners (NASA PD)</li></ul>\n<p><em>Verified:</em> validate-genres orPool() accepts pool tokens on found/hits/vox source checks (valid iff class exists and EVERY member passes the registry check)</p>\n<p><a href=\"https://stellate.app/?genre=house&amp;seed=7433&amp;path=1101.20850,315.4670,2067.11314&amp;xdur=0.046\">▶ Play it: Congregation Furnace → Martini Parallax → Phosphor Persistence — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/386c193136add79512bc8cae2f893547f995f244\">386c193</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The census said the one-shot vocabulary was four samples deep (vox_a in 55 genres, vox_b 47, sp_herenow 40, tw_ding 32; four amens carrying 79 break slots). This wave expands it and de-clones it through THE POOL LAW:\n\n• 12 breaks 82-140bpm, drumloops113 (archive.org, CC BY 2.5, author-made, bpm measured by classify-sample-cd.py and pinned)\n\n• 11 one-shots from VCSL (CC0 via GitHub license API): 4 chimes (tubular bells C4/E3, hand chime, glockenspiel) + 7 orchestral percussion (timpani, gong, anvil, woodblock, slapstick, agogo, cowbell)\n\n• 4 pre-1923 78rpm cuts (PD by age, MMA; deterministic loudest-window cut): 2 military-band horn tuttis (1918/1922), Caruso's Tosca climax (1909), a 1920 laughing record\n\n• 3 more Apollo capcom one-liners (NASA PD)\n\nVerified: validate-genres orPool() accepts pool tokens on found/hits/vox source checks (valid iff class exists and EVERY member passes the registry check)\n\n▶ Play it: Congregation Furnace → Martini Parallax → Phosphor Persistence — the three genres this change names, as one path https://stellate.app/?genre=house&seed=7433&path=1101.20850,315.4670,2067.11314&xdur=0.046\n\n386c193 https://github.com/aboard-io/stellate/commit/386c193136add79512bc8cae2f893547f995f244",
   "date_published": "2026-07-10T18:02:23.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "house",
    "spacelounge",
    "crtwave",
    "voice"
   ]
  },
  {
   "id": "6e16d3099eb8cda4c6b19856cdb2ba5b218e7bbf",
   "url": "https://stellate.app/?genre=vaporwave&seed=1577&path=1679.4415,749.12558,1579.13027&xdur=0.084",
   "external_url": "https://github.com/aboard-io/stellate/commit/6e16d3099eb8cda4c6b19856cdb2ba5b218e7bbf",
   "title": "BED EXPANSION + THE POOL SWEEP: 79 new beds, ten classes, 152 anchors rotate",
   "summary": "The repertoire program (NEXT.md 5f) lands its bed wave:",
   "content_html": "<p>The repertoire program (NEXT.md 5f) lands its bed wave:</p>\n<ul><li>tools/fetch-bed-expansion.sh (adopted from the 2026-07-10 bed-curation round): 79 radio-aporee beds, license-verified per item (PD Mark x55, CC BY x12, CC BY-SA x12 — zero NC/ND), incl.</li><li>engine/genre-kernel.js SOURCES: +79 classed, license-flagged entries; SOURCES.md gains the full attribution table (BY/BY-SA flags complete).</li><li>SOURCE_POOLS filled: city 16, road 10, industry 10, voices 11, nature 7, water 9, room 8 + three NEW classes weather 9, smalltown 8, shortwave 5.</li><li><strong>THE SWEEP</strong> — 152 of 240 anchors' role:&quot;bed&quot; found.sources swapped from raw generic ids to pool:&lt;class&gt;*N tokens, SAME class mix per anchor.</li></ul>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=1577&amp;path=1679.4415,749.12558,1579.13027&amp;xdur=0.084\">▶ Play it: Food Court Eternity → Rail Replacement Rapture → Subduction Hymnal — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/6e16d3099eb8cda4c6b19856cdb2ba5b218e7bbf\">6e16d30</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The repertoire program (NEXT.md 5f) lands its bed wave:\n\n• tools/fetch-bed-expansion.sh (adopted from the 2026-07-10 bed-curation round): 79 radio-aporee beds, license-verified per item (PD Mark x55, CC BY x12, CC BY-SA x12 — zero NC/ND), incl.\n\n• engine/genre-kernel.js SOURCES: +79 classed, license-flagged entries; SOURCES.md gains the full attribution table (BY/BY-SA flags complete).\n\n• SOURCE_POOLS filled: city 16, road 10, industry 10, voices 11, nature 7, water 9, room 8 + three NEW classes weather 9, smalltown 8, shortwave 5.\n\nTHE SWEEP — 152 of 240 anchors' role:\"bed\" found.sources swapped from raw generic ids to pool:<class>*N tokens, SAME class mix per anchor.\n\n▶ Play it: Food Court Eternity → Rail Replacement Rapture → Subduction Hymnal — the three genres this change names, as one path https://stellate.app/?genre=vaporwave&seed=1577&path=1679.4415,749.12558,1579.13027&xdur=0.084\n\n6e16d30 https://github.com/aboard-io/stellate/commit/6e16d3099eb8cda4c6b19856cdb2ba5b218e7bbf",
   "date_published": "2026-07-10T17:58:57.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "transitwave",
    "doomdrone",
    "found"
   ]
  },
  {
   "id": "33e14253ff55a0a8c3a3801e366a3fb9fca2c67a",
   "url": "https://stellate.app/?genre=transitwave&seed=2595&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/33e14253ff55a0a8c3a3801e366a3fb9fca2c67a",
   "title": "Loads fast again: stale-while-revalidate + a precache that waits its turn",
   "summary": "Paul: \"It loads very slowly now.\" Diagnosis (playwright vs stellate.app): the shell is 2.6MB across ~40 requests and the origin serves cache-control: no-cache on everything — so every visit has ALWAYS revalidated ~20 files serially (one RTT each",
   "content_html": "<p>Paul: &quot;It loads very slowly now.&quot; Diagnosis (playwright vs stellate.app): the shell is 2.6MB across ~40 requests and the origin serves cache-control: no-cache on everything — so every visit has ALWAYS revalidated ~20 files serially (one RTT each</p>\n<ul><li>sw.js v2: app code goes STALE-WHILE-REVALIDATE — a repeat visit paints from the SW cache instantly (measured: 29 app/engine files cache-served on reload, zero errors) while a background fetch refreshes the…</li><li>precache: NEVER competes with the music or the boot — the warm now waits for the engine to be live and 3+ bars deep (its own decodes done), or 25s of idle; phones get a 120-file cap (desktop 400).</li></ul>\n<p><em>Verified:</em> explorer-ui, access-ui, share-url green.</p>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=2595&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/33e14253ff55a0a8c3a3801e366a3fb9fca2c67a\">33e1425</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"It loads very slowly now.\" Diagnosis (playwright vs stellate.app): the shell is 2.6MB across ~40 requests and the origin serves cache-control: no-cache on everything — so every visit has ALWAYS revalidated ~20 files serially (one RTT each\n\n• sw.js v2: app code goes STALE-WHILE-REVALIDATE — a repeat visit paints from the SW cache instantly (measured: 29 app/engine files cache-served on reload, zero errors) while a background fetch refreshes the…\n\n• precache: NEVER competes with the music or the boot — the warm now waits for the engine to be live and 3+ bars deep (its own decodes done), or 25s of idle; phones get a 120-file cap (desktop 400).\n\nVerified: explorer-ui, access-ui, share-url green.\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=2595&path=749.12536,768.12569,730.12569&xdur=13.122\n\n33e1425 https://github.com/aboard-io/stellate/commit/33e14253ff55a0a8c3a3801e366a3fb9fca2c67a",
   "date_published": "2026-07-10T17:50:18.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "6bb6daf55e032a5b036b83c78ab4f09af2282621",
   "url": "https://stellate.app/?genre=transitwave&seed=9717&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/6bb6daf55e032a5b036b83c78ab4f09af2282621",
   "title": "The sax rename: the immutability invariant is right a fourth time",
   "summary": "Ship caught CHANGED-UNDER-SAME-NAME: the tenor-sax REPLACEMENT rewrote found/samples/instruments/tenor_sax/*.wav in place — exactly what the deploy invariant forbids, and doubly fatal now that sw.js caches found/ cache-first- forever (every existing client would keep the FluidR3 sax under the old…",
   "content_html": "<p>Ship caught CHANGED-UNDER-SAME-NAME: the tenor-sax REPLACEMENT rewrote found/samples/instruments/tenor_sax/*.wav in place — exactly what the deploy invariant forbids, and doubly fatal now that sw.js caches found/ cache-first- forever (every existing client would keep the FluidR3 sax under the old…</p>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=9717&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/6bb6daf55e032a5b036b83c78ab4f09af2282621\">6bb6daf</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Ship caught CHANGED-UNDER-SAME-NAME: the tenor-sax REPLACEMENT rewrote found/samples/instruments/tenor_sax/*.wav in place — exactly what the deploy invariant forbids, and doubly fatal now that sw.js caches found/ cache-first- forever (every existing client would keep the FluidR3 sax under the old…\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=9717&path=749.12536,768.12569,730.12569&xdur=13.122\n\n6bb6daf https://github.com/aboard-io/stellate/commit/6bb6daf55e032a5b036b83c78ab4f09af2282621",
   "date_published": "2026-07-10T17:37:07.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "07142efd02fc2aa4ff3c54882f98f480388841ed",
   "url": "https://stellate.app/?genre=heavymetal&seed=9261&path=430.3999,749.12558,292.16891&xdur=0.058",
   "external_url": "https://github.com/aboard-io/stellate/commit/07142efd02fc2aa4ff3c54882f98f480388841ed",
   "title": "Instrument-library upgrade wave 1: real crunch, real breath, a real upright",
   "summary": "Roadmap items 1-5 from the guitar-research report (scratch/guitar-research/ REPORT.md), all CC0 except one CC-BY row, all fetched by the NEW reproducible recipe tools/fetch-guitar-samples.sh (idempotent: sha256-checked cache, 7z/ py7zr fallback, extract-gm.js, 8s+fade trim pass for unlooped guitar…",
   "content_html": "<p>Roadmap items 1-5 from the guitar-research report (scratch/guitar-research/ REPORT.md), all CC0 except one CC-BY row, all fetched by the NEW reproducible recipe tools/fetch-guitar-samples.sh (idempotent: sha256-checked cache, 7z/ py7zr fallback, extract-gm.js, 8s+fade trim pass for unlooped guitar…</p>\n<ul><li>1. tenor_sax REPLACED in place (FreePats/VCSL CC0): 8 zones, ALL with infinite sustain loops, 4.3MB (was 6-zone FluidR3).</li><li>attribution row added to SOURCES.md): pc_ds2_open/pc_ds2_pm/pc_ds2_pm2/ pc_as2_open in SAMPLES (kind:hit, measured D#2/A#2 roots, 0.26-12.5s).</li><li>Fixture drift CLASSIFIED (derived, not committed): all 1140 genre-seed pairs drift because sampled-by-default injects the ENTIRE SAMPLERS library into every state (samplerLib + vol-0 foundSources + events…</li><li>Known pre-existing red (NOT this change, proven on stashed HEAD): test/meter.test.js head_byte_identity copies a fixed HEAD file list that lacks the new engine/columns.js - its temp require fails.</li></ul>\n<p><em>Verified:</em> verify.sh --no-cache FULLY GREEN (matrix 228/228 diagonal-dominant, validate PASS, engine presses PASS, prove PASS, matproof PASS).</p>\n<p><a href=\"https://stellate.app/?genre=heavymetal&amp;seed=9261&amp;path=430.3999,749.12558,292.16891&amp;xdur=0.058\">▶ Play it: Molten Horsepower → Rail Replacement Rapture → Smoke Arithmetic — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/07142efd02fc2aa4ff3c54882f98f480388841ed\">07142ef</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Roadmap items 1-5 from the guitar-research report (scratch/guitar-research/ REPORT.md), all CC0 except one CC-BY row, all fetched by the NEW reproducible recipe tools/fetch-guitar-samples.sh (idempotent: sha256-checked cache, 7z/ py7zr fallback, extract-gm.js, 8s+fade trim pass for unlooped guitar…\n\n• 1. tenor_sax REPLACED in place (FreePats/VCSL CC0): 8 zones, ALL with infinite sustain loops, 4.3MB (was 6-zone FluidR3).\n\n• attribution row added to SOURCES.md): pc_ds2_open/pc_ds2_pm/pc_ds2_pm2/ pc_as2_open in SAMPLES (kind:hit, measured D#2/A#2 roots, 0.26-12.5s).\n\n• Fixture drift CLASSIFIED (derived, not committed): all 1140 genre-seed pairs drift because sampled-by-default injects the ENTIRE SAMPLERS library into every state (samplerLib + vol-0 foundSources + events…\n\n• Known pre-existing red (NOT this change, proven on stashed HEAD): test/meter.test.js head_byte_identity copies a fixed HEAD file list that lacks the new engine/columns.js - its temp require fails.\n\nVerified: verify.sh --no-cache FULLY GREEN (matrix 228/228 diagonal-dominant, validate PASS, engine presses PASS, prove PASS, matproof PASS).\n\n▶ Play it: Molten Horsepower → Rail Replacement Rapture → Smoke Arithmetic — the three genres this change names, as one path https://stellate.app/?genre=heavymetal&seed=9261&path=430.3999,749.12558,292.16891&xdur=0.058\n\n07142ef https://github.com/aboard-io/stellate/commit/07142efd02fc2aa4ff3c54882f98f480388841ed",
   "date_published": "2026-07-10T17:27:49.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "heavymetal",
    "transitwave",
    "jazz",
    "voice"
   ]
  },
  {
   "id": "0cae4d3f9f306596af6e162618cb9dc7cbc3f90f",
   "url": "https://stellate.app/?genre=canawave&seed=8631&path=1505.3720,430.7497&xdur=0.191",
   "external_url": "https://github.com/aboard-io/stellate/commit/0cae4d3f9f306596af6e162618cb9dc7cbc3f90f",
   "title": "The pool law: sources may name a CLASS, not a sample",
   "summary": "The repertoire program's mechanism (Paul: \"not lock one bit of found sound into one genre\"). A found/hits/vox sources list may now carry \"pool:city\" (3 seeded members) or \"pool:city*N\"",
   "content_html": "<p>The repertoire program's mechanism (Paul: &quot;not lock one bit of found sound into one genre&quot;). A found/hits/vox sources list may now carry &quot;pool:city&quot; (3 seeded members) or &quot;pool:city*N&quot;</p>\n<ul><li>SOURCE_POOLS ships with seven conservative classes drawn from the current corpus (city/road/industry/voices/nature/water/room)</li></ul>\n<p><a href=\"https://stellate.app/?genre=canawave&amp;seed=8631&amp;path=1505.3720,430.7497&amp;xdur=0.191\">▶ Play it: Loon Referendum → Leviathan Turnaround — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/0cae4d3f9f306596af6e162618cb9dc7cbc3f90f\">0cae4d3</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The repertoire program's mechanism (Paul: \"not lock one bit of found sound into one genre\"). A found/hits/vox sources list may now carry \"pool:city\" (3 seeded members) or \"pool:city*N\"\n\n• SOURCE_POOLS ships with seven conservative classes drawn from the current corpus (city/road/industry/voices/nature/water/room)\n\n▶ Play it: Loon Referendum → Leviathan Turnaround — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=canawave&seed=8631&path=1505.3720,430.7497&xdur=0.191\n\n0cae4d3 https://github.com/aboard-io/stellate/commit/0cae4d3f9f306596af6e162618cb9dc7cbc3f90f",
   "date_published": "2026-07-10T17:23:53.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "canawave",
    "whalejazz",
    "voice"
   ]
  },
  {
   "id": "8ce6794e8b225f0686e229ca847af5b87dcde887",
   "url": "https://stellate.app/?genre=fugue&seed=2574&path=196.90,1486.8187,2110.6172&xdur=0.09",
   "external_url": "https://github.com/aboard-io/stellate/commit/8ce6794e8b225f0686e229ca847af5b87dcde887",
   "title": "The twelve new stars find screen-safe homes",
   "summary": "The new-genres agent placed by logical distance (>=100 units), but the explorer gate measures SCREEN geometry at the 1200x850 reference — and the map's units are anisotropic on screen (~2 x-units/px vs ~30 y-units/px), so subrattle sat 29px from talcumcasino and 18 label boxes overlapped.",
   "content_html": "<p>The new-genres agent placed by logical distance (&gt;=100 units), but the explorer gate measures SCREEN geometry at the 1200x850 reference — and the map's units are anisotropic on screen (~2 x-units/px vs ~30 y-units/px), so subrattle sat 29px from talcumcasino and 18 label boxes overlapped.</p>\n<p><a href=\"https://stellate.app/?genre=fugue&amp;seed=2574&amp;path=196.90,1486.8187,2110.6172&amp;xdur=0.09\">▶ Play it: The Patient Chase → Centrifuge Ballroom → Infrasound Omen — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/8ce6794e8b225f0686e229ca847af5b87dcde887\">8ce6794</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The new-genres agent placed by logical distance (>=100 units), but the explorer gate measures SCREEN geometry at the 1200x850 reference — and the map's units are anisotropic on screen (~2 x-units/px vs ~30 y-units/px), so subrattle sat 29px from talcumcasino and 18 label boxes overlapped.\n\n▶ Play it: The Patient Chase → Centrifuge Ballroom → Infrasound Omen — the three genres this change names, as one path https://stellate.app/?genre=fugue&seed=2574&path=196.90,1486.8187,2110.6172&xdur=0.09\n\n8ce6794 https://github.com/aboard-io/stellate/commit/8ce6794e8b225f0686e229ca847af5b87dcde887",
   "date_published": "2026-07-10T17:12:53.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "fugue",
    "talcumcasino",
    "subrattle",
    "travel"
   ]
  },
  {
   "id": "ba997d237f62d00ee26348977b4a5576e54dcb32",
   "url": "https://stellate.app/access.html?genre=ambient&seed=8219",
   "external_url": "https://github.com/aboard-io/stellate/commit/ba997d237f62d00ee26348977b4a5576e54dcb32",
   "title": "Three 100% views, one vector rose, per-cell playhead, undarkened footage",
   "summary": "Paul 2026-07-10, the viz + layout batch:",
   "content_html": "<p>Paul 2026-07-10, the viz + layout batch:</p>\n<ul><li>THREE EXCLUSIVE VIEWS (&quot;star map, video, and viz are three different 100% views. when video is on turn off star map&quot;).</li><li>ONE VECTOR ROSE. The &quot;mind&quot; meters (adventure/color/motion) were a different display than the feel radar for no reason</li><li><strong>PER-CELL PLAYHEAD</strong> — each ruler cell lights as the music passes through it (MEAS_BEATS 4 -&gt; 1) and the bright leading-edge stripe is gone — a soft stepping block only.</li><li><strong>BEDS</strong> — it was the viz's ONE fallback label for 48 different field-recording beds (census: tokyo_station under 73 genres, shibuya 64, highway_night 52 — top-5 = 52% of 501 bed slots).</li></ul>\n<p><em>Verified:</em> genre-viz re-pinned to the new contracts (viz IS a 100% view + map hidden, &gt;=11 axes incl. the mind trio, zero numeric readouts) and PASSES</p>\n<p><a href=\"https://stellate.app/access.html?genre=ambient&amp;seed=8219\">▶ Play it: Stationary Weather — the accessible text version, where the same music arrives as prose</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/ba997d237f62d00ee26348977b4a5576e54dcb32\">ba997d2</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul 2026-07-10, the viz + layout batch:\n\n• THREE EXCLUSIVE VIEWS (\"star map, video, and viz are three different 100% views. when video is on turn off star map\").\n\n• ONE VECTOR ROSE. The \"mind\" meters (adventure/color/motion) were a different display than the feel radar for no reason\n\nPER-CELL PLAYHEAD — each ruler cell lights as the music passes through it (MEAS_BEATS 4 -> 1) and the bright leading-edge stripe is gone — a soft stepping block only.\n\nBEDS — it was the viz's ONE fallback label for 48 different field-recording beds (census: tokyo_station under 73 genres, shibuya 64, highway_night 52 — top-5 = 52% of 501 bed slots).\n\nVerified: genre-viz re-pinned to the new contracts (viz IS a 100% view + map hidden, >=11 axes incl. the mind trio, zero numeric readouts) and PASSES\n\n▶ Play it: Stationary Weather — the accessible text version, where the same music arrives as prose https://stellate.app/access.html?genre=ambient&seed=8219\n\nba997d2 https://github.com/aboard-io/stellate/commit/ba997d237f62d00ee26348977b4a5576e54dcb32",
   "date_published": "2026-07-10T16:50:02.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ambient",
    "accessibility"
   ]
  },
  {
   "id": "40f8603307bee87e3ad7e18af26ecf819ec3289b",
   "url": "https://stellate.app/?genre=house&seed=3379&path=1101.20850,1784.4857,896.90&xdur=0.036",
   "external_url": "https://github.com/aboard-io/stellate/commit/40f8603307bee87e3ad7e18af26ecf819ec3289b",
   "title": "THE MATHEMATICAL FICTION: the 67 real genres get invented names + re-voiced cards",
   "summary": "Paul: \"Rename all the 'real' genres with evocative names. Make this whole thing a work of mathematical fiction.\" Anchor ids, recipes, comments, POS, fixtures: UNTOUCHED (134 diff lines in genre-kernel.js = exactly 67 label/info pairs).",
   "content_html": "<p>Paul: &quot;Rename all the 'real' genres with evocative names. Make this whole thing a work of mathematical fiction.&quot; Anchor ids, recipes, comments, POS, fixtures: UNTOUCHED (134 diff lines in genre-kernel.js = exactly 67 label/info pairs).</p>\n<ul><li>Consistency sweep: how.html stage-1/2 diagrams now show fiction labels (basement sermon/mirrorball shift/sweat equity/rollerlacquer + far stars), &quot;prog: disco&quot; corrected to the real id funk_vamp (no &quot;disco&quot;…</li><li>The 67, old -&gt; new: techno Techno -&gt; Concrete Metronome house House -&gt; Basement Sermon jungle Jungle -&gt; Canopy Pressure triphop Trip hop -&gt; Drizzle Noir vaporwave Vaporwave -&gt; Marble Escalator synthwave…</li><li>Worldbuilding pins: prelude/fugue share a stone room (The Turning Stair / The Patient Chase cross-reference); italo winks at synthwave (&quot;the night-drive two doors down&quot;) without naming it.</li><li>Deliberately skipped (out of territory): other anchors' cards that mention real genres (pigeonstep/dmvstep say &quot;2-step garage&quot;, transitwave says &quot;vaporwave&quot;)</li></ul>\n<p><em>Verified:</em> verify.sh --no-cache: matrix PASS (diagonal-dominant) + engine + validate + prove + matproof, total PASS 57.8s. theory/pipes/invariants suites green.</p>\n<p><a href=\"https://stellate.app/?genre=house&amp;seed=3379&amp;path=1101.20850,1784.4857,896.90&amp;xdur=0.036\">▶ Play it: Congregation Furnace → Espresso Laser → The Turning Stair — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/40f8603307bee87e3ad7e18af26ecf819ec3289b\">40f8603</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"Rename all the 'real' genres with evocative names. Make this whole thing a work of mathematical fiction.\" Anchor ids, recipes, comments, POS, fixtures: UNTOUCHED (134 diff lines in genre-kernel.js = exactly 67 label/info pairs).\n\n• Consistency sweep: how.html stage-1/2 diagrams now show fiction labels (basement sermon/mirrorball shift/sweat equity/rollerlacquer + far stars), \"prog: disco\" corrected to the real id funk_vamp (no \"disco\"…\n\n• The 67, old -> new: techno Techno -> Concrete Metronome house House -> Basement Sermon jungle Jungle -> Canopy Pressure triphop Trip hop -> Drizzle Noir vaporwave Vaporwave -> Marble Escalator synthwave…\n\n• Worldbuilding pins: prelude/fugue share a stone room (The Turning Stair / The Patient Chase cross-reference); italo winks at synthwave (\"the night-drive two doors down\") without naming it.\n\n• Deliberately skipped (out of territory): other anchors' cards that mention real genres (pigeonstep/dmvstep say \"2-step garage\", transitwave says \"vaporwave\")\n\nVerified: verify.sh --no-cache: matrix PASS (diagonal-dominant) + engine + validate + prove + matproof, total PASS 57.8s. theory/pipes/invariants suites green.\n\n▶ Play it: Congregation Furnace → Espresso Laser → The Turning Stair — the three genres this change names, as one path https://stellate.app/?genre=house&seed=3379&path=1101.20850,1784.4857,896.90&xdur=0.036\n\n40f8603 https://github.com/aboard-io/stellate/commit/40f8603307bee87e3ad7e18af26ecf819ec3289b",
   "date_published": "2026-07-10T16:46:52.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "house",
    "italo",
    "prelude",
    "accessibility"
   ]
  },
  {
   "id": "2ffd1ec447c5e4bf3b5360c04c303bb608aa138b",
   "url": "https://stellate.app/?genre=subrattle&seed=5636&path=2110.6172,1961.12359,1446.5785&xdur=0.111",
   "external_url": "https://github.com/aboard-io/stellate/commit/2ffd1ec447c5e4bf3b5360c04c303bb608aa138b",
   "title": "Twelve new genre spaces: the hip hop cosmos, grunge, emo, indie pop, diva pop, the floor",
   "summary": "Paul's missing-spaces ask (NEXT.md wave 2), born as mathematical fiction — no real-world names, cards describe the sound. All authored through tools/genre-tool.js (measured target rows, never guessed), 228 -> 240:",
   "content_html": "<p>Paul's missing-spaces ask (NEXT.md wave 2), born as mathematical fiction — no real-world names, cards describe the sound. All authored through tools/genre-tool.js (measured target rows, never guessed), 228 -&gt; 240:</p>\n<ul><li>hip hop cosmos: crateflip (sample-flip at 98, chopUse .4-.6), lowglide (g-funk whine: mono glide lead + sub, 88-96), subrattle (trap: 808 sub + rolling hats 1.2-2.4/beat at 140), hollerknock (crunk chant at…</li><li>Numbers: matrix 240/240 diagonal-dominant --no-cache; validate --quick PASS (dominance every genre, determinism byte-stable, 0 dangling refs); musicality all green (card-lie count 0</li><li>Guitar note: higain insert claims were attempted and REJECTED by mechanism — kernel INSERT_DEFAULTS has no higain entry (pool entries silently drop) and constrain() routes sampler voices to distort-only (the…</li></ul>\n<p><a href=\"https://stellate.app/?genre=subrattle&amp;seed=5636&amp;path=2110.6172,1961.12359,1446.5785&amp;xdur=0.111\">▶ Play it: Infrasound Omen → Ohmic Grievance → Beehive Antenna — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/2ffd1ec447c5e4bf3b5360c04c303bb608aa138b\">2ffd1ec</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul's missing-spaces ask (NEXT.md wave 2), born as mathematical fiction — no real-world names, cards describe the sound. All authored through tools/genre-tool.js (measured target rows, never guessed), 228 -> 240:\n\n• hip hop cosmos: crateflip (sample-flip at 98, chopUse .4-.6), lowglide (g-funk whine: mono glide lead + sub, 88-96), subrattle (trap: 808 sub + rolling hats 1.2-2.4/beat at 140), hollerknock (crunk chant at…\n\n• Numbers: matrix 240/240 diagonal-dominant --no-cache; validate --quick PASS (dominance every genre, determinism byte-stable, 0 dangling refs); musicality all green (card-lie count 0\n\n• Guitar note: higain insert claims were attempted and REJECTED by mechanism — kernel INSERT_DEFAULTS has no higain entry (pool entries silently drop) and constrain() routes sampler voices to distort-only (the…\n\n▶ Play it: Infrasound Omen → Ohmic Grievance → Beehive Antenna — the three genres this change names, as one path https://stellate.app/?genre=subrattle&seed=5636&path=2110.6172,1961.12359,1446.5785&xdur=0.111\n\n2ffd1ec https://github.com/aboard-io/stellate/commit/2ffd1ec447c5e4bf3b5360c04c303bb608aa138b",
   "date_published": "2026-07-10T16:34:50.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "subrattle",
    "drywire",
    "bouffantbeat",
    "sampler"
   ]
  },
  {
   "id": "74ef73cfdb5cb7a47cfb4ac01af4604fb160ceac",
   "url": "https://stellate.app/?genre=ambient&seed=3807&path=2103.13280,2122.13313,2084.13313&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/74ef73cfdb5cb7a47cfb4ac01af4604fb160ceac",
   "title": "Transport law: stop resumes at the playhead, stop TWICE rewinds",
   "summary": "Paul: \"When I hit stop and start keep playing at the playhead. If I click stop TWICE, then reset to the beginning.\"",
   "content_html": "<p>Paul: &quot;When I hit stop and start keep playing at the playhead. If I click stop TWICE, then reset to the beginning.&quot;</p>\n<ul><li>The first stop already recorded the measure (the bookmarkable-mix work) so ▶ resumes at the playhead. Now a stop while ALREADY stopped</li></ul>\n<p><em>Verified:</em> share-url-run grows the transport-law checks (stop remembers, double-stop rewinds, URL m dropped) — 13/13; explorer-ui + access-ui green.</p>\n<p><a href=\"https://stellate.app/?genre=ambient&amp;seed=3807&amp;path=2103.13280,2122.13313,2084.13313&amp;xdur=13.122\">▶ Play it: Stationary Weather — a long-form genre — put the phone in your pocket and it keeps playing</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/74ef73cfdb5cb7a47cfb4ac01af4604fb160ceac\">74ef73c</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"When I hit stop and start keep playing at the playhead. If I click stop TWICE, then reset to the beginning.\"\n\n• The first stop already recorded the measure (the bookmarkable-mix work) so ▶ resumes at the playhead. Now a stop while ALREADY stopped\n\nVerified: share-url-run grows the transport-law checks (stop remembers, double-stop rewinds, URL m dropped) — 13/13; explorer-ui + access-ui green.\n\n▶ Play it: Stationary Weather — a long-form genre — put the phone in your pocket and it keeps playing https://stellate.app/?genre=ambient&seed=3807&path=2103.13280,2122.13313,2084.13313&xdur=13.122\n\n74ef73c https://github.com/aboard-io/stellate/commit/74ef73cfdb5cb7a47cfb4ac01af4604fb160ceac",
   "date_published": "2026-07-10T16:25:52.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ambient",
    "mobile"
   ]
  },
  {
   "id": "af677c4d0c7b4566aaea12539eb97903dfdddeb6",
   "url": "https://stellate.app/?genre=gabber&seed=2829&path=1809.17533,1679.4415,289.13893&xdur=0.056",
   "external_url": "https://github.com/aboard-io/stellate/commit/af677c4d0c7b4566aaea12539eb97903dfdddeb6",
   "title": "THE MASTERING STAGE: per-voice pan + collision carve + reverb budget + press makeup",
   "summary": "Paul: \"a final mixing/balancing/panning/gainstage/compression stage that does what a good DJ or live sound engineer does. The sound of the fugue is very muddy in the final mix.",
   "content_html": "<p>Paul: &quot;a final mixing/balancing/panning/gainstage/compression stage that does what a good DJ or live sound engineer does. The sound of the fugue is very muddy in the final mix.</p>\n<ul><li>1. STEREO PLACEMENT (state-engine applyMasterPan + renderers): constant-power per-unit pan — melody +0.10, pad -0.08 (+ per-note pitch spread 0.28/oct on sampled pads via notePan), solos alternating +/-0.14…</li><li>2. SAME-TIMBRE COLLISION CARVE (state-engine collisionCarve): two pitched voices on ONE sampler id =&gt; the lead keeps full range, accompaniment gets HPF 300 + a -4dB@450 mud dip on a CLONED strip (bass keeps…</li><li>3. REVERB BUDGET (state-engine reverbScale -&gt; fxParams + reverbColor): wetSum = (sum of voice sends) x reverb, gated by beat DENSITY (share of sections with drums on)</li><li>4. GAIN STAGING (press computeMakeup): per-press peak normalization toward -6 dBFS, ceiling +18 dB, gain 1 for any press already at/above target</li></ul>\n<p><em>Verified:</em> verify.sh --no-cache FULLY GREEN (matrix 28.6s + engine + validate + prove + matproof). segment-parity-test: ALL 9 states PASS BYTE-EQUAL (pan mirrored press/stream/stem-worker).</p>\n<p><a href=\"https://stellate.app/?genre=gabber&amp;seed=2829&amp;path=1809.17533,1679.4415,289.13893&amp;xdur=0.056\">▶ Play it: Jackhammer Communion → Food Court Eternity → Cretaceous Vespers — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/af677c4d0c7b4566aaea12539eb97903dfdddeb6\">af677c4</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"a final mixing/balancing/panning/gainstage/compression stage that does what a good DJ or live sound engineer does. The sound of the fugue is very muddy in the final mix.\n\n• 1. STEREO PLACEMENT (state-engine applyMasterPan + renderers): constant-power per-unit pan — melody +0.10, pad -0.08 (+ per-note pitch spread 0.28/oct on sampled pads via notePan), solos alternating +/-0.14…\n\n• 2. SAME-TIMBRE COLLISION CARVE (state-engine collisionCarve): two pitched voices on ONE sampler id => the lead keeps full range, accompaniment gets HPF 300 + a -4dB@450 mud dip on a CLONED strip (bass keeps…\n\n• 3. REVERB BUDGET (state-engine reverbScale -> fxParams + reverbColor): wetSum = (sum of voice sends) x reverb, gated by beat DENSITY (share of sections with drums on)\n\n• 4. GAIN STAGING (press computeMakeup): per-press peak normalization toward -6 dBFS, ceiling +18 dB, gain 1 for any press already at/above target\n\nVerified: verify.sh --no-cache FULLY GREEN (matrix 28.6s + engine + validate + prove + matproof). segment-parity-test: ALL 9 states PASS BYTE-EQUAL (pan mirrored press/stream/stem-worker).\n\n▶ Play it: Jackhammer Communion → Food Court Eternity → Cretaceous Vespers — the three genres this change names, as one path https://stellate.app/?genre=gabber&seed=2829&path=1809.17533,1679.4415,289.13893&xdur=0.056\n\naf677c4 https://github.com/aboard-io/stellate/commit/af677c4d0c7b4566aaea12539eb97903dfdddeb6",
   "date_published": "2026-07-10T16:23:54.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "gabber",
    "vaporwave",
    "dinosynth",
    "sampler"
   ]
  },
  {
   "id": "02cad068adb77bffec1c53587cb1f20554138150",
   "url": "https://stellate.app/?genre=sludgemetal&seed=2056&path=1337.9352,1030.7218,859.9931&xdur=0.267",
   "external_url": "https://github.com/aboard-io/stellate/commit/02cad068adb77bffec1c53587cb1f20554138150",
   "title": "Balance loop 3: the anchors claim the synthesis-depth machinery",
   "summary": "b328159 shipped hi-gain staging, filter envelopes, and tempo-synced LFOs with no anchor claiming them. Nineteen anchors now do:",
   "content_html": "<p>b328159 shipped hi-gain staging, filter envelopes, and tempo-synced LFOs with no anchor claiming them. Nineteen anchors now do:</p>\n<ul><li>HIGAIN, the metal wing (per-archetype stage/tone, replaces strip distort where it stood): heavymetal (2-3 stages, the wall), longshipwhip (thrash TIGHT-GATED, mid-scooped, gate .55-.8), sludgemetal +…</li><li><strong>FENV</strong> — electro bass+lead and acidhouse's pluck-lead seeds claim the unified fenvAmount/fenvDecay (the legacy multiplier fenv removed on those voices so envelopes never stack; tb303 keeps envmod).</li><li>LFO sync: dubstep wobbleBars .125 (THE 1/8 wobble, was free-running 1.5-4.5 Hz), italo juno60 pwmBase/pwmLfo, trance pad tremolo gate at a 1/16 (rateBars .0625, shape .7-1).</li><li><strong>WAH TRIM</strong> — disco/newjack/picnicswing/ chromeufo wah mix ranges -&gt; .6-.7 (full-wet trimmed sampled funk bass ~3.9 dB).</li></ul>\n<p><em>Verified:</em> verify.sh --no-cache fully green (matrix 228/228 + validate + engine + prove + matproof); probes higain/fenv/lfo-sync all PASS; theory/pipes/meter/musicality/invariants PASS</p>\n<p><a href=\"https://stellate.app/?genre=sludgemetal&amp;seed=2056&amp;path=1337.9352,1030.7218,859.9931&amp;xdur=0.267\">▶ Play it: Molasses Avalanche → Downbeat Notary → Highway Heat Death — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/02cad068adb77bffec1c53587cb1f20554138150\">02cad06</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "b328159 shipped hi-gain staging, filter envelopes, and tempo-synced LFOs with no anchor claiming them. Nineteen anchors now do:\n\n• HIGAIN, the metal wing (per-archetype stage/tone, replaces strip distort where it stood): heavymetal (2-3 stages, the wall), longshipwhip (thrash TIGHT-GATED, mid-scooped, gate .55-.8), sludgemetal +…\n\nFENV — electro bass+lead and acidhouse's pluck-lead seeds claim the unified fenvAmount/fenvDecay (the legacy multiplier fenv removed on those voices so envelopes never stack; tb303 keeps envmod).\n\n• LFO sync: dubstep wobbleBars .125 (THE 1/8 wobble, was free-running 1.5-4.5 Hz), italo juno60 pwmBase/pwmLfo, trance pad tremolo gate at a 1/16 (rateBars .0625, shape .7-1).\n\nWAH TRIM — disco/newjack/picnicswing/ chromeufo wah mix ranges -> .6-.7 (full-wet trimmed sampled funk bass ~3.9 dB).\n\nVerified: verify.sh --no-cache fully green (matrix 228/228 + validate + engine + prove + matproof); probes higain/fenv/lfo-sync all PASS; theory/pipes/meter/musicality/invariants PASS\n\n▶ Play it: Molasses Avalanche → Downbeat Notary → Highway Heat Death — the three genres this change names, as one path https://stellate.app/?genre=sludgemetal&seed=2056&path=1337.9352,1030.7218,859.9931&xdur=0.267\n\n02cad06 https://github.com/aboard-io/stellate/commit/02cad068adb77bffec1c53587cb1f20554138150",
   "date_published": "2026-07-10T15:59:18.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "sludgemetal",
    "funk",
    "synthwave",
    "found"
   ]
  },
  {
   "id": "1ebf2a88645876da74f383e5db802a1e1e0fcd85",
   "url": "https://stellate.app/access.html?genre=ambient&seed=1744",
   "external_url": "https://github.com/aboard-io/stellate/commit/1ebf2a88645876da74f383e5db802a1e1e0fcd85",
   "title": "vector-kernel STEP 1: columnar events (engine/columns.js) behind buildEvents, byte-identical",
   "summary": "docs/NEXT.md 5b, Paul's directive: rebuild the kernel toward lists of vectors run through streaming transformations, APL-style. This step introduces the struct-of-arrays substrate and converts the first two passes; the randomness tape (step 2) and the combinator DSL (step 3) build on it.",
   "content_html": "<p>docs/NEXT.md 5b, Paul's directive: rebuild the kernel toward lists of vectors run through streaming transformations, APL-style. This step introduces the struct-of-arrays substrate and converts the first two passes; the randomness tape (step 2) and the combinator DSL (step 3) build on it.</p>\n<ul><li>toColumns(events, fields[, {view}]) -&gt; { n, &lt;f&gt;:Float64Array, mask:{&lt;f&gt;:Uint8Array}, keys, rest } - numeric fields become columns, everything else (strings, bend objects, solo flags, undefined-valued keys)…</li><li>fromColumns(cols) -&gt; rows JSON.stringify-identical to the input: key insertion order preserved, present-with-undefined vs absent preserved</li><li>writeBack(cols, events[, fields]) - mask-gated assignment into the ORIGINAL row objects (columns as a compute view, zero re-materialization risk)</li><li>map/scale/shift (elementwise, in-place, optional mask, scalar or per-row array operands) + where/and mask builders</li></ul>\n<p><em>Verified:</em> columns.test.js (NEW): 6 gates - adversarial round-trip (key order, absent-vs-undefined, NaN/±0, nested objects), compute round-trip, helper semantics, mask-gated writeBack + view mode +…</p>\n<p><a href=\"https://stellate.app/access.html?genre=ambient&amp;seed=1744\">▶ Play it: Stationary Weather — the accessible text version, where the same music arrives as prose</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/1ebf2a88645876da74f383e5db802a1e1e0fcd85\">1ebf2a8</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "docs/NEXT.md 5b, Paul's directive: rebuild the kernel toward lists of vectors run through streaming transformations, APL-style. This step introduces the struct-of-arrays substrate and converts the first two passes; the randomness tape (step 2) and the combinator DSL (step 3) build on it.\n\n• toColumns(events, fields[, {view}]) -> { n, <f>:Float64Array, mask:{<f>:Uint8Array}, keys, rest } - numeric fields become columns, everything else (strings, bend objects, solo flags, undefined-valued keys)…\n\n• fromColumns(cols) -> rows JSON.stringify-identical to the input: key insertion order preserved, present-with-undefined vs absent preserved\n\n• writeBack(cols, events[, fields]) - mask-gated assignment into the ORIGINAL row objects (columns as a compute view, zero re-materialization risk)\n\n• map/scale/shift (elementwise, in-place, optional mask, scalar or per-row array operands) + where/and mask builders\n\nVerified: columns.test.js (NEW): 6 gates - adversarial round-trip (key order, absent-vs-undefined, NaN/±0, nested objects), compute round-trip, helper semantics, mask-gated writeBack + view mode +…\n\n▶ Play it: Stationary Weather — the accessible text version, where the same music arrives as prose https://stellate.app/access.html?genre=ambient&seed=1744\n\n1ebf2a8 https://github.com/aboard-io/stellate/commit/1ebf2a88645876da74f383e5db802a1e1e0fcd85",
   "date_published": "2026-07-10T15:31:33.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ambient",
    "accessibility"
   ]
  },
  {
   "id": "f7572aa76949e225e2ece878e946f2dd71dab06c",
   "url": "https://stellate.app/?genre=atlantidrone&seed=1903&path=2133.13956,1579.13027,2141.12627&xdur=0.484",
   "external_url": "https://github.com/aboard-io/stellate/commit/f7572aa76949e225e2ece878e946f2dd71dab06c",
   "title": "The priming hang: split oversized chord-bars into worker sub-windows",
   "summary": "Root cause (docs/NEXT.md §5, mechanism not per-genre): the chord-bar is the stream-worker's feed/render QUANTUM — runLivePump renders one fed bar as ONE blocking renderChunk, posts \"primed\" only after that first chunk lands, and hard-openfails any chunk bigger than the 30s SAB ring.",
   "content_html": "<p>Root cause (docs/NEXT.md §5, mechanism not per-genre): the chord-bar is the stream-worker's feed/render QUANTUM — runLivePump renders one fed bar as ONE blocking renderChunk, posts &quot;primed&quot; only after that first chunk lands, and hard-openfails any chunk bigger than the 30s SAB ring.</p>\n<ul><li>chalkvespers 38.4s / atlantidrone 33.7s / sourdough 32.5s &gt; 30s ring -&gt; &quot;openfail gen1: chunk 1485504 &gt; ring 1323000&quot; (captured headless), swallowed into handle.errors, app spins &quot;priming…&quot; forever, rms 0…</li><li>sourdough is the 4th member of the class (never in the original 22-genre scan); next-largest bar is mallsoft at 19.2s, which always fit.</li><li>Fix: splitFeedWindows() in the ring conductor's feed() — any bar over MAX_FEED_SEC (6s) goes to the WORKER as contiguous [lo..hi) sub-windows.</li><li>Residual (deliberate): the WAV-FIRST mobile conductor still feeds whole bars (runBarAccumPump has no ring cap — slow first segment, not a hang)</li></ul>\n<p><em>Verified:</em> (headless, live-test.html?wavOut=0, seed 7, scratch/ probes): before: atlantidrone NEVER primes (openfail above)</p>\n<p><a href=\"https://stellate.app/?genre=atlantidrone&amp;seed=1903&amp;path=2133.13956,1579.13027,2141.12627&amp;xdur=0.484\">▶ Play it: Hadal Vespers → Subduction Hymnal → Mother Culture Vigil — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/f7572aa76949e225e2ece878e946f2dd71dab06c\">f7572aa</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Root cause (docs/NEXT.md §5, mechanism not per-genre): the chord-bar is the stream-worker's feed/render QUANTUM — runLivePump renders one fed bar as ONE blocking renderChunk, posts \"primed\" only after that first chunk lands, and hard-openfails any chunk bigger than the 30s SAB ring.\n\n• chalkvespers 38.4s / atlantidrone 33.7s / sourdough 32.5s > 30s ring -> \"openfail gen1: chunk 1485504 > ring 1323000\" (captured headless), swallowed into handle.errors, app spins \"priming…\" forever, rms 0…\n\n• sourdough is the 4th member of the class (never in the original 22-genre scan); next-largest bar is mallsoft at 19.2s, which always fit.\n\n• Fix: splitFeedWindows() in the ring conductor's feed() — any bar over MAX_FEED_SEC (6s) goes to the WORKER as contiguous [lo..hi) sub-windows.\n\n• Residual (deliberate): the WAV-FIRST mobile conductor still feeds whole bars (runBarAccumPump has no ring cap — slow first segment, not a hang)\n\nVerified: (headless, live-test.html?wavOut=0, seed 7, scratch/ probes): before: atlantidrone NEVER primes (openfail above)\n\n▶ Play it: Hadal Vespers → Subduction Hymnal → Mother Culture Vigil — the three genres this change names, as one path https://stellate.app/?genre=atlantidrone&seed=1903&path=2133.13956,1579.13027,2141.12627&xdur=0.484\n\nf7572aa https://github.com/aboard-io/stellate/commit/f7572aa76949e225e2ece878e946f2dd71dab06c",
   "date_published": "2026-07-10T15:29:09.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "atlantidrone",
    "doomdrone",
    "sourdough",
    "found"
   ]
  },
  {
   "id": "9cb9351fdeea73a64c638a7b4cab39ce57a5d0a2",
   "url": "https://stellate.app/?genre=transitwave&seed=7455&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/9cb9351fdeea73a64c638a7b4cab39ce57a5d0a2",
   "title": "Offline where possible + the accessible link becomes untappable-proof",
   "summary": "OFFLINE (Paul: \"we need it to work offline — where possible. For example precache samples for instruments along a route\"). sw.js splits strategy by the repo's own immutability law: CACHE-FIRST for /found/** and /engine/faust/dist/** (the deploy invariant already guarantees those classes never change…",
   "content_html": "<p>OFFLINE (Paul: &quot;we need it to work offline — where possible. For example precache samples for instruments along a route&quot;). sw.js splits strategy by the repo's own immutability law: CACHE-FIRST for /found/** and /engine/faust/dist/** (the deploy invariant already guarantees those classes never change…</p>\n<ul><li>app/precache.js warms the ROUTE AHEAD of the traveler: on any path/seed change (debounced, keyed) it samples weightsAt along every leg, mixes the crossed genres once each, resolves the actual draw set</li><li>THE ACCESSIBLE LINK (Paul: &quot;tapping accessible text version goes nowhere&quot;). Unreproducible in chromium at any viewport — iOS-Safari-side</li></ul>\n<p><em>Verified:</em> explorer-ui, access-ui, share-url all green (one flaky explorer FAIL under fleet CPU contention, clean on re-run).</p>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=7455&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/9cb9351fdeea73a64c638a7b4cab39ce57a5d0a2\">9cb9351</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "OFFLINE (Paul: \"we need it to work offline — where possible. For example precache samples for instruments along a route\"). sw.js splits strategy by the repo's own immutability law: CACHE-FIRST for /found/** and /engine/faust/dist/** (the deploy invariant already guarantees those classes never change…\n\n• app/precache.js warms the ROUTE AHEAD of the traveler: on any path/seed change (debounced, keyed) it samples weightsAt along every leg, mixes the crossed genres once each, resolves the actual draw set\n\n• THE ACCESSIBLE LINK (Paul: \"tapping accessible text version goes nowhere\"). Unreproducible in chromium at any viewport — iOS-Safari-side\n\nVerified: explorer-ui, access-ui, share-url all green (one flaky explorer FAIL under fleet CPU contention, clean on re-run).\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=7455&path=749.12536,768.12569,730.12569&xdur=13.122\n\n9cb9351 https://github.com/aboard-io/stellate/commit/9cb9351fdeea73a64c638a7b4cab39ce57a5d0a2",
   "date_published": "2026-07-10T15:18:06.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "111a5d5a64a4b80d20b901c043267ec954ae6197",
   "url": "https://stellate.app/?genre=gabber&seed=3506&path=1809.17533,1992.10036&xdur=0.1",
   "external_url": "https://github.com/aboard-io/stellate/commit/111a5d5a64a4b80d20b901c043267ec954ae6197",
   "title": "card-truth: fix the 3 genuine card-lies (hoover / rave piano+break / ska guitar)",
   "summary": "The promises gate named 3 remaining lies (NEXT.md 4b); all three are now KEPT and the catalog card-lie count is ZERO:",
   "content_html": "<p>The promises gate named 3 remaining lies (NEXT.md 4b); all three are now KEPT and the catalog card-lie count is ZERO:</p>\n<ul><li>1. HOOVER as a SIGNATURE model (gabber + happyhardcore): the cards promise hoover stabs but &quot;stack&quot; was sampled away to a wind fallback.</li><li>2. happyhardcore's piano + breakbeat: lead pool now [&quot;hoover&quot; x3, &quot;sampler&quot;] with samplerPool [&quot;bright_yamaha_grand&quot;] (the '92 rave piano riff, 2/12 seeds measured) and a one-bar amen ROLL into every section…</li><li>3. ska's guitar skank: pads samplerPool [&quot;clean_guitar&quot; x2, &quot;percussive_organ&quot;,&quot;rock_organ&quot;] - the choppy offbeat comp layer is guitar-first (7/20 seeds draw it; the 2-tone organ keeps the rest).</li></ul>\n<p><em>Verified:</em> verify.sh --no-cache fully green (matrix 228/228 diagonal dominant, gabber/happyhardcore/ska all 100* self; validate/engine/prove/matproof PASS).</p>\n<p><a href=\"https://stellate.app/?genre=gabber&amp;seed=3506&amp;path=1809.17533,1992.10036&amp;xdur=0.1\">▶ Play it: Jackhammer Communion → Serotonin Stampede — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/111a5d5a64a4b80d20b901c043267ec954ae6197\">111a5d5</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The promises gate named 3 remaining lies (NEXT.md 4b); all three are now KEPT and the catalog card-lie count is ZERO:\n\n• 1. HOOVER as a SIGNATURE model (gabber + happyhardcore): the cards promise hoover stabs but \"stack\" was sampled away to a wind fallback.\n\n• 2. happyhardcore's piano + breakbeat: lead pool now [\"hoover\" x3, \"sampler\"] with samplerPool [\"bright_yamaha_grand\"] (the '92 rave piano riff, 2/12 seeds measured) and a one-bar amen ROLL into every section…\n\n• 3. ska's guitar skank: pads samplerPool [\"clean_guitar\" x2, \"percussive_organ\",\"rock_organ\"] - the choppy offbeat comp layer is guitar-first (7/20 seeds draw it; the 2-tone organ keeps the rest).\n\nVerified: verify.sh --no-cache fully green (matrix 228/228 diagonal dominant, gabber/happyhardcore/ska all 100* self; validate/engine/prove/matproof PASS).\n\n▶ Play it: Jackhammer Communion → Serotonin Stampede — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=gabber&seed=3506&path=1809.17533,1992.10036&xdur=0.1\n\n111a5d5 https://github.com/aboard-io/stellate/commit/111a5d5a64a4b80d20b901c043267ec954ae6197",
   "date_published": "2026-07-10T15:10:16.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "gabber",
    "happyhardcore",
    "sampler"
   ]
  },
  {
   "id": "d5d2e614bc350784043e765353afa6385333ee8e",
   "url": "https://stellate.app/access.html?genre=ambient&seed=5468",
   "external_url": "https://github.com/aboard-io/stellate/commit/d5d2e614bc350784043e765353afa6385333ee8e",
   "title": "The mix is a URL: bookmarkable measures, a draggable playhead, no macros",
   "summary": "Paul 2026-07-10: \"make the positions of the nodes and the seed update in a query string so the entire site is bookmarkable. Update it with measure numbers so we can drop in on any part of the mix.",
   "content_html": "<p>Paul 2026-07-10: &quot;make the positions of the nodes and the seed update in a query string so the entire site is bookmarkable. Update it with measure numbers so we can drop in on any part of the mix.</p>\n<ul><li>THE BOOKMARKABLE MIX (app/share.js). ?seed&amp;path&amp;pace&amp;mode&amp;m ride the address bar, refreshed per bar (history.replaceState — no history spam).</li><li>THE DRAGGABLE PLAYHEAD (starmap). With a path, the pink traveler IS the playhead: grab it (screen-space hit-test like the waypoints) and slide</li><li>THE MEASURE-BLOCK PLAYHEAD (ⓘ viz). The one long sweep line is now a soft 4-beat block that lights the ACTIVE MEASURE and steps to the next — you read &quot;measure 2 of this bar&quot; at a glance.</li><li>MACROS REMOVED SITEWIDE. The eight sliders leave panels/access/state/targeting/ main; test/macro-live-run.js retired; access-ui's slider check dropped.</li></ul>\n<p><em>Verified:</em> NEW test/share-url-run.js (11 checks: restore, drop-in serial, live URL advance, playhead drag, macros gone, zero errors) + genre-viz + blend-arrival + live-test + access-ui + explorer-ui +…</p>\n<p><a href=\"https://stellate.app/access.html?genre=ambient&amp;seed=5468\">▶ Play it: Stationary Weather — the accessible text version, where the same music arrives as prose</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/d5d2e614bc350784043e765353afa6385333ee8e\">d5d2e61</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul 2026-07-10: \"make the positions of the nodes and the seed update in a query string so the entire site is bookmarkable. Update it with measure numbers so we can drop in on any part of the mix.\n\n• THE BOOKMARKABLE MIX (app/share.js). ?seed&path&pace&mode&m ride the address bar, refreshed per bar (history.replaceState — no history spam).\n\n• THE DRAGGABLE PLAYHEAD (starmap). With a path, the pink traveler IS the playhead: grab it (screen-space hit-test like the waypoints) and slide\n\n• THE MEASURE-BLOCK PLAYHEAD (ⓘ viz). The one long sweep line is now a soft 4-beat block that lights the ACTIVE MEASURE and steps to the next — you read \"measure 2 of this bar\" at a glance.\n\n• MACROS REMOVED SITEWIDE. The eight sliders leave panels/access/state/targeting/ main; test/macro-live-run.js retired; access-ui's slider check dropped.\n\nVerified: NEW test/share-url-run.js (11 checks: restore, drop-in serial, live URL advance, playhead drag, macros gone, zero errors) + genre-viz + blend-arrival + live-test + access-ui + explorer-ui +…\n\n▶ Play it: Stationary Weather — the accessible text version, where the same music arrives as prose https://stellate.app/access.html?genre=ambient&seed=5468\n\nd5d2e61 https://github.com/aboard-io/stellate/commit/d5d2e614bc350784043e765353afa6385333ee8e",
   "date_published": "2026-07-10T15:07:38.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ambient",
    "accessibility"
   ]
  },
  {
   "id": "b8f9c653f3c20b910c3e315b44a468788a13a780",
   "url": "https://stellate.app/?genre=jungle&seed=6979&path=1718.20504,1737.20537,1699.20537&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/b8f9c653f3c20b910c3e315b44a468788a13a780",
   "title": "The offline matrix prover: the anchor catalog as vectors, verified twice",
   "summary": "Paul: \"the kernel can be simplified and rebuilt in terms of lists of vectors run through streaming transformations… think about ways to increase the verifiability and expressiveness of the musical kernel\"",
   "content_html": "<p>Paul: &quot;the kernel can be simplified and rebuilt in terms of lists of vectors run through streaming transformations… think about ways to increase the verifiability and expressiveness of the musical kernel&quot;</p>\n<ul><li>hull() 38 dims proven in one pass (bpm/swing/fx/bass/lead/pad/drums) diff() DIFFERENTIAL cross-check against invariants.js's hand-rolled intervals: 37/38 dims EXACTLY EQUAL, 1 TIGHTER (fx.jux</li><li>Vectorized with plain typed arrays (228×38 is instant); the BLAS/GSL-WASM seam is matrix()/hull()</li></ul>\n<p><em>Verified:</em> prove-matrix.test.js gates it: differential agreement, witness, byte-equal determinism, and SENSITIVITY</p>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=6979&amp;path=1718.20504,1737.20537,1699.20537&amp;xdur=13.122\">▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/b8f9c653f3c20b910c3e315b44a468788a13a780\">b8f9c65</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"the kernel can be simplified and rebuilt in terms of lists of vectors run through streaming transformations… think about ways to increase the verifiability and expressiveness of the musical kernel\"\n\n• hull() 38 dims proven in one pass (bpm/swing/fx/bass/lead/pad/drums) diff() DIFFERENTIAL cross-check against invariants.js's hand-rolled intervals: 37/38 dims EXACTLY EQUAL, 1 TIGHTER (fx.jux\n\n• Vectorized with plain typed arrays (228×38 is instant); the BLAS/GSL-WASM seam is matrix()/hull()\n\nVerified: prove-matrix.test.js gates it: differential agreement, witness, byte-equal determinism, and SENSITIVITY\n\n▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide https://stellate.app/?genre=jungle&seed=6979&path=1718.20504,1737.20537,1699.20537&xdur=13.122\n\nb8f9c65 https://github.com/aboard-io/stellate/commit/b8f9c653f3c20b910c3e315b44a468788a13a780",
   "date_published": "2026-07-10T14:34:37.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "drums"
   ]
  },
  {
   "id": "a87e950fdbfea7d66efc6383a797d49eff587560",
   "url": "https://stellate.app/?genre=bebop&seed=4983&path=694.13856,1036.22151,292.16891&xdur=0.09",
   "external_url": "https://github.com/aboard-io/stellate/commit/a87e950fdbfea7d66efc6383a797d49eff587560",
   "title": "Solo taste pass: snares choke like real drums, combos lose the EDM sweep",
   "summary": "Paul's ear on the first solo render (which — mea culpa — never reached the actual solo; at 217bpm the 60s cut ended at beat ~200, the solo starts at 384; what he heard was the verse micro-lick, the pre-chorus master sweep, and the chorus lead.",
   "content_html": "<p>Paul's ear on the first solo render (which — mea culpa — never reached the actual solo; at 217bpm the 60s cut ended at beat ~200, the solo starts at 384; what he heard was the verse micro-lick, the pre-chorus master sweep, and the chorus lead.</p>\n<ul><li>SNARE SELF-CHOKE (&quot;snares stumbling on top of each other — the samples not cutting off fast enough&quot;).</li><li>NO MASTER SWEEPS IN AN ACOUSTIC COMBO (&quot;a huge filter sweep comes in&quot;). The pop form's pre-chorus open sweep (260-&gt;18kHz across a whole section) is an EDM gesture with no place in a jazz/blues/funk/bluegrass…</li></ul>\n<p><em>Verified:</em> verify.sh --no-cache all green (matrix 228/228, validate, engine, prove), segment-parity BYTE-EQUAL.</p>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=4983&amp;path=694.13856,1036.22151,292.16891&amp;xdur=0.09\">▶ Play it: Mercury Interrogation → Crossroads Paperwork → Smoke Arithmetic — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/a87e950fdbfea7d66efc6383a797d49eff587560\">a87e950</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul's ear on the first solo render (which — mea culpa — never reached the actual solo; at 217bpm the 60s cut ended at beat ~200, the solo starts at 384; what he heard was the verse micro-lick, the pre-chorus master sweep, and the chorus lead.\n\n• SNARE SELF-CHOKE (\"snares stumbling on top of each other — the samples not cutting off fast enough\").\n\n• NO MASTER SWEEPS IN AN ACOUSTIC COMBO (\"a huge filter sweep comes in\"). The pop form's pre-chorus open sweep (260->18kHz across a whole section) is an EDM gesture with no place in a jazz/blues/funk/bluegrass…\n\nVerified: verify.sh --no-cache all green (matrix 228/228, validate, engine, prove), segment-parity BYTE-EQUAL.\n\n▶ Play it: Mercury Interrogation → Crossroads Paperwork → Smoke Arithmetic — the three genres this change names, as one path https://stellate.app/?genre=bebop&seed=4983&path=694.13856,1036.22151,292.16891&xdur=0.09\n\na87e950 https://github.com/aboard-io/stellate/commit/a87e950fdbfea7d66efc6383a797d49eff587560",
   "date_published": "2026-07-10T14:26:45.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "blues",
    "jazz",
    "melody"
   ]
  },
  {
   "id": "c191b7643d8526b56c0f4e33a10d6eb876677c48",
   "url": "https://stellate.app/?genre=happyhardcore&seed=2356&path=1992.10036,1505.3720,1809.17533&xdur=0.054",
   "external_url": "https://github.com/aboard-io/stellate/commit/c191b7643d8526b56c0f4e33a10d6eb876677c48",
   "title": "Promises gate precision: hybrid capability, 38 lies -> 3 genuine",
   "summary": "The first card-parse read only the mixed STATE, which false-flags an instrument in the recipe POOL that this seed didn't draw (whalejazz's tenor_sax is in the samplerPool; seeds 1,2 drew the muted trumpet).",
   "content_html": "<p>The first card-parse read only the mixed STATE, which false-flags an instrument in the recipe POOL that this seed didn't draw (whalejazz's tenor_sax is in the samplerPool; seeds 1,2 drew the muted trumpet).</p>\n<ul><li>guitar accepts kpluck (canawave's arpeggiated Karplus guitar);</li><li>theremin accepts a sine/stack/modeld lead (spacelounge's card literally says &quot;theremin-vibrato sine&quot;);</li><li>strings accepts bowed_glass/atmosphere pads; and add a skip-regex so &quot;electric piano&quot; doesn't trip the acoustic-piano claim (crumpetwhirl) and &quot;palm-muted low strings&quot;/&quot;guitar&quot; don't trip orchestral strings…</li><li>38 flagged genres collapse to 3 GENUINE lies the gate should keep naming: gabber + happyhardcore's hoover (never sounds in sampled mode</li></ul>\n<p><a href=\"https://stellate.app/?genre=happyhardcore&amp;seed=2356&amp;path=1992.10036,1505.3720,1809.17533&amp;xdur=0.054\">▶ Play it: Serotonin Stampede → Loon Referendum → Jackhammer Communion — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/c191b7643d8526b56c0f4e33a10d6eb876677c48\">c191b76</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The first card-parse read only the mixed STATE, which false-flags an instrument in the recipe POOL that this seed didn't draw (whalejazz's tenor_sax is in the samplerPool; seeds 1,2 drew the muted trumpet).\n\n• guitar accepts kpluck (canawave's arpeggiated Karplus guitar);\n\n• theremin accepts a sine/stack/modeld lead (spacelounge's card literally says \"theremin-vibrato sine\");\n\n• strings accepts bowed_glass/atmosphere pads; and add a skip-regex so \"electric piano\" doesn't trip the acoustic-piano claim (crumpetwhirl) and \"palm-muted low strings\"/\"guitar\" don't trip orchestral strings…\n\n• 38 flagged genres collapse to 3 GENUINE lies the gate should keep naming: gabber + happyhardcore's hoover (never sounds in sampled mode\n\n▶ Play it: Serotonin Stampede → Loon Referendum → Jackhammer Communion — the three genres this change names, as one path https://stellate.app/?genre=happyhardcore&seed=2356&path=1992.10036,1505.3720,1809.17533&xdur=0.054\n\nc191b76 https://github.com/aboard-io/stellate/commit/c191b7643d8526b56c0f4e33a10d6eb876677c48",
   "date_published": "2026-07-10T14:08:16.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "happyhardcore",
    "canawave",
    "gabber",
    "sampler"
   ]
  },
  {
   "id": "3433f35eb1eb244ff26e6902c4a7257d2bac4c57",
   "url": "https://stellate.app/?genre=blues&seed=3870&path=1036.22151,694.13856,1618.5296&xdur=0.044",
   "external_url": "https://github.com/aboard-io/stellate/commit/3433f35eb1eb244ff26e6902c4a7257d2bac4c57",
   "title": "Solos: the lead improvises over the changes",
   "summary": "Task #23, never started: sec.solo/LICKS existed but the concept didn't. Now five idiomatic genres — bebop, jazz, blues, funk, bluegrass — get a real solo section where the lead improvises over the chord changes, not a pattern table.",
   "content_html": "<p>Task #23, never started: sec.solo/LICKS existed but the concept didn't. Now five idiomatic genres — bebop, jazz, blues, funk, bluegrass — get a real solo section where the lead improvises over the chord changes, not a pattern table.</p>\n<ul><li>The improviser (csd-engine melodyEvents &quot;solo&quot;): per chord bar it builds a line from the chord tones (lead[]) with scale-step connectors and CHROMATIC APPROACH notes into the next target (the bop enclosure)…</li><li>The solo section (genre-kernel buildSections): spliced before the final head (head -&gt; SOLO -&gt; head), the genre's own lead voice takes it, the comp ducks (soloDuck halves the pad bed so the line sits forward).</li></ul>\n<p><em>Verified:</em> matrix 228/228 --no-cache (the dense solo section moves melody/motion features but no genre loses itself), verify.sh green (validate + engine + prove, incl.</p>\n<p><a href=\"https://stellate.app/?genre=blues&amp;seed=3870&amp;path=1036.22151,694.13856,1618.5296&amp;xdur=0.044\">▶ Play it: Crossroads Paperwork → Mercury Interrogation → Centrifugal Hymnal — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/3433f35eb1eb244ff26e6902c4a7257d2bac4c57\">3433f35</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Task #23, never started: sec.solo/LICKS existed but the concept didn't. Now five idiomatic genres — bebop, jazz, blues, funk, bluegrass — get a real solo section where the lead improvises over the chord changes, not a pattern table.\n\n• The improviser (csd-engine melodyEvents \"solo\"): per chord bar it builds a line from the chord tones (lead[]) with scale-step connectors and CHROMATIC APPROACH notes into the next target (the bop enclosure)…\n\n• The solo section (genre-kernel buildSections): spliced before the final head (head -> SOLO -> head), the genre's own lead voice takes it, the comp ducks (soloDuck halves the pad bed so the line sits forward).\n\nVerified: matrix 228/228 --no-cache (the dense solo section moves melody/motion features but no genre loses itself), verify.sh green (validate + engine + prove, incl.\n\n▶ Play it: Crossroads Paperwork → Mercury Interrogation → Centrifugal Hymnal — the three genres this change names, as one path https://stellate.app/?genre=blues&seed=3870&path=1036.22151,694.13856,1618.5296&xdur=0.044\n\n3433f35 https://github.com/aboard-io/stellate/commit/3433f35eb1eb244ff26e6902c4a7257d2bac4c57",
   "date_published": "2026-07-10T14:00:44.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "blues",
    "bebop",
    "bluegrass",
    "found"
   ]
  },
  {
   "id": "901410725ef7582d333db4705e3204b347b8eaa7",
   "url": "https://stellate.app/?genre=gabber&seed=6034&path=1809.17533,1992.10036,694.13856&xdur=0.098",
   "external_url": "https://github.com/aboard-io/stellate/commit/901410725ef7582d333db4705e3204b347b8eaa7",
   "title": "The promises gate: cards can't lie in silence anymore",
   "summary": "Ports the card-truth sweep into engine/musicality.js as an automatic card-parse mode on the PROMISES law. It reads each genre's `info` blurb as a falsifiable contract: parse the concrete instrument/voice NOUNS the card names, and check each against what the genre can actually realize.",
   "content_html": "<p>Ports the card-truth sweep into engine/musicality.js as an automatic card-parse mode on the PROMISES law. It reads each genre's `info` blurb as a falsifiable contract: parse the concrete instrument/voice NOUNS the card names, and check each against what the genre can actually realize.</p>\n<ul><li>The one subtlety that makes it accurate: capability is read from the MIXED STATES, not the spec pools.</li><li>Catalog: 38 card-lie WARNs across 228 genres after this session's wave — the honest remainder (gabber's hoover that never sounds sampled, dnb's absent amen source, whalejazz's empty-pool sax, happyhardcore's…</li><li>All musicality gates green; validate/matrix/engine/prove unaffected.</li></ul>\n<p><a href=\"https://stellate.app/?genre=gabber&amp;seed=6034&amp;path=1809.17533,1992.10036,694.13856&amp;xdur=0.098\">▶ Play it: Jackhammer Communion → Serotonin Stampede → Mercury Interrogation — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/901410725ef7582d333db4705e3204b347b8eaa7\">9014107</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Ports the card-truth sweep into engine/musicality.js as an automatic card-parse mode on the PROMISES law. It reads each genre's `info` blurb as a falsifiable contract: parse the concrete instrument/voice NOUNS the card names, and check each against what the genre can actually realize.\n\n• The one subtlety that makes it accurate: capability is read from the MIXED STATES, not the spec pools.\n\n• Catalog: 38 card-lie WARNs across 228 genres after this session's wave — the honest remainder (gabber's hoover that never sounds sampled, dnb's absent amen source, whalejazz's empty-pool sax, happyhardcore's…\n\n• All musicality gates green; validate/matrix/engine/prove unaffected.\n\n▶ Play it: Jackhammer Communion → Serotonin Stampede → Mercury Interrogation — the three genres this change names, as one path https://stellate.app/?genre=gabber&seed=6034&path=1809.17533,1992.10036,694.13856&xdur=0.098\n\n9014107 https://github.com/aboard-io/stellate/commit/901410725ef7582d333db4705e3204b347b8eaa7",
   "date_published": "2026-07-10T13:21:31.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "gabber",
    "happyhardcore",
    "bebop",
    "sampler"
   ]
  },
  {
   "id": "1bf606ba7d5bb95ad1c3b5f0193f994e2712305d",
   "url": "https://stellate.app/?genre=microwave&seed=2410&path=1276.5376,2129.10846,1913.14117&xdur=0.085",
   "external_url": "https://github.com/aboard-io/stellate/commit/1bf606ba7d5bb95ad1c3b5f0193f994e2712305d",
   "title": "Card-truth wave: the commission cast finds its voice (20 genres)",
   "summary": "The espeak speech cast — 66 lines recorded for the \"commission\" genres — was registered in SAMPLES but wired to nothing: cards promising an auctioneer, an umpire, a DMV window, a modem, and 20 more, delivering silence.",
   "content_html": "<p>The espeak speech cast — 66 lines recorded for the &quot;commission&quot; genres — was registered in SAMPLES but wired to nothing: cards promising an auctioneer, an umpire, a DMV window, a modem, and 20 more, delivering silence.</p>\n<ul><li>buried vox layers for the running voices (rotating the pool, every:2-4, maxDur sized so each clip finishes): sp_atc → airtrafficdrone, sp_ca → canawave, sp_cereal → cerealwave, sp_crier → towncrier, sp_dmv →…</li><li>The three ambiguous mappings were resolved by reading the cards, not guessing: cereal→cerealwave (its card names the cereal ad</li></ul>\n<p><em>Verified:</em> matrix 228/228 --no-cache (no genre dropped, no vol rescue needed), every genre resolves its sp_* ids into foundSources and emits 3-64 speech events, verify.sh (validate + engine + prove)…</p>\n<p><a href=\"https://stellate.app/?genre=microwave&amp;seed=2410&amp;path=1276.5376,2129.10846,1913.14117&amp;xdur=0.085\">▶ Play it: Magnetron Benediction → Hereinafter Forever → Riboflavin Rapture — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/1bf606ba7d5bb95ad1c3b5f0193f994e2712305d\">1bf606b</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The espeak speech cast — 66 lines recorded for the \"commission\" genres — was registered in SAMPLES but wired to nothing: cards promising an auctioneer, an umpire, a DMV window, a modem, and 20 more, delivering silence.\n\n• buried vox layers for the running voices (rotating the pool, every:2-4, maxDur sized so each clip finishes): sp_atc → airtrafficdrone, sp_ca → canawave, sp_cereal → cerealwave, sp_crier → towncrier, sp_dmv →…\n\n• The three ambiguous mappings were resolved by reading the cards, not guessing: cereal→cerealwave (its card names the cereal ad\n\nVerified: matrix 228/228 --no-cache (no genre dropped, no vol rescue needed), every genre resolves its sp_* ids into foundSources and emits 3-64 speech events, verify.sh (validate + engine + prove)…\n\n▶ Play it: Magnetron Benediction → Hereinafter Forever → Riboflavin Rapture — the three genres this change names, as one path https://stellate.app/?genre=microwave&seed=2410&path=1276.5376,2129.10846,1913.14117&xdur=0.085\n\n1bf606b https://github.com/aboard-io/stellate/commit/1bf606ba7d5bb95ad1c3b5f0193f994e2712305d",
   "date_published": "2026-07-10T13:12:07.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "microwave",
    "termswave",
    "cerealwave",
    "voice"
   ]
  },
  {
   "id": "b1e706e6313e27599205243ce53f7020d0815b7a",
   "url": "https://stellate.app/?genre=sludgemetal&seed=2814&path=1337.9352,593.5882,1895.13440&xdur=0.098",
   "external_url": "https://github.com/aboard-io/stellate/commit/b1e706e6313e27599205243ce53f7020d0815b7a",
   "title": "Dynamics vs the snare-law: reconcile on the composed accent",
   "summary": "The drum-dynamics pass scales snare/hat amps, and TWO systems read those amps: the snare-law's no-three-peat dedup (accent buckets) and validate's rendered drum features (drumDensity/snareBalance/hatDensity).",
   "content_html": "<p>The drum-dynamics pass scales snare/hat amps, and TWO systems read those amps: the snare-law's no-three-peat dedup (accent buckets) and validate's rendered drum features (drumDensity/snareBalance/hatDensity).</p>\n<ul><li>dynamics AFTER the dedup -&gt; invariants prove sees three-peats in the faded loudness (octopusminuet×strawberryfog, bramblestep×urchinmatinee);</li><li>dynamics BEFORE the dedup -&gt; the dedup's variation choices shift, drifting the drum features and tipping validate's 2-seed dominance on sludgemetal.</li><li>The resolution is conceptual: the snare-law is a PATTERN promise (no ad-nauseam accent repeat); the dynamics envelope is LOUDNESS.</li></ul>\n<p><em>Verified:</em> matrix 228/228 --no-cache, validate + engine + prove all PASS, segment-parity BYTE-EQUAL, drum swells intact (kick slams 0.640, hat swells 0.047 -&gt; full).</p>\n<p><a href=\"https://stellate.app/?genre=sludgemetal&amp;seed=2814&amp;path=1337.9352,593.5882,1895.13440&amp;xdur=0.098\">▶ Play it: Molasses Avalanche → Hedge Maze Vespers → Doppler Orchard — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/b1e706e6313e27599205243ce53f7020d0815b7a\">b1e706e</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The drum-dynamics pass scales snare/hat amps, and TWO systems read those amps: the snare-law's no-three-peat dedup (accent buckets) and validate's rendered drum features (drumDensity/snareBalance/hatDensity).\n\n• dynamics AFTER the dedup -> invariants prove sees three-peats in the faded loudness (octopusminuet×strawberryfog, bramblestep×urchinmatinee);\n\n• dynamics BEFORE the dedup -> the dedup's variation choices shift, drifting the drum features and tipping validate's 2-seed dominance on sludgemetal.\n\n• The resolution is conceptual: the snare-law is a PATTERN promise (no ad-nauseam accent repeat); the dynamics envelope is LOUDNESS.\n\nVerified: matrix 228/228 --no-cache, validate + engine + prove all PASS, segment-parity BYTE-EQUAL, drum swells intact (kick slams 0.640, hat swells 0.047 -> full).\n\n▶ Play it: Molasses Avalanche → Hedge Maze Vespers → Doppler Orchard — the three genres this change names, as one path https://stellate.app/?genre=sludgemetal&seed=2814&path=1337.9352,593.5882,1895.13440&xdur=0.098\n\nb1e706e https://github.com/aboard-io/stellate/commit/b1e706e6313e27599205243ce53f7020d0815b7a",
   "date_published": "2026-07-10T13:02:55.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "sludgemetal",
    "bramblestep",
    "strawberryfog",
    "drums"
   ]
  },
  {
   "id": "131c4d7bacdc4ff81408ec59cc71370ea25b650c",
   "url": "https://stellate.app/?genre=jungle&seed=6947&path=1718.20504,1737.20537,1699.20537&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/131c4d7bacdc4ff81408ec59cc71370ea25b650c",
   "title": "Drum kits breathe too: variable dynamics per drum voice",
   "summary": "Paul: \"different drum voices can have variable dynamics.\" The first dynamics pass exempted drums wholesale — too blunt. Generalize the ramp to per-voice [floorIn, floorExit] and give drums their own table.",
   "content_html": "<p>Paul: &quot;different drum voices can have variable dynamics.&quot; The first dynamics pass exempted drums wholesale — too blunt. Generalize the ramp to per-voice [floorIn, floorExit] and give drums their own table.</p>\n<ul><li>The BACKBONE (kick / snare / clap / rim) slams in — floorIn 1, so a drop stays slammed — but still fades on the way OUT into a breakdown.</li><li>The pitched voices are unchanged (their floors just moved into the [in,out] shape). A shared dynRuns() walks each lane's active runs once</li><li>Measured on default_song: kick enters unchanged at 0.640 (slam preserved), hat swells 0.047 -&gt; full over its entrance.</li></ul>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=6947&amp;path=1718.20504,1737.20537,1699.20537&amp;xdur=13.122\">▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/131c4d7bacdc4ff81408ec59cc71370ea25b650c\">131c4d7</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"different drum voices can have variable dynamics.\" The first dynamics pass exempted drums wholesale — too blunt. Generalize the ramp to per-voice [floorIn, floorExit] and give drums their own table.\n\n• The BACKBONE (kick / snare / clap / rim) slams in — floorIn 1, so a drop stays slammed — but still fades on the way OUT into a breakdown.\n\n• The pitched voices are unchanged (their floors just moved into the [in,out] shape). A shared dynRuns() walks each lane's active runs once\n\n• Measured on default_song: kick enters unchanged at 0.640 (slam preserved), hat swells 0.047 -> full over its entrance.\n\n▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide https://stellate.app/?genre=jungle&seed=6947&path=1718.20504,1737.20537,1699.20537&xdur=13.122\n\n131c4d7 https://github.com/aboard-io/stellate/commit/131c4d7bacdc4ff81408ec59cc71370ea25b650c",
   "date_published": "2026-07-10T12:51:33.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "drums"
   ]
  },
  {
   "id": "14daa065a3472c64e40311f6b5d3e79cad976c2b",
   "url": "https://stellate.app/?genre=bebop&seed=7229&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/14daa065a3472c64e40311f6b5d3e79cad976c2b",
   "title": "Voices breathe: musical dynamics in the composition",
   "summary": "Paul: \"voices today enter and exit abruptly. Very often dynamics are an active part of every composition.\" They were right — a section turning a voice on snapped it to full level; turning it off cut it dead.",
   "content_html": "<p>Paul: &quot;voices today enter and exit abruptly. Very often dynamics are an active part of every composition.&quot; They were right — a section turning a voice on snapped it to full level; turning it off cut it dead.</p>\n<ul><li>Add a renderer-stage dynamics pass (applyVoiceDynamics). A harmonic/melodic voice — pad, bass, melody</li><li>Serves BOTH engines. Press hands the whole multi-section song, so the run edges are computed from state.sections + spans.</li><li>Renderer-only — the symbolic verifier and musicality never see it, so the confusion matrix is untouched.</li><li>(stem-parity's citypop_s7 error is pre-existing — identical before/after, the sampled-by-default re-pin already filed in NEXT.md.)</li></ul>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=7229&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/14daa065a3472c64e40311f6b5d3e79cad976c2b\">14daa06</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"voices today enter and exit abruptly. Very often dynamics are an active part of every composition.\" They were right — a section turning a voice on snapped it to full level; turning it off cut it dead.\n\n• Add a renderer-stage dynamics pass (applyVoiceDynamics). A harmonic/melodic voice — pad, bass, melody\n\n• Serves BOTH engines. Press hands the whole multi-section song, so the run edges are computed from state.sections + spans.\n\n• Renderer-only — the symbolic verifier and musicality never see it, so the confusion matrix is untouched.\n\n• (stem-parity's citypop_s7 error is pre-existing — identical before/after, the sampled-by-default re-pin already filed in NEXT.md.)\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=7229&path=694.13834,713.13867,675.13867&xdur=13.122\n\n14daa06 https://github.com/aboard-io/stellate/commit/14daa065a3472c64e40311f6b5d3e79cad976c2b",
   "date_published": "2026-07-10T12:40:35.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "d31cb31931fb8bd5275eaedd53ef12ff2e46d790",
   "url": "https://stellate.app/?genre=floppycore&seed=5433&path=1681.19828,1556.19248,2103.13302&xdur=0.114",
   "external_url": "https://github.com/aboard-io/stellate/commit/d31cb31931fb8bd5275eaedd53ef12ff2e46d790",
   "title": "Card-truth wave: the silent sources find their voice (12 urls restored)",
   "summary": "The modem was not alone. Twelve SOURCES carried url:\"\" while their generated audio sat on disk as found/<id>.mp3 — so the found-player fetched \"\" and got silence.",
   "content_html": "<p>The modem was not alone. Twelve SOURCES carried url:&quot;&quot; while their generated audio sat on disk as found/&lt;id&gt;.mp3 — so the found-player fetched &quot;&quot; and got silence.</p>\n<ul><li>Restore all twelve urls to their disk files: crt_whine, floppy_seek, hvac_hum, fax_tone, dryer_spin, chickadee, pigeon_coo, dw_cycle, ferment_bubble, crickets, hydrophone, whale_song.</li><li>Two were also unwired entirely, and the bpm-matched `break` role silently drops a texture clip (no bpm to match), so a naive found.sources add is inert.</li><li>Two honest notes, both in NEXT.md: (1) ~15 genres just gained their intended ambient beds — the matrix guards identity but only Paul's ear can say none sit too loud.</li></ul>\n<p><em>Verified:</em> matrix 228/228 --no-cache, verify.sh (validate + engine + prove) green, affected genres (faxbossa, crtwave, thermostatwave, whalejazz, crickettempo, floppycore, laundrycore) live-render…</p>\n<p><a href=\"https://stellate.app/?genre=floppycore&amp;seed=5433&amp;path=1681.19828,1556.19248,2103.13302&amp;xdur=0.114\">▶ Play it: Abort Retry Fail → Unbalanced Load → Stationary Weather — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/d31cb31931fb8bd5275eaedd53ef12ff2e46d790\">d31cb31</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The modem was not alone. Twelve SOURCES carried url:\"\" while their generated audio sat on disk as found/<id>.mp3 — so the found-player fetched \"\" and got silence.\n\n• Restore all twelve urls to their disk files: crt_whine, floppy_seek, hvac_hum, fax_tone, dryer_spin, chickadee, pigeon_coo, dw_cycle, ferment_bubble, crickets, hydrophone, whale_song.\n\n• Two were also unwired entirely, and the bpm-matched `break` role silently drops a texture clip (no bpm to match), so a naive found.sources add is inert.\n\n• Two honest notes, both in NEXT.md: (1) ~15 genres just gained their intended ambient beds — the matrix guards identity but only Paul's ear can say none sit too loud.\n\nVerified: matrix 228/228 --no-cache, verify.sh (validate + engine + prove) green, affected genres (faxbossa, crtwave, thermostatwave, whalejazz, crickettempo, floppycore, laundrycore) live-render…\n\n▶ Play it: Abort Retry Fail → Unbalanced Load → Stationary Weather — the three genres this change names, as one path https://stellate.app/?genre=floppycore&seed=5433&path=1681.19828,1556.19248,2103.13302&xdur=0.114\n\nd31cb31 https://github.com/aboard-io/stellate/commit/d31cb31931fb8bd5275eaedd53ef12ff2e46d790",
   "date_published": "2026-07-10T12:19:50.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "floppycore",
    "laundrycore",
    "ambient",
    "found"
   ]
  },
  {
   "id": "dfff27b246e947f9ad0123f617aae7e878dc7c2e",
   "url": "https://stellate.app/?genre=auctioncore&seed=2010&path=1647.15288,1276.5376,1423.11686&xdur=0.076",
   "external_url": "https://github.com/aboard-io/stellate/commit/dfff27b246e947f9ad0123f617aae7e878dc7c2e",
   "title": "Card-truth wave: the orphans get wired, the gavel stops stuttering",
   "summary": "The card-truth sweep found a whole cast of registered-but-unwired samples — cards promising an auctioneer, a modem, an umpire, whose audio existed and played for no one.",
   "content_html": "<p>The card-truth sweep found a whole cast of registered-but-unwired samples — cards promising an auctioneer, a modem, an umpire, whose audio existed and played for no one.</p>\n<ul><li>THE LIVE CADENCE AMPLIFIER (foundation). stepWalk feeds the engine a ONE-SECTION, one-cycle song per chord-bar, so buildEvents' sampleEvents pass saw every bar as both the first section (opener) and a section…</li><li>sp_auction_1/2/3 -&gt; auctioncore. &quot;the auctioneer chant IS the genre,&quot; but the three speech clips were wired to nothing.</li><li>modem_handshake -&gt; dialupgabber. Root cause was url:&quot;&quot; — found/modem_handshake .mp3 was on disk but unfetchable, so the &quot;screaming modem negotiation&quot; the card sells never played.</li></ul>\n<p><em>Verified:</em> matrix 228/228 --no-cache, verify.sh (validate + engine + prove) green, musicality green, explorer-ui + access-ui green, auctioncore/dialupgabber/ microwave live-render clean with zero…</p>\n<p><a href=\"https://stellate.app/?genre=auctioncore&amp;seed=2010&amp;path=1647.15288,1276.5376,1423.11686&amp;xdur=0.076\">▶ Play it: Going Going Gone → Magnetron Benediction → Carrier Lost — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/dfff27b246e947f9ad0123f617aae7e878dc7c2e\">dfff27b</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The card-truth sweep found a whole cast of registered-but-unwired samples — cards promising an auctioneer, a modem, an umpire, whose audio existed and played for no one.\n\n• THE LIVE CADENCE AMPLIFIER (foundation). stepWalk feeds the engine a ONE-SECTION, one-cycle song per chord-bar, so buildEvents' sampleEvents pass saw every bar as both the first section (opener) and a section…\n\n• sp_auction_1/2/3 -> auctioncore. \"the auctioneer chant IS the genre,\" but the three speech clips were wired to nothing.\n\n• modem_handshake -> dialupgabber. Root cause was url:\"\" — found/modem_handshake .mp3 was on disk but unfetchable, so the \"screaming modem negotiation\" the card sells never played.\n\nVerified: matrix 228/228 --no-cache, verify.sh (validate + engine + prove) green, musicality green, explorer-ui + access-ui green, auctioncore/dialupgabber/ microwave live-render clean with zero…\n\n▶ Play it: Going Going Gone → Magnetron Benediction → Carrier Lost — the three genres this change names, as one path https://stellate.app/?genre=auctioncore&seed=2010&path=1647.15288,1276.5376,1423.11686&xdur=0.076\n\ndfff27b https://github.com/aboard-io/stellate/commit/dfff27b246e947f9ad0123f617aae7e878dc7c2e",
   "date_published": "2026-07-10T12:03:37.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "auctioncore",
    "microwave",
    "dialupgabber",
    "voice"
   ]
  },
  {
   "id": "7395b9fa90e36b7ea29009bd32893914110bfd30",
   "url": "https://stellate.app/?genre=atlantidrone&seed=8314&path=2133.13956,1727.16539&xdur=0.287",
   "external_url": "https://github.com/aboard-io/stellate/commit/7395b9fa90e36b7ea29009bd32893914110bfd30",
   "title": "The instrument grows a second door: an accessible text version",
   "summary": "access.html + app/access.js — a screen-reader- and keyboard-first way to play Stellate, no vision required. It is not a reduced clone: it imports the same state/world/targeting/live modules the star map uses and drives them by an explicit genre choice or an ordered journey instead of a cursor, so it…",
   "content_html": "<p>access.html + app/access.js — a screen-reader- and keyboard-first way to play Stellate, no vision required. It is not a reduced clone: it imports the same state/world/targeting/live modules the star map uses and drives them by an explicit genre choice or an ordered journey instead of a cursor, so it…</p>\n<ul><li>retargetWeights(weights, pt?) added to targeting.js; retarget(pt) now delegates to it (map behavior unchanged — explorer-ui green).</li><li>Genre picker (all 228, with each card's blurb), explicit-percentage blend, journey builder (an ordered loop of stops), 8 labeled &quot;shape&quot; macro sliders, seed, mode, Play/Stop (Space toggles).</li><li>Only the two DOM ids the imported modules touch at load (#boot, #bgChip) exist as inert aria-hidden stubs; panels.js/starmap.js are never imported.</li><li>Discoverability: a focus-revealed .a11y-skip link at the top of index.html and an About-panel link. Fixed stale &quot;178-genre&quot; -&gt; 228 copy in the About.</li></ul>\n<p><em>Verified:</em> access-ui-run.js: the accessible-page gate (12 checks — all 228 genres, hold + A/B blend + journey with real audio, determinism, zero errors).</p>\n<p><a href=\"https://stellate.app/?genre=atlantidrone&amp;seed=8314&amp;path=2133.13956,1727.16539&amp;xdur=0.287\">▶ Play it: Hadal Vespers → Antiphon Decay — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/7395b9fa90e36b7ea29009bd32893914110bfd30\">7395b9f</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "access.html + app/access.js — a screen-reader- and keyboard-first way to play Stellate, no vision required. It is not a reduced clone: it imports the same state/world/targeting/live modules the star map uses and drives them by an explicit genre choice or an ordered journey instead of a cursor, so it…\n\n• retargetWeights(weights, pt?) added to targeting.js; retarget(pt) now delegates to it (map behavior unchanged — explorer-ui green).\n\n• Genre picker (all 228, with each card's blurb), explicit-percentage blend, journey builder (an ordered loop of stops), 8 labeled \"shape\" macro sliders, seed, mode, Play/Stop (Space toggles).\n\n• Only the two DOM ids the imported modules touch at load (#boot, #bgChip) exist as inert aria-hidden stubs; panels.js/starmap.js are never imported.\n\n• Discoverability: a focus-revealed .a11y-skip link at the top of index.html and an About-panel link. Fixed stale \"178-genre\" -> 228 copy in the About.\n\nVerified: access-ui-run.js: the accessible-page gate (12 checks — all 228 genres, hold + A/B blend + journey with real audio, determinism, zero errors).\n\n▶ Play it: Hadal Vespers → Antiphon Decay — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=atlantidrone&seed=8314&path=2133.13956,1727.16539&xdur=0.287\n\n7395b9f https://github.com/aboard-io/stellate/commit/7395b9fa90e36b7ea29009bd32893914110bfd30",
   "date_published": "2026-07-10T11:41:39.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "atlantidrone",
    "chalkvespers",
    "accessibility"
   ]
  },
  {
   "id": "93bb61e7ce467b6544102700e7887939b207e69a",
   "url": "https://stellate.app/?genre=transitwave&seed=4047&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/93bb61e7ce467b6544102700e7887939b207e69a",
   "title": "Compiled wasm is code, not media: dist/ leaves the immutable class",
   "summary": "The MEDIA_MANIFEST invariant fired on the synthesis-depth recompiles and was right for the third time: engine/faust/dist/ wasm changes under the same name whenever a .dsp recompiles — an immutable cache would serve STALE SYNTHESIS to returning visitors after any voice change.",
   "content_html": "<p>The MEDIA_MANIFEST invariant fired on the synthesis-depth recompiles and was right for the third time: engine/faust/dist/ wasm changes under the same name whenever a .dsp recompiles — an immutable cache would serve STALE SYNTHESIS to returning visitors after any voice change.</p>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=4047&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/93bb61e7ce467b6544102700e7887939b207e69a\">93bb61e</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The MEDIA_MANIFEST invariant fired on the synthesis-depth recompiles and was right for the third time: engine/faust/dist/ wasm changes under the same name whenever a .dsp recompiles — an immutable cache would serve STALE SYNTHESIS to returning visitors after any voice change.\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=4047&path=749.12536,768.12569,730.12569&xdur=13.122\n\n93bb61e https://github.com/aboard-io/stellate/commit/93bb61e7ce467b6544102700e7887939b207e69a",
   "date_published": "2026-07-10T04:09:13.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "fbca2af9f40099fbba72d4a9e79ff531891bad62",
   "url": "https://stellate.app/?genre=vaporwave&seed=1489&path=1679.4415,292.16891,1718.20526&xdur=0.046",
   "external_url": "https://github.com/aboard-io/stellate/commit/fbca2af9f40099fbba72d4a9e79ff531891bad62",
   "title": "Simulator findings: revised flips re-tier, brushed crossings, dead gate removed",
   "summary": "The path-simulator follow-ups (terminated by session limit at the final gate step — changes complete; battery run below by the main session): identity-churn fix in the glide queue (a REVISED identity dim re-enters tier 1 instead of waiting a full cycle at tier 2), dwell-aware verdict semantics in…",
   "content_html": "<p>The path-simulator follow-ups (terminated by session limit at the final gate step — changes complete; battery run below by the main session): identity-churn fix in the glide queue (a REVISED identity dim re-enters tier 1 instead of waiting a full cycle at tier 2), dwell-aware verdict semantics in…</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=1489&amp;path=1679.4415,292.16891,1718.20526&amp;xdur=0.046\">▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/fbca2af9f40099fbba72d4a9e79ff531891bad62\">fbca2af</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The path-simulator follow-ups (terminated by session limit at the final gate step — changes complete; battery run below by the main session): identity-churn fix in the glide queue (a REVISED identity dim re-enters tier 1 instead of waiting a full cycle at tier 2), dwell-aware verdict semantics in…\n\n▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix https://stellate.app/?genre=vaporwave&seed=1489&path=1679.4415,292.16891,1718.20526&xdur=0.046\n\nfbca2af https://github.com/aboard-io/stellate/commit/fbca2af9f40099fbba72d4a9e79ff531891bad62",
   "date_published": "2026-07-10T04:07:42.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "jazz",
    "jungle",
    "travel"
   ]
  },
  {
   "id": "656d567c58da3448ba03ab4e9382f404efbbd45a",
   "url": "https://stellate.app/?genre=dubstep&seed=8380&path=1379.18226,1398.18259,1360.18259&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/656d567c58da3448ba03ab4e9382f404efbbd45a",
   "title": "Synthesis depth: hi-gain staging, filter envelopes, tempo-synced LFOs",
   "summary": "The three-part modulation program (terminated by session limit at the documentation step — work complete and gated, report reconstructed from the tree):",
   "content_html": "<p>The three-part modulation program (terminated by session limit at the documentation step — work complete and gated, report reconstructed from the tree):</p>\n<ul><li>insert_higain.dsp — the staged amp heavy genres deserved: tightness gate -&gt; cascaded drive stages with inter-stage HP -&gt; tone stack -&gt; cab-sim -&gt; DC blocker</li><li>insert_fenv.dsp + a unified filter-envelope surface across 17 synth models (fenvAmount/fenvAttack/fenvDecay with consistent semantics</li><li>Tempo-synced LFO slice (Part C): musical-division rates on the modulation surface, probe-proven (test/probe-lfo-sync.js).</li><li>Plus the invariants finding: INSERT_DEFAULTS gains the granular entry — dubstep's declared &quot;granular stutter clouds&quot; can now actually fire (was dead 0/60 seeds).</li></ul>\n<p><a href=\"https://stellate.app/?genre=dubstep&amp;seed=8380&amp;path=1379.18226,1398.18259,1360.18259&amp;xdur=13.122\">▶ Play it: Seismic Ultimatum — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/656d567c58da3448ba03ab4e9382f404efbbd45a\">656d567</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The three-part modulation program (terminated by session limit at the documentation step — work complete and gated, report reconstructed from the tree):\n\n• insert_higain.dsp — the staged amp heavy genres deserved: tightness gate -> cascaded drive stages with inter-stage HP -> tone stack -> cab-sim -> DC blocker\n\n• insert_fenv.dsp + a unified filter-envelope surface across 17 synth models (fenvAmount/fenvAttack/fenvDecay with consistent semantics\n\n• Tempo-synced LFO slice (Part C): musical-division rates on the modulation surface, probe-proven (test/probe-lfo-sync.js).\n\n• Plus the invariants finding: INSERT_DEFAULTS gains the granular entry — dubstep's declared \"granular stutter clouds\" can now actually fire (was dead 0/60 seeds).\n\n▶ Play it: Seismic Ultimatum — parked on the genre this change names https://stellate.app/?genre=dubstep&seed=8380&path=1379.18226,1398.18259,1360.18259&xdur=13.122\n\n656d567 https://github.com/aboard-io/stellate/commit/656d567c58da3448ba03ab4e9382f404efbbd45a",
   "date_published": "2026-07-10T04:07:42.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "dubstep",
    "voice"
   ]
  },
  {
   "id": "6d1b9db2f6c563d649be1b72d5fcd81649c0eade",
   "url": "https://stellate.app/?genre=dubstep&seed=8386&path=1379.18248,1109.13089&xdur=0.145",
   "external_url": "https://github.com/aboard-io/stellate/commit/6d1b9db2f6c563d649be1b72d5fcd81649c0eade",
   "title": "Formal methods: the convexity proof + property sweeps, wired into verify",
   "summary": "Paul: \"What can you do with the kernel using formal or verifiable methods?\" engine/invariants.js answers with an epistemic ladder (docs/INVARIANTS.md): PROVEN > SWEPT > GATED-ELSEWHERE > EARS.",
   "content_html": "<p>Paul: &quot;What can you do with the kernel using formal or verifiable methods?&quot; engine/invariants.js answers with an epistemic ladder (docs/INVARIANTS.md): PROVEN &gt; SWEPT &gt; GATED-ELSEWHERE &gt; EARS.</p>\n<ul><li>The centerpiece is a real proof, not a sample: resolveMulti's scalar paths are weighted means (Sigma w = 1), so every blend is a convex combination of anchor endpoints</li><li>The sweeps (seeded, deterministic, falsifiability-tested): totality over all anchors + 155,268 exhaustive state-level pair resolutions, constrain idempotence, duration-solver contract, snare-law's…</li><li>Findings — the product: (1) bpm is consumer-UNBOUNDED (nothing clamps tempo anywhere; a bpm-300 anchor would sail through — filed)</li></ul>\n<p><em>Verified:</em> verify.sh grows a fourth concurrent suite: prove (quick, ~15s; the wait loop learned to count to four).</p>\n<p><a href=\"https://stellate.app/?genre=dubstep&amp;seed=8386&amp;path=1379.18248,1109.13089&amp;xdur=0.145\">▶ Play it: Seismic Ultimatum → Non Euclidean Court — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/6d1b9db2f6c563d649be1b72d5fcd81649c0eade\">6d1b9db</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"What can you do with the kernel using formal or verifiable methods?\" engine/invariants.js answers with an epistemic ladder (docs/INVARIANTS.md): PROVEN > SWEPT > GATED-ELSEWHERE > EARS.\n\n• The centerpiece is a real proof, not a sample: resolveMulti's scalar paths are weighted means (Sigma w = 1), so every blend is a convex combination of anchor endpoints\n\n• The sweeps (seeded, deterministic, falsifiability-tested): totality over all anchors + 155,268 exhaustive state-level pair resolutions, constrain idempotence, duration-solver contract, snare-law's…\n\n• Findings — the product: (1) bpm is consumer-UNBOUNDED (nothing clamps tempo anywhere; a bpm-300 anchor would sail through — filed)\n\nVerified: verify.sh grows a fourth concurrent suite: prove (quick, ~15s; the wait loop learned to count to four).\n\n▶ Play it: Seismic Ultimatum → Non Euclidean Court — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=dubstep&seed=8386&path=1379.18248,1109.13089&xdur=0.145\n\n6d1b9db https://github.com/aboard-io/stellate/commit/6d1b9db2f6c563d649be1b72d5fcd81649c0eade",
   "date_published": "2026-07-10T03:30:27.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "dubstep",
    "crimsoncourt",
    "found"
   ]
  },
  {
   "id": "54eea62ba90c8e1ffc369df0039d6fdbd3941cf7",
   "url": "https://stellate.app/?genre=lofi&seed=2251&path=263.9071,1829.2992,1838.21125&xdur=0.041",
   "external_url": "https://github.com/aboard-io/stellate/commit/54eea62ba90c8e1ffc369df0039d6fdbd3941cf7",
   "title": "Balance loop 2: 228/228 musical — zero anchors edited, three mechanisms",
   "summary": "Paul: \"What about the other genres.\" All of them, now: 169 OK / 59 WARN -> 228 OK / 0 WARN / 0 FAIL (verified at seeds 1-5 too), worst 0.92 -> 0.99, and every fix was mechanism-level:",
   "content_html": "<p>Paul: &quot;What about the other genres.&quot; All of them, now: 169 OK / 59 WARN -&gt; 228 OK / 0 WARN / 0 FAIL (verified at seeds 1-5 too), worst 0.92 -&gt; 0.99, and every fix was mechanism-level:</p>\n<ul><li><strong>SAMPLER REGISTER HOME</strong> — progressions voice leads at the synth-lead octave (midi 60-95) while sampled winds/ guitars/choirs top out at 81-86 — so phrase PEAKS folded down an octave at render and the climax inverted.</li><li>The grow tie-break, one level down: pre-chorus and chorus are both &quot;peak&quot;, so loop 1's energy-aware growth still stacked on the FIRST peak and pushed toastercore's hook 192 -&gt; 224.</li><li>BLOOM v1.2 design floors: four &quot;stragglers&quot; (standbylightdrive, singeli, bebop, walrusfuzz) were ON their form's designed proportions — the beat tables punished tempo/cycle geometry, not drag.</li></ul>\n<p><em>Verified:</em> Matrix 228/228 --no-cache three times over; verify/meter/theory/ pipes/speech green; musicality suite grew to 24 gates; determinism byte-proven</p>\n<p><a href=\"https://stellate.app/?genre=lofi&amp;seed=2251&amp;path=263.9071,1829.2992,1838.21125&amp;xdur=0.041\">▶ Play it: Dust Census → Confetti Escape Velocity → Ankle Velocity — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/54eea62ba90c8e1ffc369df0039d6fdbd3941cf7\">54eea62</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"What about the other genres.\" All of them, now: 169 OK / 59 WARN -> 228 OK / 0 WARN / 0 FAIL (verified at seeds 1-5 too), worst 0.92 -> 0.99, and every fix was mechanism-level:\n\nSAMPLER REGISTER HOME — progressions voice leads at the synth-lead octave (midi 60-95) while sampled winds/ guitars/choirs top out at 81-86 — so phrase PEAKS folded down an octave at render and the climax inverted.\n\n• The grow tie-break, one level down: pre-chorus and chorus are both \"peak\", so loop 1's energy-aware growth still stacked on the FIRST peak and pushed toastercore's hook 192 -> 224.\n\n• BLOOM v1.2 design floors: four \"stragglers\" (standbylightdrive, singeli, bebop, walrusfuzz) were ON their form's designed proportions — the beat tables punished tempo/cycle geometry, not drag.\n\nVerified: Matrix 228/228 --no-cache three times over; verify/meter/theory/ pipes/speech green; musicality suite grew to 24 gates; determinism byte-proven\n\n▶ Play it: Dust Census → Confetti Escape Velocity → Ankle Velocity — the three genres this change names, as one path https://stellate.app/?genre=lofi&seed=2251&path=263.9071,1829.2992,1838.21125&xdur=0.041\n\n54eea62 https://github.com/aboard-io/stellate/commit/54eea62ba90c8e1ffc369df0039d6fdbd3941cf7",
   "date_published": "2026-07-10T03:18:27.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "lofi",
    "dancepop",
    "footwork",
    "voice"
   ]
  },
  {
   "id": "a1d3bd649f5a09644a68eb40804c6b785136e18e",
   "url": "https://stellate.app/?genre=vaporwave&seed=6356&path=1679.4415,1530.6221,430.3999&xdur=0.267",
   "external_url": "https://github.com/aboard-io/stellate/commit/a1d3bd649f5a09644a68eb40804c6b785136e18e",
   "title": "Sampled voices get their inserts: the road, not the escape hatch",
   "summary": "The blues-organ fix made hammond a signature synth to recover its leslie; this is the general solution the audio charter designed and deferred: anchor-declared insert chains (chorus/phaser/leslie/ flanger/delay/ringmod/tremolo/filtersweep/wah) now apply to SAMPLED voices on every path.",
   "content_html": "<p>The blues-organ fix made hammond a signature synth to recover its leslie; this is the general solution the audio charter designed and deferred: anchor-declared insert chains (chorus/phaser/leslie/ flanger/delay/ringmod/tremolo/filtersweep/wah) now apply to SAMPLED voices on every path.</p>\n<ul><li>Offline (press + stream + the wavOut MOBILE lane): the REAL dist/ insert_* Faust modules process each unit's pre-send mix whole-song (render-core's exact insert law, barSec tempo-sync included)</li><li>The absent-law holds byte-exactly: no declared inserts = zero new processing (heavymetal/jazz/vaporwave presses byte-identical to HEAD)</li></ul>\n<p><em>Verified:</em> harness repaired first: segment-parity pointed at the pre-diet tokyo_station.wav — green on HEAD before any change, then 9/9 byte-equal INCLUDING two new sampled-insert cases.</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=6356&amp;path=1679.4415,1530.6221,430.3999&amp;xdur=0.267\">▶ Play it: Food Court Eternity → Neon Fiscal Year → Molten Horsepower — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/a1d3bd649f5a09644a68eb40804c6b785136e18e\">a1d3bd6</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The blues-organ fix made hammond a signature synth to recover its leslie; this is the general solution the audio charter designed and deferred: anchor-declared insert chains (chorus/phaser/leslie/ flanger/delay/ringmod/tremolo/filtersweep/wah) now apply to SAMPLED voices on every path.\n\n• Offline (press + stream + the wavOut MOBILE lane): the REAL dist/ insert_* Faust modules process each unit's pre-send mix whole-song (render-core's exact insert law, barSec tempo-sync included)\n\n• The absent-law holds byte-exactly: no declared inserts = zero new processing (heavymetal/jazz/vaporwave presses byte-identical to HEAD)\n\nVerified: harness repaired first: segment-parity pointed at the pre-diet tokyo_station.wav — green on HEAD before any change, then 9/9 byte-equal INCLUDING two new sampled-insert cases.\n\n▶ Play it: Food Court Eternity → Neon Fiscal Year → Molten Horsepower — the three genres this change names, as one path https://stellate.app/?genre=vaporwave&seed=6356&path=1679.4415,1530.6221,430.3999&xdur=0.267\n\na1d3bd6 https://github.com/aboard-io/stellate/commit/a1d3bd649f5a09644a68eb40804c6b785136e18e",
   "date_published": "2026-07-10T02:56:48.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "citypop",
    "heavymetal",
    "voice"
   ]
  },
  {
   "id": "bf5571cc4daed01d89e46a073c82fe00ce940a94",
   "url": "https://stellate.app/?genre=doomdrone&seed=9948&path=1579.13027,940.12178,1161.12218&xdur=0.683",
   "external_url": "https://github.com/aboard-io/stellate/commit/bf5571cc4daed01d89e46a073c82fe00ce940a94",
   "title": "A path is now a checkable object: the state-level simulator + 3-node default",
   "summary": "Paul: \"Are you able to fully simulate a path? At a state level, then test.\" tools/simulate-path.js is the fast middle fidelity between the glide sim and the realtime headless rides: it boots the REAL app headless and dynamic-imports the page's own targeting singleton (no forked logic to drift), then…",
   "content_html": "<p>Paul: &quot;Are you able to fully simulate a path? At a state level, then test.&quot; tools/simulate-path.js is the fast middle fidelity between the glide sim and the realtime headless rides: it boots the REAL app headless and dynamic-imports the page's own targeting singleton (no forked logic to drift), then…</p>\n<ul><li>The default loop is now THREE nodes: centre (reads ~96% disco) -&gt; lasertemple -&gt; doomdrone — three forms, three kit families, an energy arc that closes back on the dance floor</li></ul>\n<p><em>Verified:</em> simulate-path-run.js is the committed gate: the default loop must arrive everywhere within the contract, no musicality hard-fails, byte-deterministic</p>\n<p><a href=\"https://stellate.app/?genre=doomdrone&amp;seed=9948&amp;path=1579.13027,940.12178,1161.12218&amp;xdur=0.683\">▶ Play it: Subduction Hymnal → Saltwater Reliquary → Collimated Chapel — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/bf5571cc4daed01d89e46a073c82fe00ce940a94\">bf5571c</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"Are you able to fully simulate a path? At a state level, then test.\" tools/simulate-path.js is the fast middle fidelity between the glide sim and the realtime headless rides: it boots the REAL app headless and dynamic-imports the page's own targeting singleton (no forked logic to drift), then…\n\n• The default loop is now THREE nodes: centre (reads ~96% disco) -> lasertemple -> doomdrone — three forms, three kit families, an energy arc that closes back on the dance floor\n\nVerified: simulate-path-run.js is the committed gate: the default loop must arrive everywhere within the contract, no musicality hard-fails, byte-deterministic\n\n▶ Play it: Subduction Hymnal → Saltwater Reliquary → Collimated Chapel — the three genres this change names, as one path https://stellate.app/?genre=doomdrone&seed=9948&path=1579.13027,940.12178,1161.12218&xdur=0.683\n\nbf5571c https://github.com/aboard-io/stellate/commit/bf5571cc4daed01d89e46a073c82fe00ce940a94",
   "date_published": "2026-07-10T02:41:14.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "doomdrone",
    "brinedub",
    "lasertemple",
    "harmony"
   ]
  },
  {
   "id": "48506e7c767985d2f003bc49951ad42625873733",
   "url": "https://stellate.app/?genre=reggae&seed=4716&path=508.4799,263.9071,1829.2992&xdur=0.117",
   "external_url": "https://github.com/aboard-io/stellate/commit/48506e7c767985d2f003bc49951ad42625873733",
   "title": "Balance loop 1: 19 -> 169 genres fully musical; reggae keeps its promise",
   "summary": "The first run of the MUSICALITY balance loop (docs/MUSICALITY.md), mechanism-first per Paul's law that specific complaints are classes:",
   "content_html": "<p>The first run of the MUSICALITY balance loop (docs/MUSICALITY.md), mechanism-first per Paul's law that specific complaints are classes:</p>\n<ul><li><strong>THE INTRO-DRAG WAS ONE LINE OF KERNEL</strong> — the duration solver's grow tie-break picked the first tied index, stacking ALL residual growth at the track's front</li><li><strong>THE ONE-DROP EXISTS</strong> — KITS grows `onedrop` — kick + cross-stick TOGETHER on beat 3, beat 1 empty, hats on the skank off-eighths.</li><li>chalkvespers stops asking its choir for midi 107 (ceiling 87): new zero-rng anchor dimension `leadOctave` (dominant-parent pick, absent = byte-identical), chant at -2 — asks within the window now</li><li>PRELUDE OPENS ON THE FIGURATION, BAR 1 (introMode off): the wave arrive-node held the first keyboard note out 37-101s (seed 3: 101s, bass at 202s).</li></ul>\n<p><a href=\"https://stellate.app/?genre=reggae&amp;seed=4716&amp;path=508.4799,263.9071,1829.2992&amp;xdur=0.117\">▶ Play it: Third Beat Gravity → Dust Census → Confetti Escape Velocity — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/48506e7c767985d2f003bc49951ad42625873733\">48506e7</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The first run of the MUSICALITY balance loop (docs/MUSICALITY.md), mechanism-first per Paul's law that specific complaints are classes:\n\nTHE INTRO-DRAG WAS ONE LINE OF KERNEL — the duration solver's grow tie-break picked the first tied index, stacking ALL residual growth at the track's front\n\nTHE ONE-DROP EXISTS — KITS grows `onedrop` — kick + cross-stick TOGETHER on beat 3, beat 1 empty, hats on the skank off-eighths.\n\n• chalkvespers stops asking its choir for midi 107 (ceiling 87): new zero-rng anchor dimension `leadOctave` (dominant-parent pick, absent = byte-identical), chant at -2 — asks within the window now\n\n• PRELUDE OPENS ON THE FIGURATION, BAR 1 (introMode off): the wave arrive-node held the first keyboard note out 37-101s (seed 3: 101s, bass at 202s).\n\n▶ Play it: Third Beat Gravity → Dust Census → Confetti Escape Velocity — the three genres this change names, as one path https://stellate.app/?genre=reggae&seed=4716&path=508.4799,263.9071,1829.2992&xdur=0.117\n\n48506e7 https://github.com/aboard-io/stellate/commit/48506e7c767985d2f003bc49951ad42625873733",
   "date_published": "2026-07-10T02:28:43.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "reggae",
    "lofi",
    "dancepop",
    "voice"
   ]
  },
  {
   "id": "477e50c1480b88b7ebd2787052d0e7b1ad0b1a3e",
   "url": "https://stellate.app/?genre=bebop&seed=4545&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/477e50c1480b88b7ebd2787052d0e7b1ad0b1a3e",
   "title": "Transit arrival: crossed genres get their instruments (the flute exorcism)",
   "summary": "Paul: \"Moving from blues to industrial we hit dnb. It's loaded but the promised instruments don't show up.",
   "content_html": "<p>Paul: &quot;Moving from blues to industrial we hit dnb. It's loaded but the promised instruments don't show up.</p>\n<ul><li>The blend-arrival fix's tiered flip queue kept a journey-scoped never-applied memory, cleared only on convergence — which never happens during continuous travel.</li><li>Fix, ~3 lines: the never-applied memory clears when the DOMINANT genre changes, so each new neighborhood's identity flips (form / drum kit / lead voice) re-enter tier 0 and land within ~6 bars of dominance</li></ul>\n<p><em>Verified:</em> transit-arrival-run.js is the committed contract (pre-fix FAIL confirmed): dnb lead arrival rel 16 -&gt; 0, kit rel 18 -&gt; 2, lead held 18 bars, 10 rhodes note() calls the first melody-on bar.</p>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=4545&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/477e50c1480b88b7ebd2787052d0e7b1ad0b1a3e\">477e50c</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"Moving from blues to industrial we hit dnb. It's loaded but the promised instruments don't show up.\n\n• The blend-arrival fix's tiered flip queue kept a journey-scoped never-applied memory, cleared only on convergence — which never happens during continuous travel.\n\n• Fix, ~3 lines: the never-applied memory clears when the DOMINANT genre changes, so each new neighborhood's identity flips (form / drum kit / lead voice) re-enter tier 0 and land within ~6 bars of dominance\n\nVerified: transit-arrival-run.js is the committed contract (pre-fix FAIL confirmed): dnb lead arrival rel 16 -> 0, kit rel 18 -> 2, lead held 18 bars, 10 rhodes note() calls the first melody-on bar.\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=4545&path=694.13834,713.13867,675.13867&xdur=13.122\n\n477e50c https://github.com/aboard-io/stellate/commit/477e50c1480b88b7ebd2787052d0e7b1ad0b1a3e",
   "date_published": "2026-07-10T01:49:35.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "ec1c75bd606dc05ce61693eb02f9f77355d8204e",
   "url": "https://stellate.app/?genre=gabber&seed=2125&path=1809.17533,1505.3720,1036.22151&xdur=0.041",
   "external_url": "https://github.com/aboard-io/stellate/commit/ec1c75bd606dc05ce61693eb02f9f77355d8204e",
   "title": "Instruments sound like themselves: register law, level fixes, the B-3 returns",
   "summary": "Four Paul complaints, one charter, all measured:",
   "content_html": "<p>Four Paul complaints, one charter, all measured:</p>\n<ul><li><strong>REGISTER LAW</strong> — a catalog scan found 545 sampled lanes playing +12..+34 st above their top zone (a tuba solo at +33.8).</li><li>Steel guitar (standbylightdrive): the anchor's lead level [.3,.42] was tuned for hot synth plucks; sampled-default remapped it to guitar multisamples AND (wet = send/lvl) inflated its own wash.</li><li>Blues organ (&quot;reedy and distant&quot;): the anchor's deliberate B-3 (drawbars, leslie .85-.95, 3rd-harm perc) was being remapped to GM strings/reed organ — drawbar and rotary params no zone honors.</li><li>Gabber's oboe: masked by design (healthy level under kick 1.7 + pump .68 at 175 bpm), not under-leveled — deferred to the MUSICALITY AUDIBLE audit with the honest options on record.</li></ul>\n<p><em>Verified:</em> Matrix 228/228 --no-cache; fixture drift exactly the intended 10 state hashes (the two anchor fixes), mapping guards zero-drift</p>\n<p><a href=\"https://stellate.app/?genre=gabber&amp;seed=2125&amp;path=1809.17533,1505.3720,1036.22151&amp;xdur=0.041\">▶ Play it: Jackhammer Communion → Loon Referendum → Crossroads Paperwork — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/ec1c75bd606dc05ce61693eb02f9f77355d8204e\">ec1c75b</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Four Paul complaints, one charter, all measured:\n\nREGISTER LAW — a catalog scan found 545 sampled lanes playing +12..+34 st above their top zone (a tuba solo at +33.8).\n\n• Steel guitar (standbylightdrive): the anchor's lead level [.3,.42] was tuned for hot synth plucks; sampled-default remapped it to guitar multisamples AND (wet = send/lvl) inflated its own wash.\n\n• Blues organ (\"reedy and distant\"): the anchor's deliberate B-3 (drawbars, leslie .85-.95, 3rd-harm perc) was being remapped to GM strings/reed organ — drawbar and rotary params no zone honors.\n\n• Gabber's oboe: masked by design (healthy level under kick 1.7 + pump .68 at 175 bpm), not under-leveled — deferred to the MUSICALITY AUDIBLE audit with the honest options on record.\n\nVerified: Matrix 228/228 --no-cache; fixture drift exactly the intended 10 state hashes (the two anchor fixes), mapping guards zero-drift\n\n▶ Play it: Jackhammer Communion → Loon Referendum → Crossroads Paperwork — the three genres this change names, as one path https://stellate.app/?genre=gabber&seed=2125&path=1809.17533,1505.3720,1036.22151&xdur=0.041\n\nec1c75b https://github.com/aboard-io/stellate/commit/ec1c75bd606dc05ce61693eb02f9f77355d8204e",
   "date_published": "2026-07-10T01:45:44.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "gabber",
    "canawave",
    "blues",
    "voice"
   ]
  },
  {
   "id": "dfe67c62843e42316919eed9ae431a37afde6faa",
   "url": "https://stellate.app/?genre=bebop&seed=5290&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/dfe67c62843e42316919eed9ae431a37afde6faa",
   "title": "The viz survives the flip storm: stale-ci re-window, clamps, lane guards",
   "summary": "Paul: \"the viz just drops, often when the transition to a new genre starts.\" Not a crash — an 18,240-combo fuzz was clean. The killer: live bars are scheduled a runway AHEAD of playback, and a glide flip rewrites progression/sections between a bar's scheduling and its sounding",
   "content_html": "<p>Paul: &quot;the viz just drops, often when the transition to a new genre starts.&quot; Not a crash — an 18,240-combo fuzz was clean. The killer: live bars are scheduled a runway AHEAD of playback, and a glide flip rewrites progression/sections between a bar's scheduling and its sounding</p>\n<ul><li>Fixes: (1) re-window on divergence — a ci&gt;0 window with zero notes AND zero chops retries once on the first chord bar, an honest picture of the state now sounding, engine meta re-syncs next bar</li></ul>\n<p><em>Verified:</em> L: a pure deterministic pre-fix-failing case (stale section + overflowed ci vs freshly-flipped state must still yield notes) plus a live house-&gt;prelude flip with the panel open</p>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=5290&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/dfe67c62843e42316919eed9ae431a37afde6faa\">dfe67c6</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"the viz just drops, often when the transition to a new genre starts.\" Not a crash — an 18,240-combo fuzz was clean. The killer: live bars are scheduled a runway AHEAD of playback, and a glide flip rewrites progression/sections between a bar's scheduling and its sounding\n\n• Fixes: (1) re-window on divergence — a ci>0 window with zero notes AND zero chops retries once on the first chord bar, an honest picture of the state now sounding, engine meta re-syncs next bar\n\nVerified: L: a pure deterministic pre-fix-failing case (stale section + overflowed ci vs freshly-flipped state must still yield notes) plus a live house->prelude flip with the panel open\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=5290&path=694.13834,713.13867,675.13867&xdur=13.122\n\ndfe67c6 https://github.com/aboard-io/stellate/commit/dfe67c62843e42316919eed9ae431a37afde6faa",
   "date_published": "2026-07-10T01:32:28.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "c05551727fe1557fcfb6ec61afe0a3215d5a210f",
   "url": "https://stellate.app/?genre=reggae&seed=2882&path=508.4799,1727.16539&xdur=0.064",
   "external_url": "https://github.com/aboard-io/stellate/commit/c05551727fe1557fcfb6ec61afe0a3215d5a210f",
   "title": "MUSICALITY: the second verifier — genres proven good, not just distinct",
   "summary": "Paul: \"You've got it with the diagonal. Look at the class of issues we're facing and make it possible to improve and balance genres for true musicality.\" docs/MUSICALITY.md is the design: today's taste complaints, formalized as per-genre laws with NAMED failures.",
   "content_html": "<p>Paul: &quot;You've got it with the diagonal. Look at the class of issues we're facing and make it possible to improve and balance genres for true musicality.&quot; docs/MUSICALITY.md is the design: today's taste complaints, formalized as per-genre laws with NAMED failures.</p>\n<ul><li>engine/musicality.js ships the symbolic half: BLOOM (per-part time-to-first-onset against per-FORM bounds</li><li>Reggae's kick-on-three promise measured FALSE at the state level — its kit pool has no one-drop (kick lands on 1); the transition fix was necessary but the card still lies.</li><li>The worst-10 is SYSTEMIC, not individual: pop/drop form intros hold drums out ~2 sections (beat 62 vs bound 32) across ten genres</li><li>chalkvespers asks its choir 20 semitones above its natural ceiling. Baseline: 19 OK / 209 WARN / 0 FAIL; no never-sounding parts; all three seed promises hold.</li></ul>\n<p><a href=\"https://stellate.app/?genre=reggae&amp;seed=2882&amp;path=508.4799,1727.16539&amp;xdur=0.064\">▶ Play it: Third Beat Gravity → Antiphon Decay — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/c05551727fe1557fcfb6ec61afe0a3215d5a210f\">c055517</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"You've got it with the diagonal. Look at the class of issues we're facing and make it possible to improve and balance genres for true musicality.\" docs/MUSICALITY.md is the design: today's taste complaints, formalized as per-genre laws with NAMED failures.\n\n• engine/musicality.js ships the symbolic half: BLOOM (per-part time-to-first-onset against per-FORM bounds\n\n• Reggae's kick-on-three promise measured FALSE at the state level — its kit pool has no one-drop (kick lands on 1); the transition fix was necessary but the card still lies.\n\n• The worst-10 is SYSTEMIC, not individual: pop/drop form intros hold drums out ~2 sections (beat 62 vs bound 32) across ten genres\n\n• chalkvespers asks its choir 20 semitones above its natural ceiling. Baseline: 19 OK / 209 WARN / 0 FAIL; no never-sounding parts; all three seed promises hold.\n\n▶ Play it: Third Beat Gravity → Antiphon Decay — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=reggae&seed=2882&path=508.4799,1727.16539&xdur=0.064\n\nc055517 https://github.com/aboard-io/stellate/commit/c05551727fe1557fcfb6ec61afe0a3215d5a210f",
   "date_published": "2026-07-10T01:30:16.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "reggae",
    "chalkvespers",
    "drums"
   ]
  },
  {
   "id": "21d4d344a539010e9b412f219f73bbf1b657450a",
   "url": "https://stellate.app/how.html",
   "external_url": "https://github.com/aboard-io/stellate/commit/21d4d344a539010e9b412f219f73bbf1b657450a",
   "title": "Docs aligned to the 228-genre reality — every count measured, not copied",
   "summary": "The full agreement pass after the batch: README/CLAUDE/GENRE-SPACE/ MUSIC-MIND/HOSTING/how.html/CONTRIBUTING all agree on the live truth (228 genres, 228/228 matrix, meter anchors named, the 3/7-bar travel arrival contract, the ⤓ downloads, the tab survival, the ⓘ overhaul, CPU meter gone, 608 MB…",
   "content_html": "<p>The full agreement pass after the batch: README/CLAUDE/GENRE-SPACE/ MUSIC-MIND/HOSTING/how.html/CONTRIBUTING all agree on the live truth (228 genres, 228/228 matrix, meter anchors named, the 3/7-bar travel arrival contract, the ⤓ downloads, the tab survival, the ⓘ overhaul, CPU meter gone, 608 MB…</p>\n<p><a href=\"https://stellate.app/how.html\">▶ read how a song is made — the drawn pipeline itself</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/21d4d344a539010e9b412f219f73bbf1b657450a\">21d4d34</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The full agreement pass after the batch: README/CLAUDE/GENRE-SPACE/ MUSIC-MIND/HOSTING/how.html/CONTRIBUTING all agree on the live truth (228 genres, 228/228 matrix, meter anchors named, the 3/7-bar travel arrival contract, the ⤓ downloads, the tab survival, the ⓘ overhaul, CPU meter gone, 608 MB…\n\n▶ read how a song is made — the drawn pipeline itself https://stellate.app/how.html\n\n21d4d34 https://github.com/aboard-io/stellate/commit/21d4d344a539010e9b412f219f73bbf1b657450a",
   "date_published": "2026-07-10T01:06:28.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "explainer"
   ]
  },
  {
   "id": "6c8172a4ddd020b12879751c27d79307a7abd5c1",
   "url": "https://stellate.app/?genre=prelude&seed=2820&path=896.68,915.101,877.101&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/6c8172a4ddd020b12879751c27d79307a7abd5c1",
   "title": "Viz: pages + a playhead, not double bars; travel default 256, max 4096",
   "summary": "Paul, looking at prelude: \"double bars for each\" — right. The 8-cell fold stacked a 16-beat chord bar as two rows per lane, which reads as duplication.",
   "content_html": "<p>Paul, looking at prelude: &quot;double bars for each&quot; — right. The 8-cell fold stacked a 16-beat chord bar as two rows per lane, which reads as duplication.</p>\n<ul><li>And the pace: fixing blend-arrival made flips actually LAND, so the old default (128 bars/leg) suddenly read &quot;way too fast&quot; — default is now 256 and the slider is LOG-SCALE to 4096 (2^4..2^12</li></ul>\n<p><a href=\"https://stellate.app/?genre=prelude&amp;seed=2820&amp;path=896.68,915.101,877.101&amp;xdur=13.122\">▶ Play it: The Turning Stair — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/6c8172a4ddd020b12879751c27d79307a7abd5c1\">6c8172a</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul, looking at prelude: \"double bars for each\" — right. The 8-cell fold stacked a 16-beat chord bar as two rows per lane, which reads as duplication.\n\n• And the pace: fixing blend-arrival made flips actually LAND, so the old default (128 bars/leg) suddenly read \"way too fast\" — default is now 256 and the slider is LOG-SCALE to 4096 (2^4..2^12\n\n▶ Play it: The Turning Stair — parked on the genre this change names https://stellate.app/?genre=prelude&seed=2820&path=896.68,915.101,877.101&xdur=13.122\n\n6c8172a https://github.com/aboard-io/stellate/commit/6c8172a4ddd020b12879751c27d79307a7abd5c1",
   "date_published": "2026-07-10T01:06:28.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "prelude",
    "harmony"
   ]
  },
  {
   "id": "bc800da10e60e54487758c3edd16b6b95e143028",
   "url": "https://stellate.app/?genre=valkyrieswoop&seed=8705&path=549.6571,234.9952,1547.9373&xdur=0.192",
   "external_url": "https://github.com/aboard-io/stellate/commit/bc800da10e60e54487758c3edd16b6b95e143028",
   "title": "Cycle 4: motown grooves and nordic frost — 228/228, expansion complete",
   "summary": "The final sixteen: velvetconveyor, talcumcasino, capesnap, chromeufo, mirrorseven, sundialsyrup, sequinfreight, rollerlacquer (the motown/funk/Stevie wing) and longshipwhip, bogironwallow, barrowwake, ravensquall, runeromp, meadhallbellow, valkyrieswoop, permafrostveil (the metal/nordic wing).",
   "content_html": "<p>The final sixteen: velvetconveyor, talcumcasino, capesnap, chromeufo, mirrorseven, sundialsyrup, sequinfreight, rollerlacquer (the motown/funk/Stevie wing) and longshipwhip, bogironwallow, barrowwake, ravensquall, runeromp, meadhallbellow, valkyrieswoop, permafrostveil (the metal/nordic wing).</p>\n<ul><li>Crush-family MIND_OVERRIDES per the sludgemetal precedent: longshipwhip pipes:[] (the wall answers nobody), bogironwallow sweepArc-only (the reese earns its slow swell)</li><li>POS re-baked for 228 (51s relaxation once, 651ms boot; fugue re-nudged for D2e; three under-floor pairs nudged to a 106.6 min sep). how.html counts follow.</li><li>The genre space: 178 at dawn, 228 at close — classical, the eras, synth gods, prog, motown/funk, metal/nordic, all ridiculous, all verified.</li></ul>\n<p><a href=\"https://stellate.app/?genre=valkyrieswoop&amp;seed=8705&amp;path=549.6571,234.9952,1547.9373&amp;xdur=0.192\">▶ Play it: Soprano Ballistics → Heptagram Vamp → Whiteout Psalter — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/bc800da10e60e54487758c3edd16b6b95e143028\">bc800da</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The final sixteen: velvetconveyor, talcumcasino, capesnap, chromeufo, mirrorseven, sundialsyrup, sequinfreight, rollerlacquer (the motown/funk/Stevie wing) and longshipwhip, bogironwallow, barrowwake, ravensquall, runeromp, meadhallbellow, valkyrieswoop, permafrostveil (the metal/nordic wing).\n\n• Crush-family MIND_OVERRIDES per the sludgemetal precedent: longshipwhip pipes:[] (the wall answers nobody), bogironwallow sweepArc-only (the reese earns its slow swell)\n\n• POS re-baked for 228 (51s relaxation once, 651ms boot; fugue re-nudged for D2e; three under-floor pairs nudged to a 106.6 min sep). how.html counts follow.\n\n• The genre space: 178 at dawn, 228 at close — classical, the eras, synth gods, prog, motown/funk, metal/nordic, all ridiculous, all verified.\n\n▶ Play it: Soprano Ballistics → Heptagram Vamp → Whiteout Psalter — the three genres this change names, as one path https://stellate.app/?genre=valkyrieswoop&seed=8705&path=549.6571,234.9952,1547.9373&xdur=0.192\n\nbc800da https://github.com/aboard-io/stellate/commit/bc800da10e60e54487758c3edd16b6b95e143028",
   "date_published": "2026-07-10T00:41:54.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "valkyrieswoop",
    "mirrorseven",
    "ravensquall",
    "explainer"
   ]
  },
  {
   "id": "229aab43b0946b6a4f3bc2b1d05d4acaa1c3448a",
   "url": "https://stellate.app/?genre=synthwave&seed=8731&path=859.9909,878.9942,840.9942&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/229aab43b0946b6a4f3bc2b1d05d4acaa1c3448a",
   "title": "The frozen watchdog learns the difference between dead and starving",
   "summary": "live-resilience's PITCHED leg failed on a coin flip: under a decode storm the mse-mp3 element underruns at the buffered edge (measured: currentTime frozen 3.8s, paused=false, readyState=2 — the UA itself reporting starvation",
   "content_html": "<p>live-resilience's PITCHED leg failed on a coin flip: under a decode storm the mse-mp3 element underruns at the buffered edge (measured: currentTime frozen 3.8s, paused=false, readyState=2 — the UA itself reporting starvation</p>\n<ul><li>journey-crash-run: the h._pools hook died with the pool scheduler in 1648ad7; the probe now reads the ring handle's honest nodeCount().</li></ul>\n<p><em>Verified:</em> live-resilience full PASS x2 (all legs — previously failing), journey-crash PASS, wavout (incl. stepDown/mmsStall demotions), live-test, bg-survival, explorer-ui, verify.sh all green.</p>\n<p><a href=\"https://stellate.app/?genre=synthwave&amp;seed=8731&amp;path=859.9909,878.9942,840.9942&amp;xdur=13.122\">▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/229aab43b0946b6a4f3bc2b1d05d4acaa1c3448a\">229aab4</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "live-resilience's PITCHED leg failed on a coin flip: under a decode storm the mse-mp3 element underruns at the buffered edge (measured: currentTime frozen 3.8s, paused=false, readyState=2 — the UA itself reporting starvation\n\n• journey-crash-run: the h._pools hook died with the pool scheduler in 1648ad7; the probe now reads the ring handle's honest nodeCount().\n\nVerified: live-resilience full PASS x2 (all legs — previously failing), journey-crash PASS, wavout (incl. stepDown/mmsStall demotions), live-test, bg-survival, explorer-ui, verify.sh all green.\n\n▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration https://stellate.app/?genre=synthwave&seed=8731&path=859.9909,878.9942,840.9942&xdur=13.122\n\n229aab4 https://github.com/aboard-io/stellate/commit/229aab43b0946b6a4f3bc2b1d05d4acaa1c3448a",
   "date_published": "2026-07-10T00:02:24.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "synthwave",
    "synth"
   ]
  },
  {
   "id": "06e27fdc70e45cba6e20a9401229e4c115f9b0af",
   "url": "https://stellate.app/?genre=greasepaintoompah&seed=2164&path=1106.10559,781.3854,896.90&xdur=0.072",
   "external_url": "https://github.com/aboard-io/stellate/commit/06e27fdc70e45cba6e20a9401229e4c115f9b0af",
   "title": "Cycle 3: the classical wing — 212/212, and the first real waltzes",
   "summary": "Ten anchors, zero damps, every self-score 100 on first attempt: chalkvespers (chant), salondawdle (Satie), candlegauze (Debussy), cloisterloom (Tallis), miasmarow (Schoenberg/Scriabin), greasepaintoompah (Weill), urchinmatinee (showtunes), marblefury (Beethoven/Brahms), perukelotto (the Mozart dice…",
   "content_html": "<p>Ten anchors, zero damps, every self-score 100 on first attempt: chalkvespers (chant), salondawdle (Satie), candlegauze (Debussy), cloisterloom (Tallis), miasmarow (Schoenberg/Scriabin), greasepaintoompah (Weill), urchinmatinee (showtunes), marblefury (Beethoven/Brahms), perukelotto (the Mozart dice…</p>\n<ul><li>salondawdle and greasepaintoompah are the meters program's first production users: meter:{beats:3,unit:4}, waltz/waltzswing kits, waltzroot and oompahpah bass, chordEvery 12/6.</li><li>POS re-baked for 212 (fugue re-nudged by grid search under the D2e gate's own constraints — cloisterloom/prelude now its neighborhood); boot fast-path 553ms; how.html counts follow</li></ul>\n<p><a href=\"https://stellate.app/?genre=greasepaintoompah&amp;seed=2164&amp;path=1106.10559,781.3854,896.90&amp;xdur=0.072\">▶ Play it: Actuarial Cabaret → Ottoman Heat Death → The Turning Stair — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/06e27fdc70e45cba6e20a9401229e4c115f9b0af\">06e27fd</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Ten anchors, zero damps, every self-score 100 on first attempt: chalkvespers (chant), salondawdle (Satie), candlegauze (Debussy), cloisterloom (Tallis), miasmarow (Schoenberg/Scriabin), greasepaintoompah (Weill), urchinmatinee (showtunes), marblefury (Beethoven/Brahms), perukelotto (the Mozart dice…\n\n• salondawdle and greasepaintoompah are the meters program's first production users: meter:{beats:3,unit:4}, waltz/waltzswing kits, waltzroot and oompahpah bass, chordEvery 12/6.\n\n• POS re-baked for 212 (fugue re-nudged by grid search under the D2e gate's own constraints — cloisterloom/prelude now its neighborhood); boot fast-path 553ms; how.html counts follow\n\n▶ Play it: Actuarial Cabaret → Ottoman Heat Death → The Turning Stair — the three genres this change names, as one path https://stellate.app/?genre=greasepaintoompah&seed=2164&path=1106.10559,781.3854,896.90&xdur=0.072\n\n06e27fd https://github.com/aboard-io/stellate/commit/06e27fdc70e45cba6e20a9401229e4c115f9b0af",
   "date_published": "2026-07-10T00:01:23.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "greasepaintoompah",
    "salondawdle",
    "prelude",
    "explainer"
   ]
  },
  {
   "id": "3dd3e4742f36ff144e477cca7ea6c9eb3b523123",
   "url": "https://stellate.app/?genre=walrusfuzz&seed=2756&path=801.7257,1137.16213,1536.7809&xdur=0.082",
   "external_url": "https://github.com/aboard-io/stellate/commit/3dd3e4742f36ff144e477cca7ea6c9eb3b523123",
   "title": "Cycle 2: prog + the eras take the map — 202/202",
   "summary": "Sixteen anchors, one at a time, each landing at self-score 100 with measured auto-tightened rows: the prog cluster (wizardcape, meadowmellotron, hexagonstampede, crimsoncourt, moonlagoon, sliderule, crumpetwhirl, polygonforge) and the Liverpool eras (moptoprattle, meadowjangle, strawberryfog…",
   "content_html": "<p>Sixteen anchors, one at a time, each landing at self-score 100 with measured auto-tightened rows: the prog cluster (wizardcape, meadowmellotron, hexagonstampede, crimsoncourt, moonlagoon, sliderule, crumpetwhirl, polygonforge) and the Liverpool eras (moptoprattle, meadowjangle, strawberryfog…</p>\n<ul><li>Seven specs took damps, all at the spec (never a hand-edited TARGETS row): bpm-band nudges (hexagonstampede off canawave/disco, walrusfuzz off disco), verify-feature fences (sub/bedUse/crackle/seventh/…</li><li>Pipeline note for future cycles: validate's &quot;loses to X&quot; names the RUNNER-UP, not the argmax — score the new row directly before blaming the named genre.</li><li>POS re-baked for 202 (35.9s relaxation once, 690ms boot after; fugue re-nudged to keep prelude 2nd-nearest — the D2e gate); how.html counts follow.</li></ul>\n<p><a href=\"https://stellate.app/?genre=walrusfuzz&amp;seed=2756&amp;path=801.7257,1137.16213,1536.7809&amp;xdur=0.082\">▶ Play it: Pinniped Overload → Benzene Cavalry → Tambourine Equinox — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/3dd3e4742f36ff144e477cca7ea6c9eb3b523123\">3dd3e47</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Sixteen anchors, one at a time, each landing at self-score 100 with measured auto-tightened rows: the prog cluster (wizardcape, meadowmellotron, hexagonstampede, crimsoncourt, moonlagoon, sliderule, crumpetwhirl, polygonforge) and the Liverpool eras (moptoprattle, meadowjangle, strawberryfog…\n\n• Seven specs took damps, all at the spec (never a hand-edited TARGETS row): bpm-band nudges (hexagonstampede off canawave/disco, walrusfuzz off disco), verify-feature fences (sub/bedUse/crackle/seventh/…\n\n• Pipeline note for future cycles: validate's \"loses to X\" names the RUNNER-UP, not the argmax — score the new row directly before blaming the named genre.\n\n• POS re-baked for 202 (35.9s relaxation once, 690ms boot after; fugue re-nudged to keep prelude 2nd-nearest — the D2e gate); how.html counts follow.\n\n▶ Play it: Pinniped Overload → Benzene Cavalry → Tambourine Equinox — the three genres this change names, as one path https://stellate.app/?genre=walrusfuzz&seed=2756&path=801.7257,1137.16213,1536.7809&xdur=0.082\n\n3dd3e47 https://github.com/aboard-io/stellate/commit/3dd3e4742f36ff144e477cca7ea6c9eb3b523123",
   "date_published": "2026-07-09T23:34:22.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "walrusfuzz",
    "hexagonstampede",
    "meadowjangle",
    "explainer"
   ]
  },
  {
   "id": "7f3e08284039638c856be8473be86184fc1684dc",
   "url": "https://stellate.app/?genre=wickershimmy&seed=8752&path=1247.14807,292.16891,896.90&xdur=0.044",
   "external_url": "https://github.com/aboard-io/stellate/commit/7f3e08284039638c856be8473be86184fc1684dc",
   "title": "Waltzes exist; the synth gods take the map; porchdice is wickershimmy",
   "summary": "ODD METERS — state.meter = {beats:3|6, unit:4|8}, absent = byte-identical (proven against a git-materialized HEAD engine on state AND events).",
   "content_html": "<ul><li><strong>ODD METERS</strong> — state.meter = {beats:3|6, unit:4|8}, absent = byte-identical (proven against a git-materialized HEAD engine on state AND events).</li><li><strong>INTEGRATION CYCLE 1</strong> — porchdice -&gt; wickershimmy (all 8 rename points, repo grep zero — porch wicker + funk shimmy, roots unused) and the synth-gods cluster is real: androidlament, lasertemple, oscillatorminuet, cometwhistle…</li></ul>\n<p><a href=\"https://stellate.app/?genre=wickershimmy&amp;seed=8752&amp;path=1247.14807,292.16891,896.90&amp;xdur=0.044\">▶ Play it: Seance Cakewalk → Smoke Arithmetic → The Turning Stair — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/7f3e08284039638c856be8473be86184fc1684dc\">7f3e082</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "ODD METERS — state.meter = {beats:3|6, unit:4|8}, absent = byte-identical (proven against a git-materialized HEAD engine on state AND events).\n\nINTEGRATION CYCLE 1 — porchdice -> wickershimmy (all 8 rename points, repo grep zero — porch wicker + funk shimmy, roots unused) and the synth-gods cluster is real: androidlament, lasertemple, oscillatorminuet, cometwhistle…\n\n▶ Play it: Seance Cakewalk → Smoke Arithmetic → The Turning Stair — the three genres this change names, as one path https://stellate.app/?genre=wickershimmy&seed=8752&path=1247.14807,292.16891,896.90&xdur=0.044\n\n7f3e082 https://github.com/aboard-io/stellate/commit/7f3e08284039638c856be8473be86184fc1684dc",
   "date_published": "2026-07-09T22:59:36.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "wickershimmy",
    "jazz",
    "prelude",
    "explainer"
   ]
  },
  {
   "id": "f484a73d4781dc8e42a38d34315320e549f448c3",
   "url": "https://stellate.app/?genre=bigband&seed=9269&path=814.14134,833.14167,795.14167&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/f484a73d4781dc8e42a38d34315320e549f448c3",
   "title": "The blend reaches the ear: drums arrive in 3 bars, identity in 7",
   "summary": "Paul's critical bug — 99% reggae from fugue still sounded like a slow drumless fugue — was never the kernel (a 200-seed sweep exonerated the state at t=.99). The live glide layer killed the drums twice:",
   "content_html": "<p>Paul's critical bug — 99% reggae from fugue still sounded like a slow drumless fugue — was never the kernel (a 200-seed sweep exonerated the state at t=.99). The live glide layer killed the drums twice:</p>\n<ul><li>1. Drum sections never turned ON: the &quot;drum kit&quot; flip only rewrote sections whose drums were already playing — from an all-drums-off genre it was a no-op that erased its own diff</li><li>2. And when they finally turned on, they were mute: the &quot;sample&quot; flip replaced foundSources wholesale but zone-carried only pad/bass/melody</li><li>Plus the sync residue: topology crossfades re-anchored the beat grid mid-bar while old native notes rang across the new downbeat</li></ul>\n<p><em>Verified:</em> blend-arrival-run.js is the committed contract: parked on reggae after fugue — drums within 3 bars (was: never), kit/lead/bpm within 7 (was: ~118), fugue side unregressed, RMS real, zero…</p>\n<p><a href=\"https://stellate.app/?genre=bigband&amp;seed=9269&amp;path=814.14134,833.14167,795.14167&amp;xdur=13.122\">▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/f484a73d4781dc8e42a38d34315320e549f448c3\">f484a73</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul's critical bug — 99% reggae from fugue still sounded like a slow drumless fugue — was never the kernel (a 200-seed sweep exonerated the state at t=.99). The live glide layer killed the drums twice:\n\n• 1. Drum sections never turned ON: the \"drum kit\" flip only rewrote sections whose drums were already playing — from an all-drums-off genre it was a no-op that erased its own diff\n\n• 2. And when they finally turned on, they were mute: the \"sample\" flip replaced foundSources wholesale but zone-carried only pad/bass/melody\n\n• Plus the sync residue: topology crossfades re-anchored the beat grid mid-bar while old native notes rang across the new downbeat\n\nVerified: blend-arrival-run.js is the committed contract: parked on reggae after fugue — drums within 3 bars (was: never), kit/lead/bpm within 7 (was: ~118), fugue side unregressed, RMS real, zero…\n\n▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments https://stellate.app/?genre=bigband&seed=9269&path=814.14134,833.14167,795.14167&xdur=13.122\n\nf484a73 https://github.com/aboard-io/stellate/commit/f484a73d4781dc8e42a38d34315320e549f448c3",
   "date_published": "2026-07-09T22:59:14.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bigband",
    "sampler"
   ]
  },
  {
   "id": "f5a9bd1f9f87f27c21ac7f8893750363b1e33c77",
   "url": "https://stellate.app/?genre=androidlament&seed=1919&path=1653.10719,1694.13472,776.10446&xdur=0.219",
   "external_url": "https://github.com/aboard-io/stellate/commit/f5a9bd1f9f87f27c21ac7f8893750363b1e33c77",
   "title": "Genre fleet groundwork: 50 themed specs + three genre-tool repairs",
   "summary": "Six spec-author agents wrote 50 new genre specs across themed clusters, every one dry-run-validated at self-score 100/100 with no diagonal knock-offs (specs only — integration is the next, serialized phase):",
   "content_html": "<p>Six spec-author agents wrote 50 new genre specs across themed clusters, every one dry-run-validated at self-score 100/100 with no diagonal knock-offs (specs only — integration is the next, serialized phase):</p>\n<ul><li>classical (10): chalkvespers (chant), salondawdle (Satie), candlegauze (Debussy), cloisterloom (Tallis's 40 voices), miasmarow (Schoenberg/Scriabin), greasepaintoompah (Weill), urchinmatinee (showtunes)…</li><li>the Liverpool eras (8): moptoprattle, meadowjangle, strawberryfog, octopusminuet, walrusfuzz, rooftopholler, submarinelullaby, tangerinearcade</li><li>synth gods (8): androidlament (Vangelis), lasertemple (Jarre), oscillatorminuet (Carlos), cometwhistle (Tomita), chromepiston (Moroder), patchcordmirage (Tangerine Dream), velourregatta (Winwood MOR)…</li><li>prog (8): wizardcape, meadowmellotron, hexagonstampede, crimsoncourt, moonlagoon, sliderule, crumpetwhirl, polygonforge</li></ul>\n<p><a href=\"https://stellate.app/?genre=androidlament&amp;seed=1919&amp;path=1653.10719,1694.13472,776.10446&amp;xdur=0.219\">▶ Play it: Decommission Hymn → Cairn Respiration → Theropod Liturgy — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/f5a9bd1f9f87f27c21ac7f8893750363b1e33c77\">f5a9bd1</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Six spec-author agents wrote 50 new genre specs across themed clusters, every one dry-run-validated at self-score 100/100 with no diagonal knock-offs (specs only — integration is the next, serialized phase):\n\n• classical (10): chalkvespers (chant), salondawdle (Satie), candlegauze (Debussy), cloisterloom (Tallis's 40 voices), miasmarow (Schoenberg/Scriabin), greasepaintoompah (Weill), urchinmatinee (showtunes)…\n\n• the Liverpool eras (8): moptoprattle, meadowjangle, strawberryfog, octopusminuet, walrusfuzz, rooftopholler, submarinelullaby, tangerinearcade\n\n• synth gods (8): androidlament (Vangelis), lasertemple (Jarre), oscillatorminuet (Carlos), cometwhistle (Tomita), chromepiston (Moroder), patchcordmirage (Tangerine Dream), velourregatta (Winwood MOR)…\n\n• prog (8): wizardcape, meadowmellotron, hexagonstampede, crimsoncourt, moonlagoon, sliderule, crumpetwhirl, polygonforge\n\n▶ Play it: Decommission Hymn → Cairn Respiration → Theropod Liturgy — the three genres this change names, as one path https://stellate.app/?genre=androidlament&seed=1919&path=1653.10719,1694.13472,776.10446&xdur=0.219\n\nf5a9bd1 https://github.com/aboard-io/stellate/commit/f5a9bd1f9f87f27c21ac7f8893750363b1e33c77",
   "date_published": "2026-07-09T22:07:32.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "androidlament",
    "barrowwake",
    "beakstampede",
    "found"
   ]
  },
  {
   "id": "faaff835d3c377f582185b39c378842a1ad3d574",
   "url": "https://stellate.app/?genre=spokenword&seed=2341&path=196.11721,215.11754,177.11754&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/faaff835d3c377f582185b39c378842a1ad3d574",
   "title": "Desktop tabs keep playing; the song is downloadable (midi/wav/mp3)",
   "summary": "Safari tab-blur: the silence was SELF-INFLICTED — goHidden muted the ring worklet on every platform's visibilitychange, defending against a WebKit suspension that was REMOVED in March 2022 (bug 231105 / r291267); the old bg-survival gate asserted \"hidden -> RMS ~0\", enforcing the bug.",
   "content_html": "<p>Safari tab-blur: the silence was SELF-INFLICTED — goHidden muted the ring worklet on every platform's visibilitychange, defending against a WebKit suspension that was REMOVED in March 2022 (bug 231105 / r291267); the old bg-survival gate asserted &quot;hidden -&gt; RMS ~0&quot;, enforcing the bug.</p>\n<ul><li>Export, first slice: the ⚙ panel gains ⤓ midi / ⤓ wav / ⤓ mp3 for the current song, named from the chyron's invented band identity.</li></ul>\n<p><a href=\"https://stellate.app/?genre=spokenword&amp;seed=2341&amp;path=196.11721,215.11754,177.11754&amp;xdur=13.122\">▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/faaff835d3c377f582185b39c378842a1ad3d574\">faaff83</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Safari tab-blur: the silence was SELF-INFLICTED — goHidden muted the ring worklet on every platform's visibilitychange, defending against a WebKit suspension that was REMOVED in March 2022 (bug 231105 / r291267); the old bg-survival gate asserted \"hidden -> RMS ~0\", enforcing the bug.\n\n• Export, first slice: the ⚙ panel gains ⤓ midi / ⤓ wav / ⤓ mp3 for the current song, named from the chyron's invented band identity.\n\n▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices https://stellate.app/?genre=spokenword&seed=2341&path=196.11721,215.11754,177.11754&xdur=13.122\n\nfaaff83 https://github.com/aboard-io/stellate/commit/faaff835d3c377f582185b39c378842a1ad3d574",
   "date_published": "2026-07-09T22:07:03.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "spokenword",
    "voice"
   ]
  },
  {
   "id": "09f18a7c14df37b1a1e4296694c53ab9cf74f407",
   "url": "https://stellate.app/?genre=transitwave&seed=1572&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/09f18a7c14df37b1a1e4296694c53ab9cf74f407",
   "title": "App surface: CPU box gone, viz speaks character, backgrounds never stack",
   "summary": "Three Paul asks in one surface pass:",
   "content_html": "<p>Three Paul asks in one surface pass:</p>\n<ul><li>The ⚡ CPU meter box is removed (DOM, CSS, 1Hz ticker, its screenshot probe); the engine's load/eco machinery is untouched and still reads out in the chyron tech line.</li><li>Inside-the-sound overhaul: the voice timeline is ALWAYS 8 cells — chordEvery-16/32 genres fold into stacked rows instead of shrinking (mobile was cramped)</li><li>Background exclusivity: the video/demo alternator was XOR-correct all along — three BYPASS paths stacked the layers: the ⚙ panel's video button toggled VideoLayer directly (under the demo canvas's…</li><li>(panels.js also carries the export cluster's ⤓ buttons — committed with their engine half in the next commit's story; kept here because the file merges both agents' work.)</li></ul>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=1572&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/09f18a7c14df37b1a1e4296694c53ab9cf74f407\">09f18a7</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Three Paul asks in one surface pass:\n\n• The ⚡ CPU meter box is removed (DOM, CSS, 1Hz ticker, its screenshot probe); the engine's load/eco machinery is untouched and still reads out in the chyron tech line.\n\n• Inside-the-sound overhaul: the voice timeline is ALWAYS 8 cells — chordEvery-16/32 genres fold into stacked rows instead of shrinking (mobile was cramped)\n\n• Background exclusivity: the video/demo alternator was XOR-correct all along — three BYPASS paths stacked the layers: the ⚙ panel's video button toggled VideoLayer directly (under the demo canvas's…\n\n• (panels.js also carries the export cluster's ⤓ buttons — committed with their engine half in the next commit's story; kept here because the file merges both agents' work.)\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=1572&path=749.12536,768.12569,730.12569&xdur=13.122\n\n09f18a7 https://github.com/aboard-io/stellate/commit/09f18a7c14df37b1a1e4296694c53ab9cf74f407",
   "date_published": "2026-07-09T22:06:42.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "0240cfb0e39ff93af2538811df81ea1484101d8b",
   "url": "https://stellate.app/?genre=spokenword&seed=2904&path=196.11721,215.11754,177.11754&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/0240cfb0e39ff93af2538811df81ea1484101d8b",
   "title": "tools/ship.sh: gates -> push -> deploy, so deployed means committed",
   "summary": "One command closes the deploy gap: ship.sh refuses a dirty tree (the deploy rsyncs the WORKING TREE, not a git ref — without the check, uncommitted work ships silently and stellate.app drifts ahead of main), runs the full gate suite (verify.sh + theory/pipes/speech), pushes, then runs…",
   "content_html": "<p>One command closes the deploy gap: ship.sh refuses a dirty tree (the deploy rsyncs the WORKING TREE, not a git ref — without the check, uncommitted work ships silently and stellate.app drifts ahead of main), runs the full gate suite (verify.sh + theory/pipes/speech), pushes, then runs…</p>\n<p><a href=\"https://stellate.app/?genre=spokenword&amp;seed=2904&amp;path=196.11721,215.11754,177.11754&amp;xdur=13.122\">▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/0240cfb0e39ff93af2538811df81ea1484101d8b\">0240cfb</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "One command closes the deploy gap: ship.sh refuses a dirty tree (the deploy rsyncs the WORKING TREE, not a git ref — without the check, uncommitted work ships silently and stellate.app drifts ahead of main), runs the full gate suite (verify.sh + theory/pipes/speech), pushes, then runs…\n\n▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices https://stellate.app/?genre=spokenword&seed=2904&path=196.11721,215.11754,177.11754&xdur=13.122\n\n0240cfb https://github.com/aboard-io/stellate/commit/0240cfb0e39ff93af2538811df81ea1484101d8b",
   "date_published": "2026-07-09T21:09:01.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "spokenword",
    "voice"
   ]
  },
  {
   "id": "5f12856e07bfc9e100fbc827cf4525e7f12d00a2",
   "url": "https://stellate.app/?genre=transitwave&seed=7326&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/5f12856e07bfc9e100fbc827cf4525e7f12d00a2",
   "title": "tw_vocal joins the mutable class; the PA verified live",
   "summary": "The MEDIA_MANIFEST invariant fired on its second real deploy and was right again: sing.py re-sings found/tw_vocal.mp3 on every offline render under a fixed name — mutable by nature, so it joins the manifests in the no-cache class (excluded from the invariant set",
   "content_html": "<p>The MEDIA_MANIFEST invariant fired on its second real deploy and was right again: sing.py re-sings found/tw_vocal.mp3 on every offline render under a fixed name — mutable by nature, so it joins the manifests in the no-cache class (excluded from the invariant set</p>\n<ul><li>Production-verified end to end: headless chromium parked the travel loop on transitwave at https://stellate.app</li></ul>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=7326&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/5f12856e07bfc9e100fbc827cf4525e7f12d00a2\">5f12856</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The MEDIA_MANIFEST invariant fired on its second real deploy and was right again: sing.py re-sings found/tw_vocal.mp3 on every offline render under a fixed name — mutable by nature, so it joins the manifests in the no-cache class (excluded from the invariant set\n\n• Production-verified end to end: headless chromium parked the travel loop on transitwave at https://stellate.app\n\n▶ Play it: Rail Replacement Rapture — parked on the genre this change names https://stellate.app/?genre=transitwave&seed=7326&path=749.12536,768.12569,730.12569&xdur=13.122\n\n5f12856 https://github.com/aboard-io/stellate/commit/5f12856e07bfc9e100fbc827cf4525e7f12d00a2",
   "date_published": "2026-07-09T20:40:52.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "voice"
   ]
  },
  {
   "id": "71f3516c16ab4a94ab0ada6be8a6de6bad03a50a",
   "url": "https://stellate.app/?genre=transitwave&seed=1500&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/71f3516c16ab4a94ab0ada6be8a6de6bad03a50a",
   "title": "The machine speaks: client-side espeak-ng WASM + the transit PA",
   "summary": "engine/speech.js (CsdSpeech) — speech synthesis moves into the client. vendor/espeak-ng/ carries a TRIMMED emscripten espeak-ng (242 KB gz glue + 452 KB gz en-only data, repacked from the @echogarden 0.3.5 artifact by trim.mjs — the 24 MB all-languages pack stays upstream",
   "content_html": "<p>engine/speech.js (CsdSpeech) — speech synthesis moves into the client. vendor/espeak-ng/ carries a TRIMMED emscripten espeak-ng (242 KB gz glue + 452 KB gz en-only data, repacked from the @echogarden 0.3.5 artifact by trim.mjs — the 24 MB all-languages pack stays upstream</p>\n<ul><li>Determinism, the hard way: SetRandSeed is not exported and espeak's wavegen consumes rand(), so same-instance repeats drift</li><li>Wired additively at both engines: found-player synthToBuffer feeds the same url-keyed buffer cache; live's ring + wavOut speech paths and press's decode loop all branch on src.synthText</li><li>The worked example: when a state carries real transitwave presence (weight &gt;= .35), the PA announces THIS seed's namebank act — &quot;Now arriving: The Signalmen.&quot;</li><li>Licensing: NOTICE gains a combined-work section (deliberately NOT the lamejs LGPL carve-out shape</li></ul>\n<p><em>Verified:</em> test/speech.test.js (synth determinism, upsampler exactness, key canon, false-path, namebank-text determinism), test/speech-live- run.js (chromium rides transitwave 6 bars…</p>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=1500&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/71f3516c16ab4a94ab0ada6be8a6de6bad03a50a\">71f3516</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "engine/speech.js (CsdSpeech) — speech synthesis moves into the client. vendor/espeak-ng/ carries a TRIMMED emscripten espeak-ng (242 KB gz glue + 452 KB gz en-only data, repacked from the @echogarden 0.3.5 artifact by trim.mjs — the 24 MB all-languages pack stays upstream\n\n• Determinism, the hard way: SetRandSeed is not exported and espeak's wavegen consumes rand(), so same-instance repeats drift\n\n• Wired additively at both engines: found-player synthToBuffer feeds the same url-keyed buffer cache; live's ring + wavOut speech paths and press's decode loop all branch on src.synthText\n\n• The worked example: when a state carries real transitwave presence (weight >= .35), the PA announces THIS seed's namebank act — \"Now arriving: The Signalmen.\"\n\n• Licensing: NOTICE gains a combined-work section (deliberately NOT the lamejs LGPL carve-out shape\n\nVerified: test/speech.test.js (synth determinism, upsampler exactness, key canon, false-path, namebank-text determinism), test/speech-live- run.js (chromium rides transitwave 6 bars…\n\n▶ Play it: Rail Replacement Rapture — parked on the genre this change names https://stellate.app/?genre=transitwave&seed=1500&path=749.12536,768.12569,730.12569&xdur=13.122\n\n71f3516 https://github.com/aboard-io/stellate/commit/71f3516c16ab4a94ab0ada6be8a6de6bad03a50a",
   "date_published": "2026-07-09T20:37:42.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "voice"
   ]
  },
  {
   "id": "bffe430e2121bb1fd5e8b891cf3d0a3fd89166d3",
   "url": "https://stellate.app/?genre=vaporwave&seed=3566&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/bffe430e2121bb1fd5e8b891cf3d0a3fd89166d3",
   "title": "Deploy the MP3 diet to stellate.app; manifests leave the immutable set",
   "summary": "First real exercise of the MEDIA_MANIFEST invariant caught a script bug: the manifest hashed found/*.json alongside the media, but manifests are MUTABLE by design (nginx serves them no-cache — they map names; only the named bytes are immutable). .json now excluded from the invariant set.",
   "content_html": "<p>First real exercise of the MEDIA_MANIFEST invariant caught a script bug: the manifest hashed found/*.json alongside the media, but manifests are MUTABLE by design (nginx serves them no-cache — they map names; only the named bytes are immutable). .json now excluded from the invariant set.</p>\n<ul><li>Production-verified: headless chromium rode vaporwave on live stellate.app — crossOriginIsolated, MP3 beds fetched 200 + decoded, maxRms 0.207, zero errors.</li></ul>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=3566&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/bffe430e2121bb1fd5e8b891cf3d0a3fd89166d3\">bffe430</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "First real exercise of the MEDIA_MANIFEST invariant caught a script bug: the manifest hashed found/*.json alongside the media, but manifests are MUTABLE by design (nginx serves them no-cache — they map names; only the named bytes are immutable). .json now excluded from the invariant set.\n\n• Production-verified: headless chromium rode vaporwave on live stellate.app — crossOriginIsolated, MP3 beds fetched 200 + decoded, maxRms 0.207, zero errors.\n\n▶ Play it: Food Court Eternity — parked on the genre this change names https://stellate.app/?genre=vaporwave&seed=3566&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\nbffe430 https://github.com/aboard-io/stellate/commit/bffe430e2121bb1fd5e8b891cf3d0a3fd89166d3",
   "date_published": "2026-07-09T19:07:36.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "found"
   ]
  },
  {
   "id": "5327ba1957c21c7c80483095b8768c880912cbd9",
   "url": "https://stellate.app/?genre=spokenword&seed=5473&path=196.11721,215.11754,177.11754&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/5327ba1957c21c7c80483095b8768c880912cbd9",
   "title": "The MP3 diet: beds + speech ship compressed (317 MB -> 43 MB)",
   "summary": "HOSTING.md §3, executed: the 53 top-level beds (found/*.wav, 270 MB) and 244 espeak speech files (found/samples/speech/, 47 MB) are now MP3 (libmp3lame -q:a 2, mono 44.1k) — 35 MB + 8 MB.",
   "content_html": "<p>HOSTING.md §3, executed: the 53 top-level beds (found/*.wav, 270 MB) and 244 espeak speech files (found/samples/speech/, 47 MB) are now MP3 (libmp3lame -q:a 2, mono 44.1k) — 35 MB + 8 MB.</p>\n<ul><li>Every touchpoint from the §3 list, plus the ones the grep law caught beyond it: found-manifest.json values, both fetch recipes, the speech/tw_vocal literals in genre-kernel, press.js's bed fallback (now…</li><li>New committed gate: test/mp3-bed-decode-run.js — headless chromium parks the travel loop on spokenword and rides 5 bars against the COOP/COEP server, asserting real RMS, found/vx_ginsberg*.mp3 fetched 200 +…</li></ul>\n<p><a href=\"https://stellate.app/?genre=spokenword&amp;seed=5473&amp;path=196.11721,215.11754,177.11754&amp;xdur=13.122\">▶ Play it: Dial Tone Prophet — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/5327ba1957c21c7c80483095b8768c880912cbd9\">5327ba1</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "HOSTING.md §3, executed: the 53 top-level beds (found/*.wav, 270 MB) and 244 espeak speech files (found/samples/speech/, 47 MB) are now MP3 (libmp3lame -q:a 2, mono 44.1k) — 35 MB + 8 MB.\n\n• Every touchpoint from the §3 list, plus the ones the grep law caught beyond it: found-manifest.json values, both fetch recipes, the speech/tw_vocal literals in genre-kernel, press.js's bed fallback (now…\n\n• New committed gate: test/mp3-bed-decode-run.js — headless chromium parks the travel loop on spokenword and rides 5 bars against the COOP/COEP server, asserting real RMS, found/vx_ginsberg*.mp3 fetched 200 +…\n\n▶ Play it: Dial Tone Prophet — parked on the genre this change names https://stellate.app/?genre=spokenword&seed=5473&path=196.11721,215.11754,177.11754&xdur=13.122\n\n5327ba1 https://github.com/aboard-io/stellate/commit/5327ba1957c21c7c80483095b8768c880912cbd9",
   "date_published": "2026-07-09T19:05:06.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "spokenword",
    "voice"
   ]
  },
  {
   "id": "c630cd0afc399faef9e2955f3bf4b0d5c66a1d1e",
   "url": "https://stellate.app/how.html",
   "external_url": "https://github.com/aboard-io/stellate/commit/c630cd0afc399faef9e2955f3bf4b0d5c66a1d1e",
   "title": "Deploy stellate.app: droplet live, tools/deploy-stellate.sh is the recipe",
   "summary": "Enacted docs/HOSTING.md via doctl (2026-07-09): droplet stellate-app (nyc3, s-1vcpu-1gb, 159.89.38.37), DO DNS zone (A @ + www CNAME), Let's Encrypt cert (.app is HSTS-preloaded",
   "content_html": "<p>Enacted docs/HOSTING.md via doctl (2026-07-09): droplet stellate-app (nyc3, s-1vcpu-1gb, 159.89.38.37), DO DNS zone (A @ + www CNAME), Let's Encrypt cert (.app is HSTS-preloaded</p>\n<ul><li>tools/deploy-stellate.sh makes the deploy repeatable and the server disposable: MEDIA_MANIFEST immutable-invariant check (ABORTS on a changed hash under an unchanged name) -&gt; rsync with the §5 deny-list…</li></ul>\n<p><em>Verified:</em> in production by headless chromium: crossOriginIsolated, SharedArrayBuffer live, star map drawn, how.html 200, and a real ride on the SAB ring engine</p>\n<p><a href=\"https://stellate.app/how.html\">▶ read how a song is made — the drawn pipeline itself</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/c630cd0afc399faef9e2955f3bf4b0d5c66a1d1e\">c630cd0</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Enacted docs/HOSTING.md via doctl (2026-07-09): droplet stellate-app (nyc3, s-1vcpu-1gb, 159.89.38.37), DO DNS zone (A @ + www CNAME), Let's Encrypt cert (.app is HSTS-preloaded\n\n• tools/deploy-stellate.sh makes the deploy repeatable and the server disposable: MEDIA_MANIFEST immutable-invariant check (ABORTS on a changed hash under an unchanged name) -> rsync with the §5 deny-list…\n\nVerified: in production by headless chromium: crossOriginIsolated, SharedArrayBuffer live, star map drawn, how.html 200, and a real ride on the SAB ring engine\n\n▶ read how a song is made — the drawn pipeline itself https://stellate.app/how.html\n\nc630cd0 https://github.com/aboard-io/stellate/commit/c630cd0afc399faef9e2955f3bf4b0d5c66a1d1e",
   "date_published": "2026-07-09T18:36:42.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "explainer"
   ]
  },
  {
   "id": "7d02d6555ee755c814463229a8c5718350362841",
   "url": "https://stellate.app/how.html",
   "external_url": "https://github.com/aboard-io/stellate/commit/7d02d6555ee755c814463229a8c5718350362841",
   "title": "Hosting plan + docs aligned to one canonical fact sheet",
   "summary": "docs/HOSTING.md — the stellate.app plan, argued from verified facts: a small DO droplet + nginx with ALL media same-origin (COOP/COEP require-corp for the SAB ring engine disqualifies DO Spaces — no CORP headers for the no-cors <video> loads — and App Platform static — no custom headers at all)",
   "content_html": "<p>docs/HOSTING.md — the stellate.app plan, argued from verified facts: a small DO droplet + nginx with ALL media same-origin (COOP/COEP require-corp for the SAB ring engine disqualifies DO Spaces — no CORP headers for the no-cors &lt;video&gt; loads — and App Platform static — no custom headers at all)</p>\n<ul><li>Docs alignment: README and CLAUDE.md finish the STELLATE rename, gain Open source + how.html + HOSTING pointers, and the submodule leaves the golden setup path (optional; public clones run without it).</li></ul>\n<p><a href=\"https://stellate.app/how.html\">▶ read how a song is made — the drawn pipeline itself</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/7d02d6555ee755c814463229a8c5718350362841\">7d02d65</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "docs/HOSTING.md — the stellate.app plan, argued from verified facts: a small DO droplet + nginx with ALL media same-origin (COOP/COEP require-corp for the SAB ring engine disqualifies DO Spaces — no CORP headers for the no-cors <video> loads — and App Platform static — no custom headers at all)\n\n• Docs alignment: README and CLAUDE.md finish the STELLATE rename, gain Open source + how.html + HOSTING pointers, and the submodule leaves the golden setup path (optional; public clones run without it).\n\n▶ read how a song is made — the drawn pipeline itself https://stellate.app/how.html\n\n7d02d65 https://github.com/aboard-io/stellate/commit/7d02d6555ee755c814463229a8c5718350362841",
   "date_published": "2026-07-09T17:55:23.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "explainer"
   ]
  },
  {
   "id": "4f592615f05bb2e99aef1da8c9e9a65211566e87",
   "url": "https://stellate.app/?genre=bigband&seed=8517&path=814.14134,833.14167,795.14167&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/4f592615f05bb2e99aef1da8c9e9a65211566e87",
   "title": "Open source: MIT + NOTICE + CONTRIBUTING + CI — recipes, not media",
   "summary": "The release kit, built on a verified provenance audit of every third-party component:",
   "content_html": "<p>The release kit, built on a verified provenance audit of every third-party component:</p>\n<ul><li>LICENSE — MIT (c) 2026 Paul Ford, except-as-noted-in-NOTICE.</li><li>NOTICE — MicroW8 (Unlicense), lamejs (LGPL-3.0 carve-out), faustwasm (LGPL-2.1+, npm dep — its soundfile patch rescued into engine/faust/patches/ so it survives npm ci), Faust stdlib generated-code credit…</li><li>SOURCES.md — &quot;The media policy&quot; up top: three bright-line tiers (free / attribution-encumbered fetch-only / unlicensed-commercial never-redistributed), and the ledger's frankest rows made frank (the sample CD…</li><li>CONTRIBUTING.md — the social contract: the one rule, the gates a PR must keep green (178/178 matrix, determinism byte-identity, vocabulary), per-contribution-type guidance (anchors matrix-safe, pipes bring…</li></ul>\n<p><em>Verified:</em> verify.sh — media guard: fails if any audio/video/model binary is ever tracked (the one rule, now enforced).</p>\n<p><a href=\"https://stellate.app/?genre=bigband&amp;seed=8517&amp;path=814.14134,833.14167,795.14167&amp;xdur=13.122\">▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/4f592615f05bb2e99aef1da8c9e9a65211566e87\">4f59261</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The release kit, built on a verified provenance audit of every third-party component:\n\n• LICENSE — MIT (c) 2026 Paul Ford, except-as-noted-in-NOTICE.\n\n• NOTICE — MicroW8 (Unlicense), lamejs (LGPL-3.0 carve-out), faustwasm (LGPL-2.1+, npm dep — its soundfile patch rescued into engine/faust/patches/ so it survives npm ci), Faust stdlib generated-code credit…\n\n• SOURCES.md — \"The media policy\" up top: three bright-line tiers (free / attribution-encumbered fetch-only / unlicensed-commercial never-redistributed), and the ledger's frankest rows made frank (the sample CD…\n\n• CONTRIBUTING.md — the social contract: the one rule, the gates a PR must keep green (178/178 matrix, determinism byte-identity, vocabulary), per-contribution-type guidance (anchors matrix-safe, pipes bring…\n\nVerified: verify.sh — media guard: fails if any audio/video/model binary is ever tracked (the one rule, now enforced).\n\n▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments https://stellate.app/?genre=bigband&seed=8517&path=814.14134,833.14167,795.14167&xdur=13.122\n\n4f59261 https://github.com/aboard-io/stellate/commit/4f592615f05bb2e99aef1da8c9e9a65211566e87",
   "date_published": "2026-07-09T17:55:02.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bigband",
    "sampler"
   ]
  },
  {
   "id": "4a09760cd5ad7f5b7d385280be5ad66e1420323b",
   "url": "https://stellate.app/how.html",
   "external_url": "https://github.com/aboard-io/stellate/commit/4a09760cd5ad7f5b7d385280be5ad66e1420323b",
   "title": "The app is STELLATE, and ? now explains it",
   "summary": "The app branded itself CONSTELLATE while the project/repo/site are stellate — one name now (title, brand, Media Session artist, download filenames, mix pages, chyron comments).",
   "content_html": "<p>The app branded itself CONSTELLATE while the project/repo/site are stellate — one name now (title, brand, Media Session artist, download filenames, mix pages, chyron comments).</p>\n<ul><li>The ? chip grows from an instructions toggle into a real about layer: what stellate is, how to play (the old .sub text migrated, corrected), made by Aboard, the GitHub repo, MIT</li><li>Explorer-UI gate extended: the about layer's links and how.html's reachability + genre count are pinned assertions.</li></ul>\n<p><a href=\"https://stellate.app/how.html\">▶ read how a song is made — the drawn pipeline itself</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/4a09760cd5ad7f5b7d385280be5ad66e1420323b\">4a09760</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The app branded itself CONSTELLATE while the project/repo/site are stellate — one name now (title, brand, Media Session artist, download filenames, mix pages, chyron comments).\n\n• The ? chip grows from an instructions toggle into a real about layer: what stellate is, how to play (the old .sub text migrated, corrected), made by Aboard, the GitHub repo, MIT\n\n• Explorer-UI gate extended: the about layer's links and how.html's reachability + genre count are pinned assertions.\n\n▶ read how a song is made — the drawn pipeline itself https://stellate.app/how.html\n\n4a09760 https://github.com/aboard-io/stellate/commit/4a09760cd5ad7f5b7d385280be5ad66e1420323b",
   "date_published": "2026-07-09T17:54:44.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "explainer"
   ]
  },
  {
   "id": "f2a155f1ae526f68029037fd5d406f2d3f276b07",
   "url": "https://stellate.app/?genre=synthwave&seed=5569&path=859.9909,878.9942,840.9942&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/f2a155f1ae526f68029037fd5d406f2d3f276b07",
   "title": "Docs refresh: 178 everywhere, MUSIC-MIND in the README and layout",
   "summary": "The genre count had drifted across four docs (~110 in README/CLAUDE, 17/17 in GENRE-SPACE, 32-genre in FAUST-PORT, 63/63 in a verifier comment — each true when written); all now say 178, with the historical measurements clarified rather than falsified.",
   "content_html": "<p>The genre count had drifted across four docs (~110 in README/CLAUDE, 17/17 in GENRE-SPACE, 32-genre in FAUST-PORT, 63/63 in a verifier comment — each true when written); all now say 178, with the historical measurements clarified rather than falsified.</p>\n<p><a href=\"https://stellate.app/?genre=synthwave&amp;seed=5569&amp;path=859.9909,878.9942,840.9942&amp;xdur=13.122\">▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/f2a155f1ae526f68029037fd5d406f2d3f276b07\">f2a155f</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The genre count had drifted across four docs (~110 in README/CLAUDE, 17/17 in GENRE-SPACE, 32-genre in FAUST-PORT, 63/63 in a verifier comment — each true when written); all now say 178, with the historical measurements clarified rather than falsified.\n\n▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration https://stellate.app/?genre=synthwave&seed=5569&path=859.9909,878.9942,840.9942&xdur=13.122\n\nf2a155f https://github.com/aboard-io/stellate/commit/f2a155f1ae526f68029037fd5d406f2d3f276b07",
   "date_published": "2026-07-09T13:30:31.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "synthwave",
    "synth"
   ]
  },
  {
   "id": "1aad46e71b377e1c845bf937dda059eb188e79c8",
   "url": "https://stellate.app/?genre=electro&seed=3495&path=1383.16230,1923.21823,1315.6203&xdur=0.048",
   "external_url": "https://github.com/aboard-io/stellate/commit/1aad46e71b377e1c845bf937dda059eb188e79c8",
   "title": "MUSIC-MIND: generative harmony, event pipes, and intelligence axes",
   "summary": "Three organs answer \"what would make richer, more interesting music across all 178 genres\" (docs/MUSIC-MIND.md):",
   "content_html": "<p>Three organs answer &quot;what would make richer, more interesting music across all 178 genres&quot; (docs/MUSIC-MIND.md):</p>\n<ul><li>engine/theory.js (CsdTheory) — the harmony brain: modes, minimal- motion voice leading (close/open/drop2/quartal/cluster), and a functional-harmony progression generator whose `adventure` knob gates diatonic…</li><li>engine/pipes.js (CsdPipes) — the scheduler as pipes: state.pipes runs ten composable seeded transforms (harmonize, echoCanon, strum, ghost, callResponse, densityArc, sweepArc, vibratoSwell, throwFx…</li><li>rhythm intelligence — new clave/cell bass vocabulary (tresillo, son, hemiola, charleston), per-cycle bass-cell mutation, and melody rhythm cells (dotted pairs / tresillo / 3-3-2), all under state.rhythm…</li><li>The genre space grows the axes: deriveMind() infers every anchor's theory/pipes/rhythm from what it already declares (progression pool -&gt; adventure/color, kit pool -&gt; complexity, models -&gt; pipes), with an…</li></ul>\n<p><a href=\"https://stellate.app/?genre=electro&amp;seed=3495&amp;path=1383.16230,1923.21823,1315.6203&amp;xdur=0.048\">▶ Play it: Vocoder Ambassador → Anechoic Census → Undertow Sock Hop — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/1aad46e71b377e1c845bf937dda059eb188e79c8\">1aad46e</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Three organs answer \"what would make richer, more interesting music across all 178 genres\" (docs/MUSIC-MIND.md):\n\n• engine/theory.js (CsdTheory) — the harmony brain: modes, minimal- motion voice leading (close/open/drop2/quartal/cluster), and a functional-harmony progression generator whose `adventure` knob gates diatonic…\n\n• engine/pipes.js (CsdPipes) — the scheduler as pipes: state.pipes runs ten composable seeded transforms (harmonize, echoCanon, strum, ghost, callResponse, densityArc, sweepArc, vibratoSwell, throwFx…\n\n• rhythm intelligence — new clave/cell bass vocabulary (tresillo, son, hemiola, charleston), per-cycle bass-cell mutation, and melody rhythm cells (dotted pairs / tresillo / 3-3-2), all under state.rhythm…\n\n• The genre space grows the axes: deriveMind() infers every anchor's theory/pipes/rhythm from what it already declares (progression pool -> adventure/color, kit pool -> complexity, models -> pipes), with an…\n\n▶ Play it: Vocoder Ambassador → Anechoic Census → Undertow Sock Hop — the three genres this change names, as one path https://stellate.app/?genre=electro&seed=3495&path=1383.16230,1923.21823,1315.6203&xdur=0.048\n\n1aad46e https://github.com/aboard-io/stellate/commit/1aad46e71b377e1c845bf937dda059eb188e79c8",
   "date_published": "2026-07-09T13:30:16.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "electro",
    "minimal",
    "surfrock",
    "sampler"
   ]
  },
  {
   "id": "501d0533c1f310e0862a10aef9d463479c8a3c64",
   "url": "https://stellate.app/?genre=bebop&seed=2155&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/501d0533c1f310e0862a10aef9d463479c8a3c64",
   "title": "Background program: cut every 8 TRUE measures, on the beat",
   "summary": "The video clip advance and the video<->demo alternation both counted chord-bar ticks, but a chord bar is state.chordEvery beats (default 8 = two 4/4 measures) — so \"8 bars\" was really 16 measures.",
   "content_html": "<p>The video clip advance and the video&lt;-&gt;demo alternation both counted chord-bar ticks, but a chord bar is state.chordEvery beats (default 8 = two 4/4 measures) — so &quot;8 bars&quot; was really 16 measures.</p>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=2155&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/501d0533c1f310e0862a10aef9d463479c8a3c64\">501d053</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The video clip advance and the video<->demo alternation both counted chord-bar ticks, but a chord bar is state.chordEvery beats (default 8 = two 4/4 measures) — so \"8 bars\" was really 16 measures.\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=2155&path=694.13834,713.13867,675.13867&xdur=13.122\n\n501d053 https://github.com/aboard-io/stellate/commit/501d0533c1f310e0862a10aef9d463479c8a3c64",
   "date_published": "2026-07-09T13:29:52.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "ef420f366deb31b1e5f208be0f52d4db0fe93729",
   "url": "https://stellate.app/?genre=house&seed=3894&path=1101.20850,1030.7218,893.15798&xdur=0.055",
   "external_url": "https://github.com/aboard-io/stellate/commit/ef420f366deb31b1e5f208be0f52d4db0fe93729",
   "title": "Incorporate the Fatboy Slim \"Skip to My Loops\" sample CD + a reusable sample-CD pipeline",
   "summary": "Adds a repeatable \"incorporate a sample CD\" workflow and uses it to fold Norman Cook's Skip to My Loops (archive.org fatboy-slim-skip-to-my-loops) across the big-beat/house/funk genres.",
   "content_html": "<p>Adds a repeatable &quot;incorporate a sample CD&quot; workflow and uses it to fold Norman Cook's Skip to My Loops (archive.org fatboy-slim-skip-to-my-loops) across the big-beat/house/funk genres.</p>\n<ul><li>tools/fetch-sample-cd.sh &lt;item&gt; &lt;zip&gt; &lt;prefix&gt; — download → extract → mono 44.1k → trim silence + loudnorm → drop near-empty → classify → rename by detected metadata → found/samples/&lt;prefix&gt;/ + manifest + a…</li><li>tools/classify-sample-cd.py — numpy/scipy analyzer (no librosa/aubio): YIN pitch+clarity, onset-autocorrelation BPM, spectral centroid → loop/tonal/ oneshot/chop.</li><li>Documented as &quot;Incorporating a sample CD&quot; in CLAUDE.md.</li><li>Skip to My Loops: 42 curated samples registered in genre-kernel SAMPLES (34 breakbeat loops with detected bpm, 5 vocal/funk chops, 3 one-shot hits), wired MATRIX-SAFELY into 17 genres</li></ul>\n<p><a href=\"https://stellate.app/?genre=house&amp;seed=3894&amp;path=1101.20850,1030.7218,893.15798&amp;xdur=0.055\">▶ Play it: Congregation Furnace → Downbeat Notary → Airhorn Apocrypha — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/ef420f366deb31b1e5f208be0f52d4db0fe93729\">ef420f3</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Adds a repeatable \"incorporate a sample CD\" workflow and uses it to fold Norman Cook's Skip to My Loops (archive.org fatboy-slim-skip-to-my-loops) across the big-beat/house/funk genres.\n\n• tools/fetch-sample-cd.sh <item> <zip> <prefix> — download → extract → mono 44.1k → trim silence + loudnorm → drop near-empty → classify → rename by detected metadata → found/samples/<prefix>/ + manifest + a…\n\n• tools/classify-sample-cd.py — numpy/scipy analyzer (no librosa/aubio): YIN pitch+clarity, onset-autocorrelation BPM, spectral centroid → loop/tonal/ oneshot/chop.\n\n• Documented as \"Incorporating a sample CD\" in CLAUDE.md.\n\n• Skip to My Loops: 42 curated samples registered in genre-kernel SAMPLES (34 breakbeat loops with detected bpm, 5 vocal/funk chops, 3 one-shot hits), wired MATRIX-SAFELY into 17 genres\n\n▶ Play it: Congregation Furnace → Downbeat Notary → Airhorn Apocrypha — the three genres this change names, as one path https://stellate.app/?genre=house&seed=3894&path=1101.20850,1030.7218,893.15798&xdur=0.055\n\nef420f3 https://github.com/aboard-io/stellate/commit/ef420f366deb31b1e5f208be0f52d4db0fe93729",
   "date_published": "2026-07-09T11:36:24.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "house",
    "funk",
    "bigbeat",
    "voice"
   ]
  },
  {
   "id": "1e0e2c3c88e8059eb36b94a8dd0e8c2312fa889c",
   "url": "https://stellate.app/?genre=jungle&seed=3308&path=1718.20504,1737.20537,1699.20537&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/1e0e2c3c88e8059eb36b94a8dd0e8c2312fa889c",
   "title": "Star map: label level-of-detail so dense/mobile views don't overlap",
   "summary": "Paul (mobile screenshot): names overlapping badly at default zoom; only legible zoomed all the way in. Root cause: the map renders anamorphically stretched to the viewport, and a ~430px-wide phone simply hasn't the horizontal pixels to show 178 readable names without overlap",
   "content_html": "<p>Paul (mobile screenshot): names overlapping badly at default zoom; only legible zoomed all the way in. Root cause: the map renders anamorphically stretched to the viewport, and a ~430px-wide phone simply hasn't the horizontal pixels to show 178 readable names without overlap</p>\n<ul><li>Fix: draw every STAR always, but a NAME only if its box clears the names already placed at the current zoom. Active (weighted) genres always win a slot; the rest fill greedily in a stable order.</li></ul>\n<p><em>Verified:</em> desktop 1200×850 → all 178 labels, 0 overlaps, 42px gap, gate PASS; mobile 430×900 → 131 names shown, 0 drawn-label overlaps (was 180+).</p>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=3308&amp;path=1718.20504,1737.20537,1699.20537&amp;xdur=13.122\">▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/1e0e2c3c88e8059eb36b94a8dd0e8c2312fa889c\">1e0e2c3</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul (mobile screenshot): names overlapping badly at default zoom; only legible zoomed all the way in. Root cause: the map renders anamorphically stretched to the viewport, and a ~430px-wide phone simply hasn't the horizontal pixels to show 178 readable names without overlap\n\n• Fix: draw every STAR always, but a NAME only if its box clears the names already placed at the current zoom. Active (weighted) genres always win a slot; the rest fill greedily in a stable order.\n\nVerified: desktop 1200×850 → all 178 labels, 0 overlaps, 42px gap, gate PASS; mobile 430×900 → 131 names shown, 0 drawn-label overlaps (was 180+).\n\n▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide https://stellate.app/?genre=jungle&seed=3308&path=1718.20504,1737.20537,1699.20537&xdur=13.122\n\n1e0e2c3 https://github.com/aboard-io/stellate/commit/1e0e2c3c88e8059eb36b94a8dd0e8c2312fa889c",
   "date_published": "2026-07-09T02:44:37.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "drums"
   ]
  },
  {
   "id": "fc567a4b60c83c4b15b10ab14c67f2df281e08a0",
   "url": "https://stellate.app/?genre=prelude&seed=7835&path=896.90,196.90&xdur=1.071",
   "external_url": "https://github.com/aboard-io/stellate/commit/fc567a4b60c83c4b15b10ab14c67f2df281e08a0",
   "title": "Star map: bake the genre layout so boot doesn't run the O(N²) relaxation",
   "summary": "The spread commit pushed computeGenreLayout to N*40 iterations over an all-pairs O(N²) inner loop; at 178 genres that's ~112M pair-evaluations run synchronously at boot before first paint — a multi-second stall (Paul: \"load is very slow\").",
   "content_html": "<p>The spread commit pushed computeGenreLayout to N*40 iterations over an all-pairs O(N²) inner loop; at 178 genres that's ~112M pair-evaluations run synchronously at boot before first paint — a multi-second stall (Paul: &quot;load is very slow&quot;).</p>\n<ul><li>Bake it: POS in world.js now ships the full relaxed 178-genre layout, precomputed once at a 1200×850 reference viewport.</li><li>Subtlety fixed along the way: the relaxation's normalize keys off the SEED's median spacing, which is much denser once every genre is seeded</li><li>The spread itself is unchanged: 42px min label gap, 0 overlaps, clusters intact (fugue next to prelude), min pairwise 194 &gt; floor.</li></ul>\n<p><em>Verified:</em> 178/178 placed, 0 overlaps, 42.2px gap, D2e PASS.</p>\n<p><a href=\"https://stellate.app/?genre=prelude&amp;seed=7835&amp;path=896.90,196.90&amp;xdur=1.071\">▶ Play it: The Turning Stair → The Patient Chase — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/fc567a4b60c83c4b15b10ab14c67f2df281e08a0\">fc567a4</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The spread commit pushed computeGenreLayout to N*40 iterations over an all-pairs O(N²) inner loop; at 178 genres that's ~112M pair-evaluations run synchronously at boot before first paint — a multi-second stall (Paul: \"load is very slow\").\n\n• Bake it: POS in world.js now ships the full relaxed 178-genre layout, precomputed once at a 1200×850 reference viewport.\n\n• Subtlety fixed along the way: the relaxation's normalize keys off the SEED's median spacing, which is much denser once every genre is seeded\n\n• The spread itself is unchanged: 42px min label gap, 0 overlaps, clusters intact (fugue next to prelude), min pairwise 194 > floor.\n\nVerified: 178/178 placed, 0 overlaps, 42.2px gap, D2e PASS.\n\n▶ Play it: The Turning Stair → The Patient Chase — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=prelude&seed=7835&path=896.90,196.90&xdur=1.071\n\nfc567a4 https://github.com/aboard-io/stellate/commit/fc567a4b60c83c4b15b10ab14c67f2df281e08a0",
   "date_published": "2026-07-09T02:18:04.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "prelude",
    "fugue",
    "mix"
   ]
  },
  {
   "id": "98955686829289314383d50cc3fc16fde2b4b5aa",
   "url": "https://stellate.app/?genre=citypop&seed=9846&path=1530.6221,586.10667,1376.19565&xdur=0.056",
   "external_url": "https://github.com/aboard-io/stellate/commit/98955686829289314383d50cc3fc16fde2b4b5aa",
   "title": "Star map: spread genres ~2.2x farther apart (fix 178-genre crowding)",
   "summary": "Paul: \"spread the vectors out farther, they're overlapping, it's easy to zoom, we have room.\" At 178 genres the layout only cleared labels by a hair (~19px min gap at default zoom), which reads as overlapping/crowded.",
   "content_html": "<p>Paul: &quot;spread the vectors out farther, they're overlapping, it's easy to zoom, we have room.&quot; At 178 genres the layout only cleared labels by a hair (~19px min gap at default zoom), which reads as overlapping/crowded.</p>\n<ul><li>Widened the relaxation's separation targets: MIN_DOT 52-&gt;72 (guaranteed dot spacing at default zoom) plus a per-label SEP moat, and strengthened the similarity spring (0.012-&gt;0.014, active longer) so clusters…</li><li>Note for the record: the layout measures a monospace font for determinism, but labels render in VT323, which measures ~0.66x as wide</li></ul>\n<p><em>Verified:</em> 178/178 placed, 0 overlaps, 42px min gap, D2e clusters intact, PASS.</p>\n<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=9846&amp;path=1530.6221,586.10667,1376.19565&amp;xdur=0.056\">▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/98955686829289314383d50cc3fc16fde2b4b5aa\">9895568</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"spread the vectors out farther, they're overlapping, it's easy to zoom, we have room.\" At 178 genres the layout only cleared labels by a hair (~19px min gap at default zoom), which reads as overlapping/crowded.\n\n• Widened the relaxation's separation targets: MIN_DOT 52->72 (guaranteed dot spacing at default zoom) plus a per-label SEP moat, and strengthened the similarity spring (0.012->0.014, active longer) so clusters…\n\n• Note for the record: the layout measures a monospace font for determinism, but labels render in VT323, which measures ~0.66x as wide\n\nVerified: 178/178 placed, 0 overlaps, 42px min gap, D2e clusters intact, PASS.\n\n▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix https://stellate.app/?genre=citypop&seed=9846&path=1530.6221,586.10667,1376.19565&xdur=0.056\n\n9895568 https://github.com/aboard-io/stellate/commit/98955686829289314383d50cc3fc16fde2b4b5aa",
   "date_published": "2026-07-09T01:42:00.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "downtempo",
    "dnb"
   ]
  },
  {
   "id": "572424509e8b10be98c0d5d1518a98b0ea94aeec",
   "url": "https://stellate.app/?genre=transitwave&seed=9384&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/572424509e8b10be98c0d5d1518a98b0ea94aeec",
   "title": "Make main csound-free: remove render.sh + royal-road.csd + the csound tooling",
   "summary": "Item 7 of the export queue. The entire csound era is preserved fully working on branch legacy-csound; main no longer carries any csound.",
   "content_html": "<p>Item 7 of the export queue. The entire csound era is preserved fully working on branch legacy-csound; main no longer carries any csound.</p>\n<ul><li>royal-road.csd — the founding score (archived; still the origin story)</li><li>tools/render.sh — the csound renderer</li><li>tools/render-sung-melody.js — csound-dependent one-off (unreferenced)</li><li>engine/faust/legacy-tools/ — the csound A/B harness (needs csound + buildCsd, both gone from main; its results live on in docs/history/ab-report.md, and the harness is recoverable from git history)</li></ul>\n<p><em>Verified:</em> matrix 178/178, validate --quick PASS, engine ALL PASS.</p>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=9384&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/572424509e8b10be98c0d5d1518a98b0ea94aeec\">5724245</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Item 7 of the export queue. The entire csound era is preserved fully working on branch legacy-csound; main no longer carries any csound.\n\n• royal-road.csd — the founding score (archived; still the origin story)\n\n• tools/render.sh — the csound renderer\n\n• tools/render-sung-melody.js — csound-dependent one-off (unreferenced)\n\n• engine/faust/legacy-tools/ — the csound A/B harness (needs csound + buildCsd, both gone from main; its results live on in docs/history/ab-report.md, and the harness is recoverable from git history)\n\nVerified: matrix 178/178, validate --quick PASS, engine ALL PASS.\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=9384&path=749.12536,768.12569,730.12569&xdur=13.122\n\n5724245 https://github.com/aboard-io/stellate/commit/572424509e8b10be98c0d5d1518a98b0ea94aeec",
   "date_published": "2026-07-09T01:17:20.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "8fb45e056d0454d1ecd6b68a3ae7008f14f13f77",
   "url": "https://stellate.app/?genre=citypop&seed=7437&path=1530.6221,586.10667,1376.19565&xdur=0.056",
   "external_url": "https://github.com/aboard-io/stellate/commit/8fb45e056d0454d1ecd6b68a3ae7008f14f13f77",
   "title": "Star map: scale layout iterations with genre count (fix dense-map label overlap)",
   "summary": "computeGenreLayout's overlap relaxation self-normalizes its bounds every pass (spread apart -> world grows -> screen scale shrinks -> labels re-shrink), so it converges asymptotically.",
   "content_html": "<p>computeGenreLayout's overlap relaxation self-normalizes its bounds every pass (spread apart -&gt; world grows -&gt; screen scale shrinks -&gt; labels re-shrink), so it converges asymptotically.</p>\n<ul><li>Result: 178/178 placed, 0 label overlaps, min gap 19.2px, explorer-ui gate PASS. Deterministic (no randomness); sub-second at boot; maps under 60 genres unchanged.</li></ul>\n<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=7437&amp;path=1530.6221,586.10667,1376.19565&amp;xdur=0.056\">▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/8fb45e056d0454d1ecd6b68a3ae7008f14f13f77\">8fb45e0</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "computeGenreLayout's overlap relaxation self-normalizes its bounds every pass (spread apart -> world grows -> screen scale shrinks -> labels re-shrink), so it converges asymptotically.\n\n• Result: 178/178 placed, 0 label overlaps, min gap 19.2px, explorer-ui gate PASS. Deterministic (no randomness); sub-second at boot; maps under 60 genres unchanged.\n\n▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix https://stellate.app/?genre=citypop&seed=7437&path=1530.6221,586.10667,1376.19565&xdur=0.056\n\n8fb45e0 https://github.com/aboard-io/stellate/commit/8fb45e056d0454d1ecd6b68a3ae7008f14f13f77",
   "date_published": "2026-07-09T01:08:10.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "downtempo",
    "dnb"
   ]
  },
  {
   "id": "138c41c0e93e9ec6fa112f79041061275d32c5cb",
   "url": "https://stellate.app/?genre=house&seed=8976&path=1101.20850,1030.7218,1491.17202&xdur=0.055",
   "external_url": "https://github.com/aboard-io/stellate/commit/138c41c0e93e9ec6fa112f79041061275d32c5cb",
   "title": "Flood the empty vector space: 118 -> 178 (60 root-unique invented genres)",
   "summary": "Runs invent-genres.js sequentially across seeds, each --write re-embedding the grown committed set so gaps are found in what's actually left. Stops when the naming-root pool saturates (three near-dry seeds), the honest ceiling: 60 accepted, then no fresh gap could earn a root nobody else holds.",
   "content_html": "<p>Runs invent-genres.js sequentially across seeds, each --write re-embedding the grown committed set so gaps are found in what's actually left. Stops when the naming-root pool saturates (three near-dry seeds), the honest ceiling: 60 accepted, then no fresh gap could earn a root nobody else holds.</p>\n<ul><li>Root-uniqueness guard (the taste fix): an unbounded flood otherwise decays into name-mush -- four vendingmachine* genres, magmastrut+magmastomp -- because the vectors stay verifier-distinct long after the…</li><li>Every invented genre still earns its own verifier diagonal without knocking a neighbor off theirs (per-seed forward+backward gate across seeds 1-5), and the names correlate to character (tundradoom = cold sub…</li></ul>\n<p><em>Verified:</em> matrix 178/178 diagonal-dominant (zero off-diagonal), validate --quick PASS (178 anchors, 0 dangling), determinism byte-stable, no duplicate keys, renders non-silent with names correlating.</p>\n<p><a href=\"https://stellate.app/?genre=house&amp;seed=8976&amp;path=1101.20850,1030.7218,1491.17202&amp;xdur=0.055\">▶ Play it: Congregation Furnace → Downbeat Notary → Basalt Swagger — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/138c41c0e93e9ec6fa112f79041061275d32c5cb\">138c41c</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Runs invent-genres.js sequentially across seeds, each --write re-embedding the grown committed set so gaps are found in what's actually left. Stops when the naming-root pool saturates (three near-dry seeds), the honest ceiling: 60 accepted, then no fresh gap could earn a root nobody else holds.\n\n• Root-uniqueness guard (the taste fix): an unbounded flood otherwise decays into name-mush -- four vendingmachine* genres, magmastrut+magmastomp -- because the vectors stay verifier-distinct long after the…\n\n• Every invented genre still earns its own verifier diagonal without knocking a neighbor off theirs (per-seed forward+backward gate across seeds 1-5), and the names correlate to character (tundradoom = cold sub…\n\nVerified: matrix 178/178 diagonal-dominant (zero off-diagonal), validate --quick PASS (178 anchors, 0 dangling), determinism byte-stable, no duplicate keys, renders non-silent with names correlating.\n\n▶ Play it: Congregation Furnace → Downbeat Notary → Basalt Swagger — the three genres this change names, as one path https://stellate.app/?genre=house&seed=8976&path=1101.20850,1030.7218,1491.17202&xdur=0.055\n\n138c41c https://github.com/aboard-io/stellate/commit/138c41c0e93e9ec6fa112f79041061275d32c5cb",
   "date_published": "2026-07-09T01:04:46.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "house",
    "funk",
    "magmastrut",
    "embed"
   ]
  },
  {
   "id": "6cdef274cfabada3d92530d23126c721de6cfaf1",
   "url": "https://stellate.app/?genre=picnicswing&seed=1388&path=1234.1889,987.5821,361.5351&xdur=0.181",
   "external_url": "https://github.com/aboard-io/stellate/commit/6cdef274cfabada3d92530d23126c721de6cfaf1",
   "title": "Auto-invent 8 genres in empty vector regions: 110 -> 118",
   "summary": "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…",
   "content_html": "<p>tools/invent-genres.js: deterministic gap-finder -&gt; inventor -&gt; algorithmic namer -&gt; 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…</p>\n<ul><li>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…</li><li>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.</li></ul>\n<p><em>Verified:</em> matrix 118/118 diagonal-dominant (zero off-diagonal), validate --quick PASS, engine smoke ALL PASS, 6 renders non-silent with names correlating.</p>\n<p><a href=\"https://stellate.app/?genre=picnicswing&amp;seed=1388&amp;path=1234.1889,987.5821,361.5351&amp;xdur=0.181\">▶ Play it: Gingham Event Horizon → Prize Inside → Rosin Parallax — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/6cdef274cfabada3d92530d23126c721de6cfaf1\">6cdef27</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "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…\n\n• 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…\n\n• 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.\n\nVerified: matrix 118/118 diagonal-dominant (zero off-diagonal), validate --quick PASS, engine smoke ALL PASS, 6 renders non-silent with names correlating.\n\n▶ 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\n\n6cdef27 https://github.com/aboard-io/stellate/commit/6cdef274cfabada3d92530d23126c721de6cfaf1",
   "date_published": "2026-07-09T00:43:29.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "picnicswing",
    "cerealboxwave",
    "rosinamblelilt",
    "harmony"
   ]
  },
  {
   "id": "a6415cef7061b934e375487ed007c5a51ae40721",
   "url": "https://stellate.app/?genre=jazz&seed=4487&path=292.16891,1101.20850,1361.12568&xdur=0.089",
   "external_url": "https://github.com/aboard-io/stellate/commit/a6415cef7061b934e375487ed007c5a51ae40721",
   "title": "Percussion: play the unused hits + the full GM hand-perc bank, per-genre lane",
   "summary": "The drum engine only ever triggered kick/snare/hat. Now:",
   "content_html": "<p>The drum engine only ever triggered kick/snare/hat. Now:</p>\n<ul><li>Wired the hits already sampled in every kit but never played: clap, crash, ride, rim — added to DRUMKITS + both kit builders + new state-engine voices (sampled from the kit, synth fallback).</li><li>Extracted the wider GM percussion (sf2.js new `percbank` command, bank-128): all 24 hits clean — sideStick/clap/tambourine/cowbell/vibraslap/bongos/congas/…</li><li>Per-genre PERC lane (~35 genres, PERC_STYLES + a beat-gated perc pass in buildEvents on its own rng stream): shaker+congas+agogo for afro/latin/tropical, rim+shaker+clave for bossa/tango, ride+rim for…</li><li>Perc is timbral color, kept verifier-INVISIBLE (matrix measures core kit only) — so matrix stays 110/110 byte-unchanged, zero anchor retuning.</li></ul>\n<p><em>Verified:</em> matrix 110/110, validate, engine, segment-parity BYTE-EQUAL (house claps + jazz ride/rim), all-sampled, wavout-seam, live-resilience; perc-heavy peaks -2.1 to -4.4 dBFS (no clip).</p>\n<p><a href=\"https://stellate.app/?genre=jazz&amp;seed=4487&amp;path=292.16891,1101.20850,1361.12568&amp;xdur=0.089\">▶ Play it: Smoke Arithmetic → Congregation Furnace → Mirrorball Panopticon — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/a6415cef7061b934e375487ed007c5a51ae40721\">a6415ce</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The drum engine only ever triggered kick/snare/hat. Now:\n\n• Wired the hits already sampled in every kit but never played: clap, crash, ride, rim — added to DRUMKITS + both kit builders + new state-engine voices (sampled from the kit, synth fallback).\n\n• Extracted the wider GM percussion (sf2.js new `percbank` command, bank-128): all 24 hits clean — sideStick/clap/tambourine/cowbell/vibraslap/bongos/congas/…\n\n• Per-genre PERC lane (~35 genres, PERC_STYLES + a beat-gated perc pass in buildEvents on its own rng stream): shaker+congas+agogo for afro/latin/tropical, rim+shaker+clave for bossa/tango, ride+rim for…\n\n• Perc is timbral color, kept verifier-INVISIBLE (matrix measures core kit only) — so matrix stays 110/110 byte-unchanged, zero anchor retuning.\n\nVerified: matrix 110/110, validate, engine, segment-parity BYTE-EQUAL (house claps + jazz ride/rim), all-sampled, wavout-seam, live-resilience; perc-heavy peaks -2.1 to -4.4 dBFS (no clip).\n\n▶ Play it: Smoke Arithmetic → Congregation Furnace → Mirrorball Panopticon — the three genres this change names, as one path https://stellate.app/?genre=jazz&seed=4487&path=292.16891,1101.20850,1361.12568&xdur=0.089\n\na6415ce https://github.com/aboard-io/stellate/commit/a6415cef7061b934e375487ed007c5a51ae40721",
   "date_published": "2026-07-09T00:07:22.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jazz",
    "house",
    "disco",
    "found"
   ]
  },
  {
   "id": "65a72ec65a4a0b58fa2f8aa75d070596823d8450",
   "url": "https://stellate.app/?genre=citypop&seed=1302&path=1530.6221,586.10667,1376.19565&xdur=0.056",
   "external_url": "https://github.com/aboard-io/stellate/commit/65a72ec65a4a0b58fa2f8aa75d070596823d8450",
   "title": "Timeline: effects beneath each voice's roll, lanes evenly spaced",
   "summary": "The fx line was a third flex sibling of the piano-roll, so it sat BESIDE the roll and squished the grid (Paul: \"they're messing up the grid\").",
   "content_html": "<p>The fx line was a third flex sibling of the piano-roll, so it sat BESIDE the roll and squished the grid (Paul: &quot;they're messing up the grid&quot;).</p>\n<p><em>Verified:</em> genre-viz (full fx line beneath, no stacked pills) + explorer-ui green.</p>\n<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=1302&amp;path=1530.6221,586.10667,1376.19565&amp;xdur=0.056\">▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/65a72ec65a4a0b58fa2f8aa75d070596823d8450\">65a72ec</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The fx line was a third flex sibling of the piano-roll, so it sat BESIDE the roll and squished the grid (Paul: \"they're messing up the grid\").\n\nVerified: genre-viz (full fx line beneath, no stacked pills) + explorer-ui green.\n\n▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix https://stellate.app/?genre=citypop&seed=1302&path=1530.6221,586.10667,1376.19565&xdur=0.056\n\n65a72ec https://github.com/aboard-io/stellate/commit/65a72ec65a4a0b58fa2f8aa75d070596823d8450",
   "date_published": "2026-07-08T23:24:58.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "downtempo",
    "dnb"
   ]
  },
  {
   "id": "a13da6b0d0e6b4af604893ceae6fce640e12921b",
   "url": "https://stellate.app/?genre=synthwave&seed=7144&path=859.9909,878.9942,840.9942&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/a13da6b0d0e6b4af604893ceae6fce640e12921b",
   "title": "Reorg stage 2: split index.html into app/ ES modules + app.css (build-free)",
   "summary": "index.html 2106 → 55 lines: <head> links app/app.css, <body> is the DOM skeleton + the engine/ classic <script src> tags (order preserved — they define the window.* globals) + one <script type=\"module\" src=\"app/main.js\">.",
   "content_html": "<p>index.html 2106 → 55 lines: &lt;head&gt; links app/app.css, &lt;body&gt; is the DOM skeleton + the engine/ classic &lt;script src&gt; tags (order preserved — they define the window.* globals) + one &lt;script type=&quot;module&quot; src=&quot;app/main.js&quot;&gt;.</p>\n<ul><li>app/ modules, shared state threaded via imports (state.js), not accidental globals: state (store + html/render + engine aliases), world (POS/bounds), targeting (weightsAt/retarget/glide/travel), starmap (SVG…</li><li>Three load-mechanics fixes the external CSS/modules needed: probe-harness serves .css with the right MIME (nginx already does); main.js gates boot on the stylesheet applying</li></ul>\n<p><em>Verified:</em> explorer-ui, genre-viz, demo-layer, live-test-run, wavout-test-run, live-resilience, bg-survival all green; live deploy serves app/main.js + app/app.css (200) and boots the modular page.</p>\n<p><a href=\"https://stellate.app/?genre=synthwave&amp;seed=7144&amp;path=859.9909,878.9942,840.9942&amp;xdur=13.122\">▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/a13da6b0d0e6b4af604893ceae6fce640e12921b\">a13da6b</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "index.html 2106 → 55 lines: <head> links app/app.css, <body> is the DOM skeleton + the engine/ classic <script src> tags (order preserved — they define the window.* globals) + one <script type=\"module\" src=\"app/main.js\">.\n\n• app/ modules, shared state threaded via imports (state.js), not accidental globals: state (store + html/render + engine aliases), world (POS/bounds), targeting (weightsAt/retarget/glide/travel), starmap (SVG…\n\n• Three load-mechanics fixes the external CSS/modules needed: probe-harness serves .css with the right MIME (nginx already does); main.js gates boot on the stylesheet applying\n\nVerified: explorer-ui, genre-viz, demo-layer, live-test-run, wavout-test-run, live-resilience, bg-survival all green; live deploy serves app/main.js + app/app.css (200) and boots the modular page.\n\n▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration https://stellate.app/?genre=synthwave&seed=7144&path=859.9909,878.9942,840.9942&xdur=13.122\n\na13da6b https://github.com/aboard-io/stellate/commit/a13da6b0d0e6b4af604893ceae6fce640e12921b",
   "date_published": "2026-07-08T23:15:33.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "synthwave",
    "synth"
   ]
  },
  {
   "id": "873f44fb5c56bcf019bf586080ba9f7133a4686f",
   "url": "https://stellate.app/?genre=trap&seed=9587&path=1504.8922,1523.8955,1485.8955&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/873f44fb5c56bcf019bf586080ba9f7133a4686f",
   "title": "Reorg into app/engine/tools/test/docs (build-free) — stage 1: folders + repaths",
   "summary": "Full folder layout (Paul's choice), no framework/bundler. 344 git-mv moves (history preserved):",
   "content_html": "<p>Full folder layout (Paul's choice), no framework/bundler. 344 git-mv moves (history preserved):</p>\n<ul><li>index.html at root (was explorer.html) — deploy URL /projects/stellate/ unchanged; nginx index flipped explorer.html -&gt; index.html.</li><li>engine/ — genre-kernel/csd-engine/genre-verifier/validate-genres/song-verifier/ midi-export/namebank/video-layer/demo-layer + faust/ moved INTACT as engine/faust/ (keeps its dense internal relative requires +…</li><li>tools/ — Node CLIs + fetch/render shell scripts.</li><li>docs/ — GENRE-SPACE, FAUST-PORT (join docs/history/). Every require / &lt;script src&gt; / fetch / SITE-root derivation / .gitignore / serve.sh / verify.sh path rewritten.</li></ul>\n<p><em>Verified:</em> every gate/harness/probe + live-test.html. Verified: all gates green from new homes (matrix 110/110, engine, parity, all-sampled, seam, + headless…</p>\n<p><a href=\"https://stellate.app/?genre=trap&amp;seed=9587&amp;path=1504.8922,1523.8955,1485.8955&amp;xdur=13.122\">▶ Play it: Locust Arithmetic — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/873f44fb5c56bcf019bf586080ba9f7133a4686f\">873f44f</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Full folder layout (Paul's choice), no framework/bundler. 344 git-mv moves (history preserved):\n\n• index.html at root (was explorer.html) — deploy URL /projects/stellate/ unchanged; nginx index flipped explorer.html -> index.html.\n\n• engine/ — genre-kernel/csd-engine/genre-verifier/validate-genres/song-verifier/ midi-export/namebank/video-layer/demo-layer + faust/ moved INTACT as engine/faust/ (keeps its dense internal relative requires +…\n\n• tools/ — Node CLIs + fetch/render shell scripts.\n\n• docs/ — GENRE-SPACE, FAUST-PORT (join docs/history/). Every require / <script src> / fetch / SITE-root derivation / .gitignore / serve.sh / verify.sh path rewritten.\n\nVerified: every gate/harness/probe + live-test.html. Verified: all gates green from new homes (matrix 110/110, engine, parity, all-sampled, seam, + headless…\n\n▶ Play it: Locust Arithmetic — parked on the genre this change names https://stellate.app/?genre=trap&seed=9587&path=1504.8922,1523.8955,1485.8955&xdur=13.122\n\n873f44f https://github.com/aboard-io/stellate/commit/873f44fb5c56bcf019bf586080ba9f7133a4686f",
   "date_published": "2026-07-08T22:15:12.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "trap",
    "found"
   ]
  },
  {
   "id": "4deff2850c4e58354839af4b7d7db64a882e0bb0",
   "url": "https://stellate.app/?genre=budstep&seed=6821&path=1089.13532,1379.18248,1809.17533&xdur=0.156",
   "external_url": "https://github.com/aboard-io/stellate/commit/4deff2850c4e58354839af4b7d7db64a882e0bb0",
   "title": "Bold effects: unbreak sampler inserts, huge metal, SUNN-scale budstep, clear speech",
   "summary": "The real reason effects were timid: aggressive genres DECLARE distortion on their guitar/bass, but those voices resolve to sampled instruments, and two places silently dropped every insert from a sampler voice (genre-kernel insOk returned false for model===\"sampler\"",
   "content_html": "<p>The real reason effects were timid: aggressive genres DECLARE distortion on their guitar/bass, but those voices resolve to sampled instruments, and two places silently dropped every insert from a sampler voice (genre-kernel insOk returned false for model===&quot;sampler&quot;</p>\n<ul><li>heavymetal: guitar + power-chord pad wall + bass all distort-driven, fdn room reverb (deep), padDouble octave-below wall-of-sound, levels/grit up.</li><li>budstep: new csd-engine &quot;sludge&quot; melody pattern (doubled octave power CHORDS, slow relentless) + &quot;sludge&quot; bass (root+octave, big), greyhole cathedral verb — SUNN O)))/SLEEP scale.</li><li>speech intelligibility: SPEECH_RATE_CAP 0.82 on every speech source (was up to 1.42) + vocoder carrier dropped an octave into the formant band (robot_choir.dsp rebuilt)</li><li>aggressive-family pools enriched (doomdrone/sludgemetal/industrialmetal/dubstep/ gabber): distort, greyhole/fdn rooms, granular on dubstep leads.</li></ul>\n<p><a href=\"https://stellate.app/?genre=budstep&amp;seed=6821&amp;path=1089.13532,1379.18248,1809.17533&amp;xdur=0.156\">▶ Play it: Amen Monolith → Seismic Ultimatum → Jackhammer Communion — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/4deff2850c4e58354839af4b7d7db64a882e0bb0\">4deff28</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The real reason effects were timid: aggressive genres DECLARE distortion on their guitar/bass, but those voices resolve to sampled instruments, and two places silently dropped every insert from a sampler voice (genre-kernel insOk returned false for model===\"sampler\"\n\n• heavymetal: guitar + power-chord pad wall + bass all distort-driven, fdn room reverb (deep), padDouble octave-below wall-of-sound, levels/grit up.\n\n• budstep: new csd-engine \"sludge\" melody pattern (doubled octave power CHORDS, slow relentless) + \"sludge\" bass (root+octave, big), greyhole cathedral verb — SUNN O)))/SLEEP scale.\n\n• speech intelligibility: SPEECH_RATE_CAP 0.82 on every speech source (was up to 1.42) + vocoder carrier dropped an octave into the formant band (robot_choir.dsp rebuilt)\n\n• aggressive-family pools enriched (doomdrone/sludgemetal/industrialmetal/dubstep/ gabber): distort, greyhole/fdn rooms, granular on dubstep leads.\n\n▶ Play it: Amen Monolith → Seismic Ultimatum → Jackhammer Communion — the three genres this change names, as one path https://stellate.app/?genre=budstep&seed=6821&path=1089.13532,1379.18248,1809.17533&xdur=0.156\n\n4deff28 https://github.com/aboard-io/stellate/commit/4deff2850c4e58354839af4b7d7db64a882e0bb0",
   "date_published": "2026-07-08T21:33:01.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "budstep",
    "dubstep",
    "gabber",
    "voice"
   ]
  },
  {
   "id": "adffe73ab7858869867665807d06db6584bf22ee",
   "url": "https://stellate.app/?genre=bebop&seed=8242&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/adffe73ab7858869867665807d06db6584bf22ee",
   "title": "Explorer UI: wheel-zoom, reliable background alternation, effects as tiny text",
   "summary": "Desktop mouse wheel now zooms the star map toward the cursor (no ctrl needed; deltaMode-normalised). ctrl+wheel / pinch still work.",
   "content_html": "<p>Desktop mouse wheel now zooms the star map toward the cursor (no ctrl needed; deltaMode-normalised). ctrl+wheel / pinch still work.</p>\n<ul><li>Background &quot;video+demos&quot; mode actually alternates now: a wall-clock backstop (~16s) drives it whether live or idle, so it no longer depends on onBar firing and no longer imperceptibly slow.</li><li>The ⓘ timeline's effect labels were stacked lozenges that clipped to one visible; now the FULL chain renders as one tiny &quot; · &quot;-joined line under each lane (and the master line), tightening the panel.</li></ul>\n<p><em>Verified:</em> explorer-ui (adds wheel-zoom + clock-alternation + layer-tracking asserts), genre-viz (asserts the full fx line, no stacked pills).</p>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=8242&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/adffe73ab7858869867665807d06db6584bf22ee\">adffe73</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Desktop mouse wheel now zooms the star map toward the cursor (no ctrl needed; deltaMode-normalised). ctrl+wheel / pinch still work.\n\n• Background \"video+demos\" mode actually alternates now: a wall-clock backstop (~16s) drives it whether live or idle, so it no longer depends on onBar firing and no longer imperceptibly slow.\n\n• The ⓘ timeline's effect labels were stacked lozenges that clipped to one visible; now the FULL chain renders as one tiny \" · \"-joined line under each lane (and the master line), tightening the panel.\n\nVerified: explorer-ui (adds wheel-zoom + clock-alternation + layer-tracking asserts), genre-viz (asserts the full fx line, no stacked pills).\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=8242&path=694.13834,713.13867,675.13867&xdur=13.122\n\nadffe73 https://github.com/aboard-io/stellate/commit/adffe73ab7858869867665807d06db6584bf22ee",
   "date_published": "2026-07-08T20:43:10.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "3e5aa0359a66428090f00c1ee82239326e76011b",
   "url": "https://stellate.app/?genre=bigband&seed=3645&path=814.14134,833.14167,795.14167&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/3e5aa0359a66428090f00c1ee82239326e76011b",
   "title": "Tidy for export: single-page app, docs organized, dead code removed, README reset",
   "summary": "Rename fallout + pre-export cleanup:",
   "content_html": "<p>Rename fallout + pre-export cleanup:</p>\n<ul><li>Deleted the tombstone pages builder.html / play.html and the dead csound-era harnesses (faust/{index,ring-test,soak,insert-test,clicktest} + runners) and the now-orphaned faust/{bench,ring-conductor}.js</li><li>Moved the completed planning docs (WAV-FIRST, KERNEL-V4, ZERO-STATIC, NEXT, EVALUATION, VALIDATION, ab-report) to docs/history/, keeping the architecture trail out of the root.</li><li>Rewrote README.md from scratch for stellate as it is now (~110 genres, sampled-by-default + GM, per-voice Faust FX, the verifier loop, WAV-FIRST mobile, the CONSTELLATE explorer)</li><li>CLAUDE.md / serve.sh / VOICES.md / legacy-tools updated for the rename and the current layout; all doc/page references fixed.</li></ul>\n<p><a href=\"https://stellate.app/?genre=bigband&amp;seed=3645&amp;path=814.14134,833.14167,795.14167&amp;xdur=13.122\">▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/3e5aa0359a66428090f00c1ee82239326e76011b\">3e5aa03</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Rename fallout + pre-export cleanup:\n\n• Deleted the tombstone pages builder.html / play.html and the dead csound-era harnesses (faust/{index,ring-test,soak,insert-test,clicktest} + runners) and the now-orphaned faust/{bench,ring-conductor}.js\n\n• Moved the completed planning docs (WAV-FIRST, KERNEL-V4, ZERO-STATIC, NEXT, EVALUATION, VALIDATION, ab-report) to docs/history/, keeping the architecture trail out of the root.\n\n• Rewrote README.md from scratch for stellate as it is now (~110 genres, sampled-by-default + GM, per-voice Faust FX, the verifier loop, WAV-FIRST mobile, the CONSTELLATE explorer)\n\n• CLAUDE.md / serve.sh / VOICES.md / legacy-tools updated for the rename and the current layout; all doc/page references fixed.\n\n▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments https://stellate.app/?genre=bigband&seed=3645&path=814.14134,833.14167,795.14167&xdur=13.122\n\n3e5aa03 https://github.com/aboard-io/stellate/commit/3e5aa0359a66428090f00c1ee82239326e76011b",
   "date_published": "2026-07-08T20:42:53.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bigband",
    "sampler"
   ]
  },
  {
   "id": "f4ec97663b68c26f69e3587f1545d12e2fd183ea",
   "url": "https://stellate.app/?genre=vaporwave&seed=7958&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/f4ec97663b68c26f69e3587f1545d12e2fd183ea",
   "title": "Rename: vaporwave -> stellate (repo, GitHub, nginx deploy path)",
   "summary": "Project renamed to \"stellate\". Repo dir /home/ford/vaporwave -> /home/ford/stellate, GitHub ftrain/vaporwave -> ftrain/stellate, and nginx now serves aboardresearch.com/projects/stellate/ (COOP/COEP preserved); the old /projects/vaporwave/ path 301-redirects here so every prior link resolves.",
   "content_html": "<p>Project renamed to &quot;stellate&quot;. Repo dir /home/ford/vaporwave -&gt; /home/ford/stellate, GitHub ftrain/vaporwave -&gt; ftrain/stellate, and nginx now serves aboardresearch.com/projects/stellate/ (COOP/COEP preserved); the old /projects/vaporwave/ path 301-redirects here so every prior link resolves.</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=7958&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/f4ec97663b68c26f69e3587f1545d12e2fd183ea\">f4ec976</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Project renamed to \"stellate\". Repo dir /home/ford/vaporwave -> /home/ford/stellate, GitHub ftrain/vaporwave -> ftrain/stellate, and nginx now serves aboardresearch.com/projects/stellate/ (COOP/COEP preserved); the old /projects/vaporwave/ path 301-redirects here so every prior link resolves.\n\n▶ Play it: Food Court Eternity — parked on the genre this change names https://stellate.app/?genre=vaporwave&seed=7958&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\nf4ec976 https://github.com/aboard-io/stellate/commit/f4ec97663b68c26f69e3587f1545d12e2fd183ea",
   "date_published": "2026-07-08T20:15:07.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "mix"
   ]
  },
  {
   "id": "2b6e1c5d5f40d6544d32ba1eb3c0516130258f0d",
   "url": "https://stellate.app/?genre=transitwave&seed=6509&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/2b6e1c5d5f40d6544d32ba1eb3c0516130258f0d",
   "title": "The Faust insert fleet: leslie, flanger, tape delay, ringmod, granular, shimmer — and two effects per voice as the house style",
   "summary": "Six new DSP modules (all compile clean, all bit-exact bypass at mix 0): insert_leslie (dual inertial rotors, AM + doppler swirl), insert_flanger (signed-feedback swept comb), insert_delay (per-voice tempo-synced tape echo with wow",
   "content_html": "<p>Six new DSP modules (all compile clean, all bit-exact bypass at mix 0): insert_leslie (dual inertial rotors, AM + doppler swirl), insert_flanger (signed-feedback swept comb), insert_delay (per-voice tempo-synced tape echo with wow</p>\n<ul><li>Two-per-voice becomes the default: when a kernel recipe carries no explicit inserts, every voice deterministically dresses itself (pads chorus+leslie/ phaser, leads delay+chorus/flanger, organs leslie+delay…</li></ul>\n<p><em>Verified:</em> probe-inserts2 (new: bypass/nonsilence/param-sensitivity/shimmer octave partial), strip-fuzz 360 runs finite, segment-parity BYTE-EQUAL, all-sampled, engine, wavout-seam, resilience, wavout…</p>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=6509&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/2b6e1c5d5f40d6544d32ba1eb3c0516130258f0d\">2b6e1c5</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Six new DSP modules (all compile clean, all bit-exact bypass at mix 0): insert_leslie (dual inertial rotors, AM + doppler swirl), insert_flanger (signed-feedback swept comb), insert_delay (per-voice tempo-synced tape echo with wow\n\n• Two-per-voice becomes the default: when a kernel recipe carries no explicit inserts, every voice deterministically dresses itself (pads chorus+leslie/ phaser, leads delay+chorus/flanger, organs leslie+delay…\n\nVerified: probe-inserts2 (new: bypass/nonsilence/param-sensitivity/shimmer octave partial), strip-fuzz 360 runs finite, segment-parity BYTE-EQUAL, all-sampled, engine, wavout-seam, resilience, wavout…\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=6509&path=749.12536,768.12569,730.12569&xdur=13.122\n\n2b6e1c5 https://github.com/aboard-io/stellate/commit/2b6e1c5d5f40d6544d32ba1eb3c0516130258f0d",
   "date_published": "2026-07-08T19:33:33.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "891f026b9b291046fe90b6a39623d534e8c1118d",
   "url": "https://stellate.app/?genre=budstep&seed=3827&path=1089.13532,2026.9521,1618.5296&xdur=0.09",
   "external_url": "https://github.com/aboard-io/stellate/commit/891f026b9b291046fe90b6a39623d534e8c1118d",
   "title": "17 new genres: the uptempo wave + heavymetal, budstep, pixiewave (93 -> 110)",
   "summary": "Filling the canonical gaps with a strong uptempo bias (12 of 17 live at or above ~140 BPM): dnb (liquid rolling two-step), footwork (808 triplet juke), happy hardcore, hardstyle, eurodance, singeli (200+ Tanzanian hyperspeed",
   "content_html": "<p>Filling the canonical gaps with a strong uptempo bias (12 of 17 live at or above ~140 BPM): dnb (liquid rolling two-step), footwork (808 triplet juke), happy hardcore, hardstyle, eurodance, singeli (200+ Tanzanian hyperspeed</p>\n<ul><li>Every genre carries a verifier anchor fenced for mutual distinctness (the hard pairs: eurodance↔trance via the sampled M1 piano's acoustic read, the four-way acoustic-uptempo band split klezmer/ska/bluegrass…</li></ul>\n<p><em>Verified:</em> matrix 110/110, validate --quick (all hard gates), engine.test, determinism byte-stable re-renders.</p>\n<p><a href=\"https://stellate.app/?genre=budstep&amp;seed=3827&amp;path=1089.13532,2026.9521,1618.5296&amp;xdur=0.09\">▶ Play it: Amen Monolith → Chartbuster Esperanto → Centrifugal Hymnal — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/891f026b9b291046fe90b6a39623d534e8c1118d\">891f026</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Filling the canonical gaps with a strong uptempo bias (12 of 17 live at or above ~140 BPM): dnb (liquid rolling two-step), footwork (808 triplet juke), happy hardcore, hardstyle, eurodance, singeli (200+ Tanzanian hyperspeed\n\n• Every genre carries a verifier anchor fenced for mutual distinctness (the hard pairs: eurodance↔trance via the sampled M1 piano's acoustic read, the four-way acoustic-uptempo band split klezmer/ska/bluegrass…\n\nVerified: matrix 110/110, validate --quick (all hard gates), engine.test, determinism byte-stable re-renders.\n\n▶ Play it: Amen Monolith → Chartbuster Esperanto → Centrifugal Hymnal — the three genres this change names, as one path https://stellate.app/?genre=budstep&seed=3827&path=1089.13532,2026.9521,1618.5296&xdur=0.09\n\n891f026 https://github.com/aboard-io/stellate/commit/891f026b9b291046fe90b6a39623d534e8c1118d",
   "date_published": "2026-07-08T19:21:37.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "budstep",
    "eurodance",
    "bluegrass",
    "voice"
   ]
  },
  {
   "id": "9ca4c7b450b97aee4456b76eec3fad2c2d969654",
   "url": "https://stellate.app/?genre=jungle&seed=9724&path=1718.20504,1737.20537,1699.20537&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/9ca4c7b450b97aee4456b76eec3fad2c2d969654",
   "title": "Dank up the demo layer: the footage's analog stack, ported and darkened",
   "summary": "The MicroW8 canvas now wears the found-footage treatment: the same feTurbulence grain tile (slightly heavier), drifting vertical-blanking hum bars + subliminal scanlines, a VHS grade on the canvas (brightness .8, contrast 1.32, warm sepia + magenta lean",
   "content_html": "<p>The MicroW8 canvas now wears the found-footage treatment: the same feTurbulence grain tile (slightly heavier), drifting vertical-blanking hum bars + subliminal scanlines, a VHS grade on the canvas (brightness .8, contrast 1.32, warm sepia + magenta lean</p>\n<p><em>Verified:</em> demo-layer-test extended (stack present + positioned, grade applied, deterministic _burst twitches then decays, disable hides all).</p>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=9724&amp;path=1718.20504,1737.20537,1699.20537&amp;xdur=13.122\">▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/9ca4c7b450b97aee4456b76eec3fad2c2d969654\">9ca4c7b</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The MicroW8 canvas now wears the found-footage treatment: the same feTurbulence grain tile (slightly heavier), drifting vertical-blanking hum bars + subliminal scanlines, a VHS grade on the canvas (brightness .8, contrast 1.32, warm sepia + magenta lean\n\nVerified: demo-layer-test extended (stack present + positioned, grade applied, deterministic _burst twitches then decays, disable hides all).\n\n▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide https://stellate.app/?genre=jungle&seed=9724&path=1718.20504,1737.20537,1699.20537&xdur=13.122\n\n9ca4c7b https://github.com/aboard-io/stellate/commit/9ca4c7b450b97aee4456b76eec3fad2c2d969654",
   "date_published": "2026-07-08T18:45:13.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "drums"
   ]
  },
  {
   "id": "5888e2d8462539654c6293a4138090c301d4a75e",
   "url": "https://stellate.app/?genre=bebop&seed=6976&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/5888e2d8462539654c6293a4138090c301d4a75e",
   "title": "Background program: alternate video and MicroW8 demos every 8 bars",
   "summary": "The \"video\" background mode is now a PROGRAM: while live it cuts between the found-footage layer and a FRESH demo cart every 8 chord-bars (idle stays ambient video; the demoscene-only mode is unchanged).",
   "content_html": "<p>The &quot;video&quot; background mode is now a PROGRAM: while live it cuts between the found-footage layer and a FRESH demo cart every 8 chord-bars (idle stays ambient video; the demoscene-only mode is unchanged).</p>\n<p><em>Verified:</em> explorer-ui H-series — 24 unit-driven ticks flip sides exactly 3x, the cart advances each demo turn, and the enabled layer tracks the active side.</p>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=6976&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/5888e2d8462539654c6293a4138090c301d4a75e\">5888e2d</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The \"video\" background mode is now a PROGRAM: while live it cuts between the found-footage layer and a FRESH demo cart every 8 chord-bars (idle stays ambient video; the demoscene-only mode is unchanged).\n\nVerified: explorer-ui H-series — 24 unit-driven ticks flip sides exactly 3x, the cart advances each demo turn, and the enabled layer tracks the active side.\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=6976&path=694.13834,713.13867,675.13867&xdur=13.122\n\n5888e2d https://github.com/aboard-io/stellate/commit/5888e2d8462539654c6293a4138090c301d4a75e",
   "date_published": "2026-07-08T18:22:50.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "9ff93bc9c25352ede18bd622ccc308f595de7213",
   "url": "https://stellate.app/?genre=synthwave&seed=4113&path=859.9909,878.9942,840.9942&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/9ff93bc9c25352ede18bd622ccc308f595de7213",
   "title": "Instrument identity is per-song, not per-bar: pin the sampled pick to the song seed",
   "summary": "The live walk reseeds every bar (seed + serial*7919) for PATTERN variety, but that churned seed also fed the sampled-instrument pick — so every voice was silently swapping instruments EVERY BAR (pad: french_horns → synth_strings → ohh_voices → church_organ, bar to bar).",
   "content_html": "<p>The live walk reseeds every bar (seed + serial*7919) for PATTERN variety, but that churned seed also fed the sampled-instrument pick — so every voice was silently swapping instruments EVERY BAR (pad: french_horns → synth_strings → ohh_voices → church_organ, bar to bar).</p>\n<ul><li>The walk now stashes the pre-churn song seed as state.instrumentSeed (live.js makeWalk + the explorer's barVoiceEvents mirror) and forceSampled picks with it — the band stays the band for the whole song</li></ul>\n<p><em>Verified:</em> engine, all-sampled, segment-parity byte-equal, wavout-seam, matrix 93/93, validate, resilience, audit, wavout (all routes), live, genre-viz.</p>\n<p><a href=\"https://stellate.app/?genre=synthwave&amp;seed=4113&amp;path=859.9909,878.9942,840.9942&amp;xdur=13.122\">▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/9ff93bc9c25352ede18bd622ccc308f595de7213\">9ff93bc</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The live walk reseeds every bar (seed + serial*7919) for PATTERN variety, but that churned seed also fed the sampled-instrument pick — so every voice was silently swapping instruments EVERY BAR (pad: french_horns → synth_strings → ohh_voices → church_organ, bar to bar).\n\n• The walk now stashes the pre-churn song seed as state.instrumentSeed (live.js makeWalk + the explorer's barVoiceEvents mirror) and forceSampled picks with it — the band stays the band for the whole song\n\nVerified: engine, all-sampled, segment-parity byte-equal, wavout-seam, matrix 93/93, validate, resilience, audit, wavout (all routes), live, genre-viz.\n\n▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration https://stellate.app/?genre=synthwave&seed=4113&path=859.9909,878.9942,840.9942&xdur=13.122\n\n9ff93bc https://github.com/aboard-io/stellate/commit/9ff93bc9c25352ede18bd622ccc308f595de7213",
   "date_published": "2026-07-08T16:33:50.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "synthwave",
    "synth"
   ]
  },
  {
   "id": "985c247a89566f98dbb5738f73f8687b5787f076",
   "url": "https://stellate.app/?genre=bigband&seed=5482&path=814.14134,833.14167,795.14167&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/985c247a89566f98dbb5738f73f8687b5787f076",
   "title": "Per-bar decode-ahead: mid-gen instrument swaps no longer bake silent bars",
   "summary": "The device audit caught the remaining \"random mute\" exactly: a sampler→sampler instrument swap inside a gen (holdUntil churn — \"new hands on the pads\") keeps the topology sig, so there is no reopen, and only reopen decoded buffers",
   "content_html": "<p>The device audit caught the remaining &quot;random mute&quot; exactly: a sampler→sampler instrument swap inside a gen (holdUntil churn — &quot;new hands on the pads&quot;) keeps the topology sig, so there is no reopen, and only reopen decoded buffers</p>\n<ul><li>The ring path never had this because it decodes what each bar needs as it's fed. Ported: before feeding a bar, the wav pump kicks any missing zone/found PCM through the decode gate and HOLDS that bar until it…</li></ul>\n<p><em>Verified:</em> live-resilience, audit-gate, wavout (all routes), live, segment-parity byte-equal, engine.</p>\n<p><a href=\"https://stellate.app/?genre=bigband&amp;seed=5482&amp;path=814.14134,833.14167,795.14167&amp;xdur=13.122\">▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/985c247a89566f98dbb5738f73f8687b5787f076\">985c247</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The device audit caught the remaining \"random mute\" exactly: a sampler→sampler instrument swap inside a gen (holdUntil churn — \"new hands on the pads\") keeps the topology sig, so there is no reopen, and only reopen decoded buffers\n\n• The ring path never had this because it decodes what each bar needs as it's fed. Ported: before feeding a bar, the wav pump kicks any missing zone/found PCM through the decode gate and HOLDS that bar until it…\n\nVerified: live-resilience, audit-gate, wavout (all routes), live, segment-parity byte-equal, engine.\n\n▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments https://stellate.app/?genre=bigband&seed=5482&path=814.14134,833.14167,795.14167&xdur=13.122\n\n985c247 https://github.com/aboard-io/stellate/commit/985c247a89566f98dbb5738f73f8687b5787f076",
   "date_published": "2026-07-08T16:16:59.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bigband",
    "sampler"
   ]
  },
  {
   "id": "1a18501e28b17dba52908df1e8c247bdaa710978",
   "url": "https://stellate.app/?genre=bigband&seed=5990&path=814.14134,833.14167,795.14167&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/1a18501e28b17dba52908df1e8c247bdaa710978",
   "title": "Audio-truth audit: per-voice expected-vs-actual, painted red + downloadable",
   "summary": "\"Track when a node is expected to produce sound and doesn't\" (Paul) — the renderer now measures each voice's ACTUAL contribution RMS per bar as it bakes (sampler + faust units, additive meters, mix bytes untouched",
   "content_html": "<p>&quot;Track when a node is expected to produce sound and doesn't&quot; (Paul) — the renderer now measures each voice's ACTUAL contribution RMS per bar as it bakes (sampler + faust units, additive meters, mix bytes untouched</p>\n<ul><li>Hunting the &quot;random mutes&quot;: the strip-fuzz gate found a real NaN landmine — the per-note chorus delay read could wrap negative (undefined → NaN poisoning the whole bar's dry bus, silencing every voice).</li></ul>\n<p><em>Verified:</em> strip-fuzz, audit-gate (new), segment-parity byte-equal, resilience, wavout, live, genre-viz, explorer-ui, engine, matrix 93/93.</p>\n<p><a href=\"https://stellate.app/?genre=bigband&amp;seed=5990&amp;path=814.14134,833.14167,795.14167&amp;xdur=13.122\">▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/1a18501e28b17dba52908df1e8c247bdaa710978\">1a18501</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "\"Track when a node is expected to produce sound and doesn't\" (Paul) — the renderer now measures each voice's ACTUAL contribution RMS per bar as it bakes (sampler + faust units, additive meters, mix bytes untouched\n\n• Hunting the \"random mutes\": the strip-fuzz gate found a real NaN landmine — the per-note chorus delay read could wrap negative (undefined → NaN poisoning the whole bar's dry bus, silencing every voice).\n\nVerified: strip-fuzz, audit-gate (new), segment-parity byte-equal, resilience, wavout, live, genre-viz, explorer-ui, engine, matrix 93/93.\n\n▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments https://stellate.app/?genre=bigband&seed=5990&path=814.14134,833.14167,795.14167&xdur=13.122\n\n1a18501 https://github.com/aboard-io/stellate/commit/1a18501e28b17dba52908df1e8c247bdaa710978",
   "date_published": "2026-07-08T15:02:09.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bigband",
    "sampler"
   ]
  },
  {
   "id": "fd723453c2e4eb75afc093b5e18c13ad71ce6081",
   "url": "https://stellate.app/?genre=dubstep&seed=8147&path=1379.18226,1398.18259,1360.18259&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/fd723453c2e4eb75afc093b5e18c13ad71ce6081",
   "title": "MicroW8 demoscene background layer",
   "summary": "A self-contained DemoLayer module runs vendored MicroW8 (public-domain) carts on a canvas behind the star map, screen-blended with the found-video so both show through.",
   "content_html": "<p>A self-contained DemoLayer module runs vendored MicroW8 (public-domain) carts on a canvas behind the star map, screen-blended with the found-video so both show through.</p>\n<ul><li>Reacts to the music: a bar-level pulse plus per-note reactivity (DemoLayer.note) fed from the explorer's timeline — bass swells the clock, leads flash and hue- shift by pitch class, drums tick</li></ul>\n<p><em>Verified:</em> demo-layer-test (32 carts animate, note-perturbation, cycling).</p>\n<p><a href=\"https://stellate.app/?genre=dubstep&amp;seed=8147&amp;path=1379.18226,1398.18259,1360.18259&amp;xdur=13.122\">▶ Play it: Seismic Ultimatum — the genre that is mostly bass</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/fd723453c2e4eb75afc093b5e18c13ad71ce6081\">fd72345</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "A self-contained DemoLayer module runs vendored MicroW8 (public-domain) carts on a canvas behind the star map, screen-blended with the found-video so both show through.\n\n• Reacts to the music: a bar-level pulse plus per-note reactivity (DemoLayer.note) fed from the explorer's timeline — bass swells the clock, leads flash and hue- shift by pitch class, drums tick\n\nVerified: demo-layer-test (32 carts animate, note-perturbation, cycling).\n\n▶ Play it: Seismic Ultimatum — the genre that is mostly bass https://stellate.app/?genre=dubstep&seed=8147&path=1379.18226,1398.18259,1360.18259&xdur=13.122\n\nfd72345 https://github.com/aboard-io/stellate/commit/fd723453c2e4eb75afc093b5e18c13ad71ce6081",
   "date_published": "2026-07-08T05:19:30.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "dubstep",
    "bass"
   ]
  },
  {
   "id": "b94095887a7c37a0d01d26aeba1fe20b029cacbf",
   "url": "https://stellate.app/?genre=afrobeat&seed=3544&path=1237.17797,1256.17830,1218.17830&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/b94095887a7c37a0d01d26aeba1fe20b029cacbf",
   "title": "Explorer overhaul: dynamic genre layout, voice timeline, unified background chip",
   "summary": "Genre star map is now laid out DYNAMICALLY at load (deterministic force-directed relaxation with label-box repulsion) instead of a hand-tuned POS table",
   "content_html": "<p>Genre star map is now laid out DYNAMICALLY at load (deterministic force-directed relaxation with label-box repulsion) instead of a hand-tuned POS table</p>\n<ul><li>The busted mixer (its gain/mute/solo were no-ops on the WAV engine) is gone, replaced by an &quot;INSIDE THE SOUND&quot; info tool: live genre-blend, a feel radar, and a per-voice TIMELINE piano-roll showing each…</li><li>Chips slimmed (the play button was overflowing off-screen): note chip removed, video + demoscene merged into one background chip (off → video → demoscene), default off</li></ul>\n<p><em>Verified:</em> explorer-ui-test (93 stars, 0 label overlaps, loop/zoom/traveler), genre-viz-test (timeline, note-feed, mixer-gone).</p>\n<p><a href=\"https://stellate.app/?genre=afrobeat&amp;seed=3544&amp;path=1237.17797,1256.17830,1218.17830&amp;xdur=13.122\">▶ Play it: Polyrhythm Senate — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/b94095887a7c37a0d01d26aeba1fe20b029cacbf\">b940958</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Genre star map is now laid out DYNAMICALLY at load (deterministic force-directed relaxation with label-box repulsion) instead of a hand-tuned POS table\n\n• The busted mixer (its gain/mute/solo were no-ops on the WAV engine) is gone, replaced by an \"INSIDE THE SOUND\" info tool: live genre-blend, a feel radar, and a per-voice TIMELINE piano-roll showing each…\n\n• Chips slimmed (the play button was overflowing off-screen): note chip removed, video + demoscene merged into one background chip (off → video → demoscene), default off\n\nVerified: explorer-ui-test (93 stars, 0 label overlaps, loop/zoom/traveler), genre-viz-test (timeline, note-feed, mixer-gone).\n\n▶ Play it: Polyrhythm Senate — parked on the genre this change names https://stellate.app/?genre=afrobeat&seed=3544&path=1237.17797,1256.17830,1218.17830&xdur=13.122\n\nb940958 https://github.com/aboard-io/stellate/commit/b94095887a7c37a0d01d26aeba1fe20b029cacbf",
   "date_published": "2026-07-08T05:19:30.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "afrobeat",
    "melody"
   ]
  },
  {
   "id": "88f3bde12cbc3aebd7d723b38ba5e778c39e4538",
   "url": "https://stellate.app/?genre=psytrance&seed=3233&path=1691.14484,1710.14517,1672.14517&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/88f3bde12cbc3aebd7d723b38ba5e778c39e4538",
   "title": "Sampled by default: full General MIDI + fugue genre + per-voice channel strips",
   "summary": "Sampled instruments become the default sound (state.sampledOnly on by default; opts.synth / ?allSampled=0 / --synth is the escape hatch).",
   "content_html": "<p>Sampled instruments become the default sound (state.sampledOnly on by default; opts.synth / ?allSampled=0 / --synth is the escape hatch).</p>\n<ul><li>Full General MIDI extracted: faust/extract-gm.js pulls all 128 bank-0 FluidR3 presets in one parse (105 usable multi-zone), baked into the genre-kernel SAMPLERS registry (browser has no fs) and drawn from by…</li><li>New genre: fugue — steady drumless Bach counterpoint next to prelude, a running- SIXTEENTH subject with an imitative answer (new csd-engine &quot;fugue&quot; pattern), fenced off prelude on voice-count / tempo / rubato…</li><li>Per-voice channel strips on the sampled path: band-appropriate HPF/EQ/compressor + broad gentle saturation + chorus/phaser/reverb air, so the samples breathe without clipping (peaks stay &lt; -3 dBFS).</li></ul>\n<p><em>Verified:</em> matrix 93/93, validate --quick, engine.test, all-sampled-test, segment-parity. FluidR3 GM (MIT) credited in SOURCES.md.</p>\n<p><a href=\"https://stellate.app/?genre=psytrance&amp;seed=3233&amp;path=1691.14484,1710.14517,1672.14517&amp;xdur=13.122\">▶ Play it: Third Eye Turbine — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/88f3bde12cbc3aebd7d723b38ba5e778c39e4538\">88f3bde</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Sampled instruments become the default sound (state.sampledOnly on by default; opts.synth / ?allSampled=0 / --synth is the escape hatch).\n\n• Full General MIDI extracted: faust/extract-gm.js pulls all 128 bank-0 FluidR3 presets in one parse (105 usable multi-zone), baked into the genre-kernel SAMPLERS registry (browser has no fs) and drawn from by…\n\n• New genre: fugue — steady drumless Bach counterpoint next to prelude, a running- SIXTEENTH subject with an imitative answer (new csd-engine \"fugue\" pattern), fenced off prelude on voice-count / tempo / rubato…\n\n• Per-voice channel strips on the sampled path: band-appropriate HPF/EQ/compressor + broad gentle saturation + chorus/phaser/reverb air, so the samples breathe without clipping (peaks stay < -3 dBFS).\n\nVerified: matrix 93/93, validate --quick, engine.test, all-sampled-test, segment-parity. FluidR3 GM (MIT) credited in SOURCES.md.\n\n▶ Play it: Third Eye Turbine — parked on the genre this change names https://stellate.app/?genre=psytrance&seed=3233&path=1691.14484,1710.14517,1672.14517&xdur=13.122\n\n88f3bde https://github.com/aboard-io/stellate/commit/88f3bde12cbc3aebd7d723b38ba5e778c39e4538",
   "date_published": "2026-07-08T05:19:08.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "psytrance",
    "voice"
   ]
  },
  {
   "id": "9df4f9d76674ab2f3ca2ab3226720aeb7b42934c",
   "url": "https://stellate.app/?genre=spokenword&seed=1655&path=196.11721,215.11754,177.11754&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/9df4f9d76674ab2f3ca2ab3226720aeb7b42934c",
   "title": "WAV-FIRST: pocket-proof mobile audio pipeline + iOS decode resilience",
   "summary": "Mobile can't keep a live WebAudio graph alive in the background — iOS suspends it and CoreAudio loops the last buffer. So on mobile the audible path becomes a single <audio> element fed a continuous, deterministically-rendered stream: segment WAVs → MP3 → finally fMP4/AAC (ManagedMediaSource on iOS…",
   "content_html": "<p>Mobile can't keep a live WebAudio graph alive in the background — iOS suspends it and CoreAudio loops the last buffer. So on mobile the audible path becomes a single &lt;audio&gt; element fed a continuous, deterministically-rendered stream: segment WAVs → MP3 → finally fMP4/AAC (ManagedMediaSource on iOS…</p>\n<ul><li>iOS resilience: sample decodes are concurrency-capped + retried (the unbounded ~20-decode fan-out flooded iOS and stranded pitched voices), the vocoder speech carrier is non-blocking, and the producer now…</li></ul>\n<p><em>Verified:</em> wavout-test-run (all routes), wavout-seam, fmp4-test, live-resilience (decode-then-render A/B), bg-survival-run, segment-parity byte-equal. lamejs vendored under faust/vendor/ (LGPL).</p>\n<p><a href=\"https://stellate.app/?genre=spokenword&amp;seed=1655&amp;path=196.11721,215.11754,177.11754&amp;xdur=13.122\">▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/9df4f9d76674ab2f3ca2ab3226720aeb7b42934c\">9df4f9d</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Mobile can't keep a live WebAudio graph alive in the background — iOS suspends it and CoreAudio loops the last buffer. So on mobile the audible path becomes a single <audio> element fed a continuous, deterministically-rendered stream: segment WAVs → MP3 → finally fMP4/AAC (ManagedMediaSource on iOS…\n\n• iOS resilience: sample decodes are concurrency-capped + retried (the unbounded ~20-decode fan-out flooded iOS and stranded pitched voices), the vocoder speech carrier is non-blocking, and the producer now…\n\nVerified: wavout-test-run (all routes), wavout-seam, fmp4-test, live-resilience (decode-then-render A/B), bg-survival-run, segment-parity byte-equal. lamejs vendored under faust/vendor/ (LGPL).\n\n▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices https://stellate.app/?genre=spokenword&seed=1655&path=196.11721,215.11754,177.11754&xdur=13.122\n\n9df4f9d https://github.com/aboard-io/stellate/commit/9df4f9d76674ab2f3ca2ab3226720aeb7b42934c",
   "date_published": "2026-07-08T05:18:44.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "spokenword",
    "voice"
   ]
  },
  {
   "id": "b06b55fdd183788ff6dd8036a5f719484fd47c75",
   "url": "https://stellate.app/?genre=transitwave&seed=4381&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/b06b55fdd183788ff6dd8036a5f719484fd47c75",
   "title": "Cleanup: drop dead engine flags from explorer",
   "summary": "The ring-buffer engine has no stem-cache / sentinel / seam-log concept, so the ?debugSentinel, ?stems, ?stemLookahead, and ?seamLog flags (and the opts they fed exploreLive) were dead no-ops.",
   "content_html": "<p>The ring-buffer engine has no stem-cache / sentinel / seam-log concept, so the ?debugSentinel, ?stems, ?stemLookahead, and ?seamLog flags (and the opts they fed exploreLive) were dead no-ops.</p>\n<ul><li>Final verification of the whole rebuild: segment-parity byte-equal, engine.test ALL PASS, genre matrix diagonal-dominant 92/92, validate-genres --quick PASS, clicktest mode 1 clicks=0 (mode 3 clicks=0</li></ul>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=4381&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/b06b55fdd183788ff6dd8036a5f719484fd47c75\">b06b55f</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The ring-buffer engine has no stem-cache / sentinel / seam-log concept, so the ?debugSentinel, ?stems, ?stemLookahead, and ?seamLog flags (and the opts they fed exploreLive) were dead no-ops.\n\n• Final verification of the whole rebuild: segment-parity byte-equal, engine.test ALL PASS, genre matrix diagonal-dominant 92/92, validate-genres --quick PASS, clicktest mode 1 clicks=0 (mode 3 clicks=0\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=4381&path=749.12536,768.12569,730.12569&xdur=13.122\n\nb06b55f https://github.com/aboard-io/stellate/commit/b06b55fdd183788ff6dd8036a5f719484fd47c75",
   "date_published": "2026-07-07T05:49:46.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "c0f411e8c010ac2f2ba853eade361b23a81373e4",
   "url": "https://stellate.app/?genre=spokenword&seed=2840&path=196.11721,215.11754,177.11754&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/c0f411e8c010ac2f2ba853eade361b23a81373e4",
   "title": "Feed vocoder speech in live mode: fix the robot_choir hum",
   "summary": "The live conductor passed speech:null to every openLive, so the vocoder voice (robot_choir, u.vocoder) got an empty carrier and droned. Two gaps closed:",
   "content_html": "<p>The live conductor passed speech:null to every openLive, so the vocoder voice (robot_choir, u.vocoder) got an empty carrier and droned. Two gaps closed:</p>\n<ul><li>live.js: decode the speech source (vocoderSourceId, else first sp_/vx_/vox_ found source — mirrors press.js decodeInputs) once per id via FP.decodeUrlToBuffer (local cache) into a mono Float32</li><li>stream-renderer.js: the LIVE vocIns now LOOPS the carrier (modulo) so it keeps speaking past the clip length; the whole-song open() speech-tile path (parity) is untouched.</li></ul>\n<p><em>Verified:</em> segment-parity byte-equal, engine.test ALL PASS, clicktest 0 clicks. Functional (electro, vocoder lead): every openLive received a non-null ~3.2s carrier (speechOpens 3, nullOpens 0)</p>\n<p><a href=\"https://stellate.app/?genre=spokenword&amp;seed=2840&amp;path=196.11721,215.11754,177.11754&amp;xdur=13.122\">▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/c0f411e8c010ac2f2ba853eade361b23a81373e4\">c0f411e</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The live conductor passed speech:null to every openLive, so the vocoder voice (robot_choir, u.vocoder) got an empty carrier and droned. Two gaps closed:\n\n• live.js: decode the speech source (vocoderSourceId, else first sp_/vx_/vox_ found source — mirrors press.js decodeInputs) once per id via FP.decodeUrlToBuffer (local cache) into a mono Float32\n\n• stream-renderer.js: the LIVE vocIns now LOOPS the carrier (modulo) so it keeps speaking past the clip length; the whole-song open() speech-tile path (parity) is untouched.\n\nVerified: segment-parity byte-equal, engine.test ALL PASS, clicktest 0 clicks. Functional (electro, vocoder lead): every openLive received a non-null ~3.2s carrier (speechOpens 3, nullOpens 0)\n\n▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices https://stellate.app/?genre=spokenword&seed=2840&path=196.11721,215.11754,177.11754&xdur=13.122\n\nc0f411e https://github.com/aboard-io/stellate/commit/c0f411e8c010ac2f2ba853eade361b23a81373e4",
   "date_published": "2026-07-07T05:43:47.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "spokenword",
    "voice"
   ]
  },
  {
   "id": "3359b4a55df0715143152d1f5535ee9af31acf7f",
   "url": "https://stellate.app/?genre=triphop&seed=1965&path=388.8037,263.9071,859.2784&xdur=0.119",
   "external_url": "https://github.com/aboard-io/stellate/commit/3359b4a55df0715143152d1f5535ee9af31acf7f",
   "title": "Sampled drum kits: 6 real kits from FluidR3 percussion, additive",
   "summary": "The drums were \"super basic\" — three Faust synth kicks (boom/808/909) + noise snare/hat. Add an ADDITIVE sampled-drum path: real recorded kits, synth stays the default so untouched genres render byte-identically.",
   "content_html": "<p>The drums were &quot;super basic&quot; — three Faust synth kicks (boom/808/909) + noise snare/hat. Add an ADDITIVE sampled-drum path: real recorded kits, synth stays the default so untouched genres render byte-identically.</p>\n<ul><li>faust/sf2.js: new `drumkit` mode extracts GM percussion (bank 128) per-hit one-shots. fetch-found-samples.sh grows a drumkits section (FluidR3 GM/GS, MIT). 6 kits — acoustic/room/power/electronic/jazz/brush</li><li>genre-kernel.js: DRUMKITS registry (len values inline, like SAMPLERS) + drumKitSpec() resolves drums.kit -&gt; per-hit native-sampler specs on the kick/snare/hat/tom voices, riding the wavs into foundSources like…</li><li>faust/state-engine.js: voiceUnits overlays .sampler on the drum voices when a kit is set (stays drum:true/mustLive)</li><li>Rewired 10 genres for variety: acoustic-&gt;neoclassical/bossanova/blues, brush-&gt;jazz/whalejazz, room-&gt;lofi/triphop, power-&gt;citypop/disco, jazz-&gt;spacelounge/exotica.</li></ul>\n<p><em>Verified:</em> engine.test ALL PASS (default renders unchanged), segment-parity byte- equal (+ jazz_s3 sampled-kit case), matrix diagonal-dominant 92/92 (drums are matrix-invisible: same events/levels)…</p>\n<p><a href=\"https://stellate.app/?genre=triphop&amp;seed=1965&amp;path=388.8037,263.9071,859.2784&amp;xdur=0.119\">▶ Play it: Inclement Surveillance → Dust Census → Requiem Appendix — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/3359b4a55df0715143152d1f5535ee9af31acf7f\">3359b4a</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The drums were \"super basic\" — three Faust synth kicks (boom/808/909) + noise snare/hat. Add an ADDITIVE sampled-drum path: real recorded kits, synth stays the default so untouched genres render byte-identically.\n\n• faust/sf2.js: new `drumkit` mode extracts GM percussion (bank 128) per-hit one-shots. fetch-found-samples.sh grows a drumkits section (FluidR3 GM/GS, MIT). 6 kits — acoustic/room/power/electronic/jazz/brush\n\n• genre-kernel.js: DRUMKITS registry (len values inline, like SAMPLERS) + drumKitSpec() resolves drums.kit -> per-hit native-sampler specs on the kick/snare/hat/tom voices, riding the wavs into foundSources like…\n\n• faust/state-engine.js: voiceUnits overlays .sampler on the drum voices when a kit is set (stays drum:true/mustLive)\n\n• Rewired 10 genres for variety: acoustic->neoclassical/bossanova/blues, brush->jazz/whalejazz, room->lofi/triphop, power->citypop/disco, jazz->spacelounge/exotica.\n\nVerified: engine.test ALL PASS (default renders unchanged), segment-parity byte- equal (+ jazz_s3 sampled-kit case), matrix diagonal-dominant 92/92 (drums are matrix-invisible: same events/levels)…\n\n▶ Play it: Inclement Surveillance → Dust Census → Requiem Appendix — the three genres this change names, as one path https://stellate.app/?genre=triphop&seed=1965&path=388.8037,263.9071,859.2784&xdur=0.119\n\n3359b4a https://github.com/aboard-io/stellate/commit/3359b4a55df0715143152d1f5535ee9af31acf7f",
   "date_published": "2026-07-07T05:26:37.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "triphop",
    "lofi",
    "neoclassical",
    "found"
   ]
  },
  {
   "id": "731bb55f8a58276c9e095a0d43e0c8cbe9ae5f9d",
   "url": "https://stellate.app/?genre=citypop&seed=3743&path=1530.6221,1832.7062,1679.4415&xdur=0.28",
   "external_url": "https://github.com/aboard-io/stellate/commit/731bb55f8a58276c9e095a0d43e0c8cbe9ae5f9d",
   "title": "Strongly weight sampled instruments over synths in acoustic genres",
   "summary": "The genres were \"boopy\" because acoustic-leaning ones leaned on Faust synth models despite a full FluidR3 sampler already being wired. Strongly raise the sampler odds (mostly on the lead voice",
   "content_html": "<p>The genres were &quot;boopy&quot; because acoustic-leaning ones leaned on Faust synth models despite a full FluidR3 sampler already being wired. Strongly raise the sampler odds (mostly on the lead voice</p>\n<ul><li>exotica 60→80% (steel-drums/sitar/vibes/marimba), blues 50→67% (real harmonica), dub 50→75% (harmonica/trombone/clarinet), bossanova 67→100% (nylon/flute) + upright bass, afrobeat 67→100% (trumpet/sax/trombone…</li></ul>\n<p><em>Verified:</em> Matrix stays diagonal-dominant 92/92 (before and after); validate-genres --quick PASS; no genre collapsed.</p>\n<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=3743&amp;path=1530.6221,1832.7062,1679.4415&amp;xdur=0.28\">▶ Play it: Neon Fiscal Year → Parfait Cosmonaut → Food Court Eternity — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/731bb55f8a58276c9e095a0d43e0c8cbe9ae5f9d\">731bb55</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The genres were \"boopy\" because acoustic-leaning ones leaned on Faust synth models despite a full FluidR3 sampler already being wired. Strongly raise the sampler odds (mostly on the lead voice\n\n• exotica 60→80% (steel-drums/sitar/vibes/marimba), blues 50→67% (real harmonica), dub 50→75% (harmonica/trombone/clarinet), bossanova 67→100% (nylon/flute) + upright bass, afrobeat 67→100% (trumpet/sax/trombone…\n\nVerified: Matrix stays diagonal-dominant 92/92 (before and after); validate-genres --quick PASS; no genre collapsed.\n\n▶ Play it: Neon Fiscal Year → Parfait Cosmonaut → Food Court Eternity — the three genres this change names, as one path https://stellate.app/?genre=citypop&seed=3743&path=1530.6221,1832.7062,1679.4415&xdur=0.28\n\n731bb55 https://github.com/aboard-io/stellate/commit/731bb55f8a58276c9e095a0d43e0c8cbe9ae5f9d",
   "date_published": "2026-07-07T04:53:56.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "shibuyakei",
    "vaporwave",
    "voice"
   ]
  },
  {
   "id": "f8ae6ce7c80057bed411ca353064fea84f278922",
   "url": "https://stellate.app/?genre=citypop&seed=6711&path=1530.6221,586.10667,1376.19565&xdur=0.056",
   "external_url": "https://github.com/aboard-io/stellate/commit/f8ae6ce7c80057bed411ca353064fea84f278922",
   "title": "Randomize video clips: top up the genre pool from the full catalog",
   "summary": "The per-genre affine clip pool was only ~8-12 clips (GENRE_CLIPS ∪ tag matches), so the no-repeat bag recycled the same handful every 8 bars while ~220 of the 231 cached clips were never seen",
   "content_html": "<p>The per-genre affine clip pool was only ~8-12 clips (GENRE_CLIPS ∪ tag matches), so the no-repeat bag recycled the same handful every 8 bars while ~220 of the 231 cached clips were never seen</p>\n<p><em>Verified:</em> headless: pool 61 clips, 59/60 draws distinct, 0 immediate repeats.</p>\n<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=6711&amp;path=1530.6221,586.10667,1376.19565&amp;xdur=0.056\">▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/f8ae6ce7c80057bed411ca353064fea84f278922\">f8ae6ce</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The per-genre affine clip pool was only ~8-12 clips (GENRE_CLIPS ∪ tag matches), so the no-repeat bag recycled the same handful every 8 bars while ~220 of the 231 cached clips were never seen\n\nVerified: headless: pool 61 clips, 59/60 draws distinct, 0 immediate repeats.\n\n▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix https://stellate.app/?genre=citypop&seed=6711&path=1530.6221,586.10667,1376.19565&xdur=0.056\n\nf8ae6ce https://github.com/aboard-io/stellate/commit/f8ae6ce7c80057bed411ca353064fea84f278922",
   "date_published": "2026-07-07T04:47:38.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "downtempo",
    "dnb"
   ]
  },
  {
   "id": "f94985867226579bd1eb0f6186c70c18124fdb7f",
   "url": "https://stellate.app/?genre=vaporwave&seed=1094&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/f94985867226579bd1eb0f6186c70c18124fdb7f",
   "title": "Fix iOS background double-audio: pause the media-element route on handoff",
   "summary": "After the background-WAV handoff landed, backgrounding on mobile played BOTH the WAV (good — music continues) AND a looping chunk. The chunk was the media- element route's <audio>: it plays the live MediaStream, and when iOS suspends the ctx it loops that stream's last buffer.",
   "content_html": "<p>After the background-WAV handoff landed, backgrounding on mobile played BOTH the WAV (good — music continues) AND a looping chunk. The chunk was the media- element route's &lt;audio&gt;: it plays the live MediaStream, and when iOS suspends the ctx it loops that stream's last buffer.</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=1094&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — the brightest, most processed corner of the space</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/f94985867226579bd1eb0f6186c70c18124fdb7f\">f949858</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "After the background-WAV handoff landed, backgrounding on mobile played BOTH the WAV (good — music continues) AND a looping chunk. The chunk was the media- element route's <audio>: it plays the live MediaStream, and when iOS suspends the ctx it loops that stream's last buffer.\n\n▶ Play it: Food Court Eternity — the brightest, most processed corner of the space https://stellate.app/?genre=vaporwave&seed=1094&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\nf949858 https://github.com/aboard-io/stellate/commit/f94985867226579bd1eb0f6186c70c18124fdb7f",
   "date_published": "2026-07-07T04:46:44.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "mix"
   ]
  },
  {
   "id": "8c88b3097e72380e8011521c0381af7099645de1",
   "url": "https://stellate.app/?genre=vaporwave&seed=3969&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/8c88b3097e72380e8011521c0381af7099645de1",
   "title": "Background-WAV handoff: keep music playing on iOS background",
   "summary": "iOS Safari suspends the AudioContext when the page is hidden, so the ring engine can't play in the background — the old behavior was mute-on-hidden (clean silence, resume on return).",
   "content_html": "<p>iOS Safari suspends the AudioContext when the page is hidden, so the ring engine can't play in the background — the old behavior was mute-on-hidden (clean silence, resume on return).</p>\n<ul><li>A third stream-worker renders a deterministic ~32s WAV (~2.8MB) of the current genre off the audio path (press-parity open()/renderChunk), refreshed debounced on genre/topology change</li><li>On visibilitychange hidden: mute the live worklet synchronously (C_STATE=2 + master 0), then play the ready WAV blob in a pre-unlocked looping &lt;audio&gt; (silent-WAV data-URI unlock inside the play gesture so the…</li><li>On visible: fade+pause the &lt;audio&gt;, resume ctx, unmute (20ms fade-in).</li><li>MediaSession metadata/playbackState for lock-screen. Whole path gated on mobile/Safari; desktop/foreground byte-identical to before.</li></ul>\n<p><em>Verified:</em> headless: valid RIFF/WAVE blob reaches a playing &lt;audio&gt;, worklet mutes/unmutes on the visibility transitions</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=3969&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — the brightest, most processed corner of the space</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/8c88b3097e72380e8011521c0381af7099645de1\">8c88b30</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "iOS Safari suspends the AudioContext when the page is hidden, so the ring engine can't play in the background — the old behavior was mute-on-hidden (clean silence, resume on return).\n\n• A third stream-worker renders a deterministic ~32s WAV (~2.8MB) of the current genre off the audio path (press-parity open()/renderChunk), refreshed debounced on genre/topology change\n\n• On visibilitychange hidden: mute the live worklet synchronously (C_STATE=2 + master 0), then play the ready WAV blob in a pre-unlocked looping <audio> (silent-WAV data-URI unlock inside the play gesture so the…\n\n• On visible: fade+pause the <audio>, resume ctx, unmute (20ms fade-in).\n\n• MediaSession metadata/playbackState for lock-screen. Whole path gated on mobile/Safari; desktop/foreground byte-identical to before.\n\nVerified: headless: valid RIFF/WAVE blob reaches a playing <audio>, worklet mutes/unmutes on the visibility transitions\n\n▶ Play it: Food Court Eternity — the brightest, most processed corner of the space https://stellate.app/?genre=vaporwave&seed=3969&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\n8c88b30 https://github.com/aboard-io/stellate/commit/8c88b3097e72380e8011521c0381af7099645de1",
   "date_published": "2026-07-07T04:35:03.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "mix"
   ]
  },
  {
   "id": "723702b5c705ebfd45cc9619d6fa3d7fd5f64f7a",
   "url": "https://stellate.app/?genre=transitwave&seed=9797&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/723702b5c705ebfd45cc9619d6fa3d7fd5f64f7a",
   "title": "Rebuild the live engine: continuous ring-buffer playback, click-free by construction",
   "summary": "The per-bar stem cache rendered byte-clean audio then chopped it into separately-scheduled AudioBufferSourceNodes whose seams could not be sample-welded — the source of the travel clicks.",
   "content_html": "<p>The per-bar stem cache rendered byte-clean audio then chopped it into separately-scheduled AudioBufferSourceNodes whose seams could not be sample-welded — the source of the travel clicks.</p>\n<ul><li>stream-renderer.js: persistent stateful FULL-MIX renderer (voices + drums + found + fx_bus reverb/delay/master). open() = whole-song, BYTE-EQUAL to press.js (segment-parity-test.js, incl.</li><li>ring-player.js: AudioWorklet reading the ring; two rings + equal-power crossfade; monotonic read cursor; underrun =&gt; silence (never loops).</li><li>stream-worker.js: browser Worker wrapping the renderer, fills the ring.</li><li>ring-conductor.js: two producers ping-ponging, bridge + crossfade state machine, rapid-change coalescing.</li></ul>\n<p><em>Verified:</em> green: segment-parity byte-equal, engine.test ALL PASS, ?clicktest 1/2/3 clickMon clicks=0 + underruns=0, real cross-genre ride 0 clicks/0 errors.</p>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=9797&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/723702b5c705ebfd45cc9619d6fa3d7fd5f64f7a\">723702b</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The per-bar stem cache rendered byte-clean audio then chopped it into separately-scheduled AudioBufferSourceNodes whose seams could not be sample-welded — the source of the travel clicks.\n\n• stream-renderer.js: persistent stateful FULL-MIX renderer (voices + drums + found + fx_bus reverb/delay/master). open() = whole-song, BYTE-EQUAL to press.js (segment-parity-test.js, incl.\n\n• ring-player.js: AudioWorklet reading the ring; two rings + equal-power crossfade; monotonic read cursor; underrun => silence (never loops).\n\n• stream-worker.js: browser Worker wrapping the renderer, fills the ring.\n\n• ring-conductor.js: two producers ping-ponging, bridge + crossfade state machine, rapid-change coalescing.\n\nVerified: green: segment-parity byte-equal, engine.test ALL PASS, ?clicktest 1/2/3 clickMon clicks=0 + underruns=0, real cross-genre ride 0 clicks/0 errors.\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=9797&path=749.12536,768.12569,730.12569&xdur=13.122\n\n723702b https://github.com/aboard-io/stellate/commit/723702b5c705ebfd45cc9619d6fa3d7fd5f64f7a",
   "date_published": "2026-07-07T04:09:59.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "1638b4ef4aa41adaf87d768483bbbd244355ff77",
   "url": "https://stellate.app/?genre=transitwave&seed=9087&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/1638b4ef4aa41adaf87d768483bbbd244355ff77",
   "title": "Drop archive.org at runtime: local-first found audio + video",
   "summary": "The live app streamed found sounds and background video straight from archive.org, which CORS-blocked and 500'd in the browser (Safari). Now the runtime prefers the local cache and never touches archive.org for anything we have on disk.",
   "content_html": "<p>The live app streamed found sounds and background video straight from archive.org, which CORS-blocked and 500'd in the browser (Safari). Now the runtime prefers the local cache and never touches archive.org for anything we have on disk.</p>\n<ul><li>found-manifest.json maps each archive source URL -&gt; local found/&lt;id&gt;.wav; found-player.decodeUrlToBuffer resolves local FIRST, archive only as a warned fallback.</li><li>video-layer srcFor prefers kind:&quot;local&quot; when the clip is cached; archive &quot;remote&quot; only for clips with no local file.</li><li>fetch-found-video-catalog.sh caches the 97 archive-only av_* cue-windows (~124MB, range-seeked) so all 231 catalog clips play local; clips.json + the mp4s stay gitignored (derived).</li></ul>\n<p><em>Verified:</em> headless: found decodes from found/*.wav, video from found/video/*, zero archive.org requests for any cached asset.</p>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=9087&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/1638b4ef4aa41adaf87d768483bbbd244355ff77\">1638b4e</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The live app streamed found sounds and background video straight from archive.org, which CORS-blocked and 500'd in the browser (Safari). Now the runtime prefers the local cache and never touches archive.org for anything we have on disk.\n\n• found-manifest.json maps each archive source URL -> local found/<id>.wav; found-player.decodeUrlToBuffer resolves local FIRST, archive only as a warned fallback.\n\n• video-layer srcFor prefers kind:\"local\" when the clip is cached; archive \"remote\" only for clips with no local file.\n\n• fetch-found-video-catalog.sh caches the 97 archive-only av_* cue-windows (~124MB, range-seeked) so all 231 catalog clips play local; clips.json + the mp4s stay gitignored (derived).\n\nVerified: headless: found decodes from found/*.wav, video from found/video/*, zero archive.org requests for any cached asset.\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=9087&path=749.12536,768.12569,730.12569&xdur=13.122\n\n1638b4e https://github.com/aboard-io/stellate/commit/1638b4ef4aa41adaf87d768483bbbd244355ff77",
   "date_published": "2026-07-07T04:09:39.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "e1f8b234243458caf182a1e313864ba7f2219058",
   "url": "https://stellate.app/?genre=synthwave&seed=4148&path=859.9909,878.9942,840.9942&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/e1f8b234243458caf182a1e313864ba7f2219058",
   "title": "Kill the stem clicks at the root: crossfade seams + eliminate resets",
   "summary": "THE root cause of the travel clicks, proven with the Faust click monitor + CPU throttling: the stem cache butt-spliced consecutive per-bar buffers, relying on the worker's persistent-processor continuity for sample-clean seams.",
   "content_html": "<p>THE root cause of the travel clicks, proven with the Faust click monitor + CPU throttling: the stem cache butt-spliced consecutive per-bar buffers, relying on the worker's persistent-processor continuity for sample-clean seams.</p>\n<ul><li>Fix 1 — equal-power crossfade at every NON-continuous seam: on a reset/vamp/fallback the incoming bar starts ~6ms early and its head fades in (cos/sin) while the outgoing tail fades out, turning the step into…</li><li>deterministic fixed path, stems-ON vs stems-OFF: hard-jumps(&gt;0.9) 0 vs 0, totals ~equal (program content only) — cache adds no clicks.</li><li>FORCED 10 resets mid-travel: 0 hard jumps, 0 near any reset — the crossfade masks the exact discontinuity that used to click.</li><li>natural resets 0/run (was 2-5). Transparency: stationary corr 0.9994-1.0. engine.test ALL PASS; stem-parity byte-exact (worker untouched); node --check clean.</li></ul>\n<p><em>Verified:</em> (playwright + 4× CPU throttle, Faust clickmon):</p>\n<p><a href=\"https://stellate.app/?genre=synthwave&amp;seed=4148&amp;path=859.9909,878.9942,840.9942&amp;xdur=13.122\">▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/e1f8b234243458caf182a1e313864ba7f2219058\">e1f8b23</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "THE root cause of the travel clicks, proven with the Faust click monitor + CPU throttling: the stem cache butt-spliced consecutive per-bar buffers, relying on the worker's persistent-processor continuity for sample-clean seams.\n\n• Fix 1 — equal-power crossfade at every NON-continuous seam: on a reset/vamp/fallback the incoming bar starts ~6ms early and its head fades in (cos/sin) while the outgoing tail fades out, turning the step into…\n\n• deterministic fixed path, stems-ON vs stems-OFF: hard-jumps(>0.9) 0 vs 0, totals ~equal (program content only) — cache adds no clicks.\n\n• FORCED 10 resets mid-travel: 0 hard jumps, 0 near any reset — the crossfade masks the exact discontinuity that used to click.\n\n• natural resets 0/run (was 2-5). Transparency: stationary corr 0.9994-1.0. engine.test ALL PASS; stem-parity byte-exact (worker untouched); node --check clean.\n\nVerified: (playwright + 4× CPU throttle, Faust clickmon):\n\n▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration https://stellate.app/?genre=synthwave&seed=4148&path=859.9909,878.9942,840.9942&xdur=13.122\n\ne1f8b23 https://github.com/aboard-io/stellate/commit/e1f8b234243458caf182a1e313864ba7f2219058",
   "date_published": "2026-07-06T21:44:35.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "synthwave",
    "synth"
   ]
  },
  {
   "id": "0ad5c9cf9d3d138de56ac3153a200045afa83107",
   "url": "https://stellate.app/?genre=vaporwave&seed=1991&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/0ad5c9cf9d3d138de56ac3153a200045afa83107",
   "title": "Faust click monitor: always-on discontinuity detector + console metadata",
   "summary": "Paul: \"filter the audio in-browser live for click detection in Faust ... log click data to console with metadata.\" faust/dsp/clickmon.dsp is a sink-style monitor (process = _ <: attach(_, metrics)",
   "content_html": "<p>Paul: &quot;filter the audio in-browser live for click detection in Faust ... log click data to console with metadata.&quot; faust/dsp/clickmon.dsp is a sink-style monitor (process = _ &lt;: attach(_, metrics)</p>\n<ul><li>live.js polls at 220ms and on any new click console.logs 🔊CLICK with full context: genre, bar, awakeCost/ceiling, loadRatio, eco, nodes, stem state (misses/vamps/fallbacks/resets/headroom), and the last 8…</li><li>Used it immediately (playwright): stationary = 0 clicks (peakjump 0.13), travel = real discontinuities (peakjump 1.357).</li></ul>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=1991&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — the brightest, most processed corner of the space</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/0ad5c9cf9d3d138de56ac3153a200045afa83107\">0ad5c9c</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"filter the audio in-browser live for click detection in Faust ... log click data to console with metadata.\" faust/dsp/clickmon.dsp is a sink-style monitor (process = _ <: attach(_, metrics)\n\n• live.js polls at 220ms and on any new click console.logs 🔊CLICK with full context: genre, bar, awakeCost/ceiling, loadRatio, eco, nodes, stem state (misses/vamps/fallbacks/resets/headroom), and the last 8…\n\n• Used it immediately (playwright): stationary = 0 clicks (peakjump 0.13), travel = real discontinuities (peakjump 1.357).\n\n▶ Play it: Food Court Eternity — the brightest, most processed corner of the space https://stellate.app/?genre=vaporwave&seed=1991&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\n0ad5c9c https://github.com/aboard-io/stellate/commit/0ad5c9cf9d3d138de56ac3153a200045afa83107",
   "date_published": "2026-07-06T19:57:48.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "mix"
   ]
  },
  {
   "id": "eaf337aefedbb245fca80eeaa6d3b102d04214c9",
   "url": "https://stellate.app/?genre=bebop&seed=7046&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/eaf337aefedbb245fca80eeaa6d3b102d04214c9",
   "title": "Stems are the DEFAULT now: always pre-render, 4-bar runway, rate shown",
   "summary": "Paul: \"always cache as default — the system has no concept of 'live' so we can always pre-render... cut it to four bars, we have plenty of headroom.\" The stopped click-hunt agent confirmed the premise: stationary genres are CLEAN (0 clicks); clicks appear during TRAVEL — i.e.",
   "content_html": "<p>Paul: &quot;always cache as default — the system has no concept of 'live' so we can always pre-render... cut it to four bars, we have plenty of headroom.&quot; The stopped click-hunt agent confirmed the premise: stationary genres are CLEAN (0 clicks); clicks appear during TRAVEL — i.e.</p>\n<ul><li>explorer: ?stems now DEFAULT ON; ?stems=0 is the escape hatch to the byte-identical classic all-live path.</li><li>live.js: the pre-render runway is denominated in CHORD BARS (opts.stemBars, default 4) and computed from live bpm each pass (stemLooka()), replacing the flat ~10s</li><li>the ⬡ readout shows the STEMS rate by default (was only when active, which now means always). CPU ⚡% already always-on.</li></ul>\n<p><em>Verified:</em> headless: default =&gt; stems active, readout &quot;⚡13% 1.00× ⬡7:8/8 STEMS 7.0×&quot;, 0 errors; ?stems=0 =&gt; stem handle null, classic path, 0 errors.</p>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=7046&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/eaf337aefedbb245fca80eeaa6d3b102d04214c9\">eaf337a</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"always cache as default — the system has no concept of 'live' so we can always pre-render... cut it to four bars, we have plenty of headroom.\" The stopped click-hunt agent confirmed the premise: stationary genres are CLEAN (0 clicks); clicks appear during TRAVEL — i.e.\n\n• explorer: ?stems now DEFAULT ON; ?stems=0 is the escape hatch to the byte-identical classic all-live path.\n\n• live.js: the pre-render runway is denominated in CHORD BARS (opts.stemBars, default 4) and computed from live bpm each pass (stemLooka()), replacing the flat ~10s\n\n• the ⬡ readout shows the STEMS rate by default (was only when active, which now means always). CPU ⚡% already always-on.\n\nVerified: headless: default => stems active, readout \"⚡13% 1.00× ⬡7:8/8 STEMS 7.0×\", 0 errors; ?stems=0 => stem handle null, classic path, 0 errors.\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=7046&path=694.13834,713.13867,675.13867&xdur=13.122\n\neaf337a https://github.com/aboard-io/stellate/commit/eaf337aefedbb245fca80eeaa6d3b102d04214c9",
   "date_published": "2026-07-06T19:31:21.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "a782d7aab92711341c9d4a9f5fdceaa950dadc52",
   "url": "https://stellate.app/?genre=synthwave&seed=3962&path=859.9909,878.9942,840.9942&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/a782d7aab92711341c9d4a9f5fdceaa950dadc52",
   "title": "⚡ CPU monitor in the ⬡ readout: DSP load as % of budget",
   "summary": "The little readout gains a ⚡NN% figure: the DSP LOAD — sum of SE.COST over the AWAKE (computing) worklets as a percent of SE.BUDGET (40 cost units = the mobile-safety ceiling, 100% = about to fall over).",
   "content_html": "<p>The little readout gains a ⚡NN% figure: the DSP LOAD — sum of SE.COST over the AWAKE (computing) worklets as a percent of SE.BUDGET (40 cost units = the mobile-safety ceiling, 100% = about to fall over).</p>\n<p><a href=\"https://stellate.app/?genre=synthwave&amp;seed=3962&amp;path=859.9909,878.9942,840.9942&amp;xdur=13.122\">▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/a782d7aab92711341c9d4a9f5fdceaa950dadc52\">a782d7a</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The little readout gains a ⚡NN% figure: the DSP LOAD — sum of SE.COST over the AWAKE (computing) worklets as a percent of SE.BUDGET (40 cost units = the mobile-safety ceiling, 100% = about to fall over).\n\n▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration https://stellate.app/?genre=synthwave&seed=3962&path=859.9909,878.9942,840.9942&xdur=13.122\n\na782d7a https://github.com/aboard-io/stellate/commit/a782d7aab92711341c9d4a9f5fdceaa950dadc52",
   "date_published": "2026-07-06T19:17:33.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "synthwave",
    "synth"
   ]
  },
  {
   "id": "14322441d44e13d4824b905355452d735fc5d6d0",
   "url": "https://stellate.app/?genre=dancepop&seed=8401&path=1829.2992,1237.17819&xdur=0.051",
   "external_url": "https://github.com/aboard-io/stellate/commit/14322441d44e13d4824b905355452d735fc5d6d0",
   "title": "Grand tour rides BETWEEN genres: waypoints at inter-genre midpoints",
   "summary": "Correcting the prior read — Paul wanted the LINES in the gaps, not the numbers moved. Reverted the numbered badges to the original centered discs, and moved the waypoints themselves: the energy-weighted walk now picks 9 genre ANCHORS and the 8 waypoints are the midpoints between consecutive anchors.",
   "content_html": "<p>Correcting the prior read — Paul wanted the LINES in the gaps, not the numbers moved. Reverted the numbered badges to the original centered discs, and moved the waypoints themselves: the energy-weighted walk now picks 9 genre ANCHORS and the 8 waypoints are the midpoints between consecutive anchors.</p>\n<p><em>Verified:</em> updated: waypoints are midpoints (no genre name), so count is wp.length (6-9 tolerance), anchors = waypoints+1 and stay unique, and the delete test identifies the removed waypoint by…</p>\n<p><a href=\"https://stellate.app/?genre=dancepop&amp;seed=8401&amp;path=1829.2992,1237.17819&amp;xdur=0.051\">▶ Play it: Confetti Escape Velocity → Polyrhythm Senate — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/14322441d44e13d4824b905355452d735fc5d6d0\">1432244</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Correcting the prior read — Paul wanted the LINES in the gaps, not the numbers moved. Reverted the numbered badges to the original centered discs, and moved the waypoints themselves: the energy-weighted walk now picks 9 genre ANCHORS and the 8 waypoints are the midpoints between consecutive anchors.\n\nVerified: updated: waypoints are midpoints (no genre name), so count is wp.length (6-9 tolerance), anchors = waypoints+1 and stay unique, and the delete test identifies the removed waypoint by…\n\n▶ Play it: Confetti Escape Velocity → Polyrhythm Senate — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=dancepop&seed=8401&path=1829.2992,1237.17819&xdur=0.051\n\n1432244 https://github.com/aboard-io/stellate/commit/14322441d44e13d4824b905355452d735fc5d6d0",
   "date_published": "2026-07-06T18:48:37.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "dancepop",
    "afrobeat",
    "synth"
   ]
  },
  {
   "id": "be2bea91148174cdf3e04cbb01b4612f58252b10",
   "url": "https://stellate.app/?genre=afrobeat&seed=5137&path=1237.17797,1256.17830,1218.17830&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/be2bea91148174cdf3e04cbb01b4612f58252b10",
   "title": "Grand tour: 8 short steps, numbers beside genres, afrobeat off the map",
   "summary": "Three map/tour changes (Paul 2026-07-06):",
   "content_html": "<p>Three map/tour changes (Paul 2026-07-06):</p>\n<ul><li>8 waypoints (down from 10-16) and each hop reaches half as far (TOUR_MAXLEG 90-&gt;45, MINLEG 24-&gt;12) — a tighter, more local journey of shorter steps.</li><li>The numbered badges no longer sit ON the genre stars. Straight leg-lines can only pass THROUGH the genres if the vertices ARE the genres, so the path still threads vertex-to-vertex through the true star…</li><li>afrobeat removed from the star map (POS) — gone from chart, tours and journeys. Kernel catalog entry kept (still renderable via CLI/press); say the word to purge it there too.</li><li>default-path gate PASS (8 stops, legs 29-43px, delete/drag/ride green, 0 errors); screenshot-verified.</li></ul>\n<p><a href=\"https://stellate.app/?genre=afrobeat&amp;seed=5137&amp;path=1237.17797,1256.17830,1218.17830&amp;xdur=13.122\">▶ Play it: Polyrhythm Senate — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/be2bea91148174cdf3e04cbb01b4612f58252b10\">be2bea9</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Three map/tour changes (Paul 2026-07-06):\n\n• 8 waypoints (down from 10-16) and each hop reaches half as far (TOUR_MAXLEG 90->45, MINLEG 24->12) — a tighter, more local journey of shorter steps.\n\n• The numbered badges no longer sit ON the genre stars. Straight leg-lines can only pass THROUGH the genres if the vertices ARE the genres, so the path still threads vertex-to-vertex through the true star…\n\n• afrobeat removed from the star map (POS) — gone from chart, tours and journeys. Kernel catalog entry kept (still renderable via CLI/press); say the word to purge it there too.\n\n• default-path gate PASS (8 stops, legs 29-43px, delete/drag/ride green, 0 errors); screenshot-verified.\n\n▶ Play it: Polyrhythm Senate — parked on the genre this change names https://stellate.app/?genre=afrobeat&seed=5137&path=1237.17797,1256.17830,1218.17830&xdur=13.122\n\nbe2bea9 https://github.com/aboard-io/stellate/commit/be2bea91148174cdf3e04cbb01b4612f58252b10",
   "date_published": "2026-07-06T18:34:58.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "afrobeat",
    "synth"
   ]
  },
  {
   "id": "8bc625f7edb4f09a6e49d7cf63ac21cfb7136016",
   "url": "https://stellate.app/?genre=citypop&seed=6871&path=1530.6199,1549.6232,1511.6232&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/8bc625f7edb4f09a6e49d7cf63ac21cfb7136016",
   "title": "ZERO-STATIC Stage 3: the 16-bar stem cache goes live, behind ?stems=1",
   "summary": "The heavy synthesis (CACHED = unitCost>=2.0: dx7 fleet, supersaw leads, juno60/vp330/hammond/... pads + their inserts) renders one chord-bar ahead in a Web Worker via the byte-exact stem-worker; bass/drums/stab/ sfx/found stay live.",
   "content_html": "<p>The heavy synthesis (CACHED = unitCost&gt;=2.0: dx7 fleet, supersaw leads, juno60/vp330/hammond/... pads + their inserts) renders one chord-bar ahead in a Web Worker via the byte-exact stem-worker; bass/drums/stab/ sfx/found stay live.</p>\n<ul><li>Deadline-miss ladder (ZERO-STATIC §4), failure = repetition never noise: a bar's stems late by t0-1s -&gt; RUNG 1 vamp the previous bar's buffers (50ms seam)</li><li><strong>DORMANT WHEN OFF</strong> — stem stays null unless opts.stems; every new branch keys off stemsOn (=stem&amp;&amp;healthy()), LOOKAHEAD stays classic, ensurePool is byte-identical without wantN.</li><li>A/B, stationary heavy genres (the target case): awake cost ~halved (citypop 9.1-&gt;4.4), underruns better (0.94-&gt;0.19), layer RMS corr 0.998, sentinel 0, worker headroom 280-650x, all 92 genres' dx7 algs in…</li></ul>\n<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=6871&amp;path=1530.6199,1549.6232,1511.6232&amp;xdur=13.122\">▶ Play it: Neon Fiscal Year — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/8bc625f7edb4f09a6e49d7cf63ac21cfb7136016\">8bc625f</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The heavy synthesis (CACHED = unitCost>=2.0: dx7 fleet, supersaw leads, juno60/vp330/hammond/... pads + their inserts) renders one chord-bar ahead in a Web Worker via the byte-exact stem-worker; bass/drums/stab/ sfx/found stay live.\n\n• Deadline-miss ladder (ZERO-STATIC §4), failure = repetition never noise: a bar's stems late by t0-1s -> RUNG 1 vamp the previous bar's buffers (50ms seam)\n\nDORMANT WHEN OFF — stem stays null unless opts.stems; every new branch keys off stemsOn (=stem&&healthy()), LOOKAHEAD stays classic, ensurePool is byte-identical without wantN.\n\n• A/B, stationary heavy genres (the target case): awake cost ~halved (citypop 9.1->4.4), underruns better (0.94->0.19), layer RMS corr 0.998, sentinel 0, worker headroom 280-650x, all 92 genres' dx7 algs in…\n\n▶ Play it: Neon Fiscal Year — parked on the genre this change names https://stellate.app/?genre=citypop&seed=6871&path=1530.6199,1549.6232,1511.6232&xdur=13.122\n\n8bc625f https://github.com/aboard-io/stellate/commit/8bc625f7edb4f09a6e49d7cf63ac21cfb7136016",
   "date_published": "2026-07-06T16:19:19.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "harmony"
   ]
  },
  {
   "id": "0f2d96d87524ca7fffb7f254653ee20f713f8d65",
   "url": "https://stellate.app/?genre=mallsoft&seed=9976&path=1873.8827,2133.13956,2141.12627&xdur=0.146",
   "external_url": "https://github.com/aboard-io/stellate/commit/0f2d96d87524ca7fffb7f254653ee20f713f8d65",
   "title": "Grand tour leans dancey: energy-weighted waypoint walk",
   "summary": "The boot tour random-walked all 92 stars unweighted, so ~1/3 of stops landed on wash anchors (the fictional-genre expansion flooded the low-energy half). Now each genre gets a derived ENERGY score = 0.6*bpmMid + 0.4*(non-off kit fraction)",
   "content_html": "<p>The boot tour random-walked all 92 stars unweighted, so ~1/3 of stops landed on wash anchors (the fictional-genre expansion flooded the low-energy half). Now each genre gets a derived ENERGY score = 0.6*bpmMid + 0.4*(non-off kit fraction)</p>\n<ul><li>8 fresh tours: 84.3% groovy stops vs 64.1% unweighted — a clear energy shift while keeping per-load variety and down/up arcs.</li></ul>\n<p><a href=\"https://stellate.app/?genre=mallsoft&amp;seed=9976&amp;path=1873.8827,2133.13956,2141.12627&amp;xdur=0.146\">▶ Play it: Atrium Standing Wave → Hadal Vespers → Mother Culture Vigil — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/0f2d96d87524ca7fffb7f254653ee20f713f8d65\">0f2d96d</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The boot tour random-walked all 92 stars unweighted, so ~1/3 of stops landed on wash anchors (the fictional-genre expansion flooded the low-energy half). Now each genre gets a derived ENERGY score = 0.6*bpmMid + 0.4*(non-off kit fraction)\n\n• 8 fresh tours: 84.3% groovy stops vs 64.1% unweighted — a clear energy shift while keeping per-load variety and down/up arcs.\n\n▶ Play it: Atrium Standing Wave → Hadal Vespers → Mother Culture Vigil — the three genres this change names, as one path https://stellate.app/?genre=mallsoft&seed=9976&path=1873.8827,2133.13956,2141.12627&xdur=0.146\n\n0f2d96d https://github.com/aboard-io/stellate/commit/0f2d96d87524ca7fffb7f254653ee20f713f8d65",
   "date_published": "2026-07-06T15:30:52.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "mallsoft",
    "atlantidrone",
    "sourdough",
    "drums"
   ]
  },
  {
   "id": "db6f700d69c9040f2574f3151ded9bda0c775e8d",
   "url": "https://stellate.app/?genre=synthwave&seed=1485&path=859.9909,878.9942,840.9942&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/db6f700d69c9040f2574f3151ded9bda0c775e8d",
   "title": "Envelope declick: micro-ramp the DX7 velocity + pingpong-send gain steps",
   "summary": "Paul's hunch confirmed: two instantaneous native-gain STEPS were amplitude discontinuities on possibly-ringing voices, independent of CPU load. (1) The DX7 per-note velocity set v.out.gain by setValueAtTime, so a retrigger jumped the prior note's still-ringing release tail",
   "content_html": "<p>Paul's hunch confirmed: two instantaneous native-gain STEPS were amplitude discontinuities on possibly-ringing voices, independent of CPU load. (1) The DX7 per-note velocity set v.out.gain by setValueAtTime, so a retrigger jumped the prior note's still-ringing release tail</p>\n<ul><li>Fix 3 (discrete wave/type/voices enum steps on sounding voices) left in place, documented: an a-rate selector can't micro-ramp, and deferring to gate-off breaks mono-legato voices that hold the gate high…</li><li>engine.test ALL PASS; soak gate PASS, workletTruth converges. The steps sit on ~-15dB tails, below the sentinel's discontinuity threshold</li></ul>\n<p><a href=\"https://stellate.app/?genre=synthwave&amp;seed=1485&amp;path=859.9909,878.9942,840.9942&amp;xdur=13.122\">▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/db6f700d69c9040f2574f3151ded9bda0c775e8d\">db6f700</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul's hunch confirmed: two instantaneous native-gain STEPS were amplitude discontinuities on possibly-ringing voices, independent of CPU load. (1) The DX7 per-note velocity set v.out.gain by setValueAtTime, so a retrigger jumped the prior note's still-ringing release tail\n\n• Fix 3 (discrete wave/type/voices enum steps on sounding voices) left in place, documented: an a-rate selector can't micro-ramp, and deferring to gate-off breaks mono-legato voices that hold the gate high…\n\n• engine.test ALL PASS; soak gate PASS, workletTruth converges. The steps sit on ~-15dB tails, below the sentinel's discontinuity threshold\n\n▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration https://stellate.app/?genre=synthwave&seed=1485&path=859.9909,878.9942,840.9942&xdur=13.122\n\ndb6f700 https://github.com/aboard-io/stellate/commit/db6f700d69c9040f2574f3151ded9bda0c775e8d",
   "date_published": "2026-07-06T15:30:52.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "synthwave",
    "synth"
   ]
  },
  {
   "id": "0dc95902c45322ea2f5b6a301a47fe52174fd6e3",
   "url": "https://stellate.app/?genre=bebop&seed=9330&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/0dc95902c45322ea2f5b6a301a47fe52174fd6e3",
   "title": "stem-worker: byte-exact pad parity — the bar-seam double-render is gone",
   "summary": "The pads diverged (corr 0.94) because the old worker rendered each bar in isolation: bar N's final block (the s-BS declick pre-roll of bar N+1's downbeat) was rendered once with STALE params, then double-rendered as bar N+1's discarded pre-roll",
   "content_html": "<p>The pads diverged (corr 0.94) because the old worker rendered each bar in isolation: bar N's final block (the s-BS declick pre-roll of bar N+1's downbeat) was rendered once with STALE params, then double-rendered as bar N+1's discarded pre-roll</p>\n<ul><li>Fix: split the walk into ingest (queue a bar's events) and render (windowed block walk), driven as a one-bar pipeline</li><li>Parity now BYTE-EQUAL (corr 1.000000, maxΔ 0) on every bus across four states incl. added cached-dx7-lead and cached-supersaw-lead cases. render-core/press untouched; engine.test ALL PASS. ~3.4x realtime.</li></ul>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=9330&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/0dc95902c45322ea2f5b6a301a47fe52174fd6e3\">0dc9590</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The pads diverged (corr 0.94) because the old worker rendered each bar in isolation: bar N's final block (the s-BS declick pre-roll of bar N+1's downbeat) was rendered once with STALE params, then double-rendered as bar N+1's discarded pre-roll\n\n• Fix: split the walk into ingest (queue a bar's events) and render (windowed block walk), driven as a one-bar pipeline\n\n• Parity now BYTE-EQUAL (corr 1.000000, maxΔ 0) on every bus across four states incl. added cached-dx7-lead and cached-supersaw-lead cases. render-core/press untouched; engine.test ALL PASS. ~3.4x realtime.\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=9330&path=694.13834,713.13867,675.13867&xdur=13.122\n\n0dc9590 https://github.com/aboard-io/stellate/commit/0dc95902c45322ea2f5b6a301a47fe52174fd6e3",
   "date_published": "2026-07-06T15:30:52.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "9667165bcdf905d04cd75689e133d6ff08d98531",
   "url": "https://stellate.app/?genre=mallsoft&seed=9331&path=1873.8805,1892.8838,1854.8838&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/9667165bcdf905d04cd75689e133d6ff08d98531",
   "title": "Stage 3 scaffolding: CBEATS chord-bar refactor + stem classing + dormant worker (WIP)",
   "summary": "The verified, inert groundwork for the 16-bar stem cache:",
   "content_html": "<p>The verified, inert groundwork for the 16-bar stem cache:</p>\n<ul><li>state-engine stemClass(units): CACHED = unitCost &gt;= 2.0 (dx7 fleet, supersaw leads, heavy pads + their inserts — R7's steady-state cost); LIVE = bass/drums/stab/sfx/vocoder/sampler/mono-legato.</li><li>live.js CBEATS refactor: the three hardcoded `8`s (bar window, beatAbs, nextTime advance) now route through Math.max(2,round(chordEvery||8)), matching csd-engine buildEvents</li><li>LOOKAHEAD widens to ~10s only under opts.stems; `stem` handle is null-safe and dormant. onBar's stemRepeat flag is scaffolding.</li><li>faust/stem-worker.js + stem-parity-test.js: WIP — worker renders CACHED units through render-core with persistent per-unit offline processors</li></ul>\n<p><em>Verified:</em> green: engine.test ALL PASS, validate-genres --quick PASS, matrix untouched.</p>\n<p><a href=\"https://stellate.app/?genre=mallsoft&amp;seed=9331&amp;path=1873.8805,1892.8838,1854.8838&amp;xdur=13.122\">▶ Play it: Atrium Standing Wave — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/9667165bcdf905d04cd75689e133d6ff08d98531\">9667165</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The verified, inert groundwork for the 16-bar stem cache:\n\n• state-engine stemClass(units): CACHED = unitCost >= 2.0 (dx7 fleet, supersaw leads, heavy pads + their inserts — R7's steady-state cost); LIVE = bass/drums/stab/sfx/vocoder/sampler/mono-legato.\n\n• live.js CBEATS refactor: the three hardcoded `8`s (bar window, beatAbs, nextTime advance) now route through Math.max(2,round(chordEvery||8)), matching csd-engine buildEvents\n\n• LOOKAHEAD widens to ~10s only under opts.stems; `stem` handle is null-safe and dormant. onBar's stemRepeat flag is scaffolding.\n\n• faust/stem-worker.js + stem-parity-test.js: WIP — worker renders CACHED units through render-core with persistent per-unit offline processors\n\nVerified: green: engine.test ALL PASS, validate-genres --quick PASS, matrix untouched.\n\n▶ Play it: Atrium Standing Wave — parked on the genre this change names https://stellate.app/?genre=mallsoft&seed=9331&path=1873.8805,1892.8838,1854.8838&xdur=13.122\n\n9667165 https://github.com/aboard-io/stellate/commit/9667165bcdf905d04cd75689e133d6ff08d98531",
   "date_published": "2026-07-06T15:10:45.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "mallsoft",
    "sampler"
   ]
  },
  {
   "id": "8db1ee82e07c3024234f4e389da08bba66e032f2",
   "url": "https://stellate.app/?genre=deephouse&seed=7386&path=1157.21707,859.9931,1405.21491&xdur=0.063",
   "external_url": "https://github.com/aboard-io/stellate/commit/8db1ee82e07c3024234f4e389da08bba66e032f2",
   "title": "MAKE IT MOVE: energy-preserving blends + the dancey genres get their own vocabulary back",
   "summary": "Paul: \"we seem to be exclusively super downtempo.\" Census verdict: no blend bug — statistical dilution. 35% of the map's melody mass was off/sparse; the arp family had 14%; and the dancey anchors themselves under-requested their vocabulary (acidhouse's lead pool was 67% off/sparse",
   "content_html": "<p>Paul: &quot;we seem to be exclusively super downtempo.&quot; Census verdict: no blend bug — statistical dilution. 35% of the map's melody mass was off/sparse; the arp family had 14%; and the dancey anchors themselves under-requested their vocabulary (acidhouse's lead pool was 67% off/sparse</p>\n<ul><li>resolveMulti pattern draws are now ENERGY-PRESERVING: a blend inherits the clearly-dancier parent's bass/lead pool once that parent carries weight &gt;= 0.35 (mallsoft .65 x deephouse .35 now keeps…</li><li>13 genres' pattern pools upgraded (acidhouse sixteenths+double, deephouse rolling+arps, synthwave/darksynth arp16, house/disco/edm/ garage/citypop/miamibass arp floors). techno keeps its off — that IS techno.</li><li>4000-blend monte carlo: off/sparse leads 34.4% -&gt; 24.3%, moving leads 46 -&gt; 59.3%, dancey bass 51.5 -&gt; 63.9%. Gates: determinism PASS, matrix 92/92 diagonal-dominant, vocabulary PASS, engine.test PASS.</li></ul>\n<p><a href=\"https://stellate.app/?genre=deephouse&amp;seed=7386&amp;path=1157.21707,859.9931,1405.21491&amp;xdur=0.063\">▶ Play it: Benthic Concierge → Highway Heat Death → Titration Rapture — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/8db1ee82e07c3024234f4e389da08bba66e032f2\">8db1ee8</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"we seem to be exclusively super downtempo.\" Census verdict: no blend bug — statistical dilution. 35% of the map's melody mass was off/sparse; the arp family had 14%; and the dancey anchors themselves under-requested their vocabulary (acidhouse's lead pool was 67% off/sparse\n\n• resolveMulti pattern draws are now ENERGY-PRESERVING: a blend inherits the clearly-dancier parent's bass/lead pool once that parent carries weight >= 0.35 (mallsoft .65 x deephouse .35 now keeps…\n\n• 13 genres' pattern pools upgraded (acidhouse sixteenths+double, deephouse rolling+arps, synthwave/darksynth arp16, house/disco/edm/ garage/citypop/miamibass arp floors). techno keeps its off — that IS techno.\n\n• 4000-blend monte carlo: off/sparse leads 34.4% -> 24.3%, moving leads 46 -> 59.3%, dancey bass 51.5 -> 63.9%. Gates: determinism PASS, matrix 92/92 diagonal-dominant, vocabulary PASS, engine.test PASS.\n\n▶ Play it: Benthic Concierge → Highway Heat Death → Titration Rapture — the three genres this change names, as one path https://stellate.app/?genre=deephouse&seed=7386&path=1157.21707,859.9931,1405.21491&xdur=0.063\n\n8db1ee8 https://github.com/aboard-io/stellate/commit/8db1ee82e07c3024234f4e389da08bba66e032f2",
   "date_published": "2026-07-06T14:56:58.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "deephouse",
    "synthwave",
    "acidhouse",
    "harmony"
   ]
  },
  {
   "id": "f5646ecc4914c91cd208baa54aa5d92a13e14ec3",
   "url": "https://stellate.app/?genre=miamibass&seed=4884&path=1021.15403,289.13893&xdur=0.447",
   "external_url": "https://github.com/aboard-io/stellate/commit/f5646ecc4914c91cd208baa54aa5d92a13e14ec3",
   "title": "ZERO-STATIC stage 2: the prewarm burst was the miamibass click, cost is the unit of harm",
   "summary": "Miami Bass \"9:15/8 + clicking\" diagnosed: NOT an accounting leak — 15 nodes is the legitimate protected set of a 10-unit genre (playing music wins over the cap, by contract).",
   "content_html": "<p>Miami Bass &quot;9:15/8 + clicking&quot; diagnosed: NOT an accounting leak — 15 nodes is the legitimate protected set of a 10-unit genre (playing music wins over the cap, by contract).</p>\n<ul><li>2.1 prewarm is now a load-gated drip: 1 module per 2s, only while loadRatio &gt; 0.97, instance destroyed 500ms after registration, modules already built by real pools skipped.</li><li>Miamibass stationary A/B: underruns 174/Σ2.90 -&gt; 1/Σ0.021 (fair-load), sentinel 0 both sides, prewarm burst gone from the cold window.</li></ul>\n<p><a href=\"https://stellate.app/?genre=miamibass&amp;seed=4884&amp;path=1021.15403,289.13893&amp;xdur=0.447\">▶ Play it: Richter Scale Cookout → Cretaceous Vespers — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/f5646ecc4914c91cd208baa54aa5d92a13e14ec3\">f5646ec</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Miami Bass \"9:15/8 + clicking\" diagnosed: NOT an accounting leak — 15 nodes is the legitimate protected set of a 10-unit genre (playing music wins over the cap, by contract).\n\n• 2.1 prewarm is now a load-gated drip: 1 module per 2s, only while loadRatio > 0.97, instance destroyed 500ms after registration, modules already built by real pools skipped.\n\n• Miamibass stationary A/B: underruns 174/Σ2.90 -> 1/Σ0.021 (fair-load), sentinel 0 both sides, prewarm burst gone from the cold window.\n\n▶ Play it: Richter Scale Cookout → Cretaceous Vespers — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=miamibass&seed=4884&path=1021.15403,289.13893&xdur=0.447\n\nf5646ec https://github.com/aboard-io/stellate/commit/f5646ecc4914c91cd208baa54aa5d92a13e14ec3",
   "date_published": "2026-07-06T14:30:15.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "miamibass",
    "dinosynth",
    "bass"
   ]
  },
  {
   "id": "6b41a8236197ca3d433b4d6090c1272248670591",
   "url": "https://stellate.app/?genre=jungle&seed=5995&path=1718.20504,1737.20537,1699.20537&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/6b41a8236197ca3d433b4d6090c1272248670591",
   "title": "default-path gate: mouse mirror catches up to the 720x520 star chart",
   "summary": "The waypoint delete/drag assertions failed not because explorer broke but because 2be4473 grew the logical canvas 500x400 -> 720x520 (the Eastern continent) and updated explorer's three coordinate sites while the gate's screen-coord mirror kept dividing by 500/400",
   "content_html": "<p>The waypoint delete/drag assertions failed not because explorer broke but because 2be4473 grew the logical canvas 500x400 -&gt; 720x520 (the Eastern continent) and updated explorer's three coordinate sites while the gate's screen-coord mirror kept dividing by 500/400</p>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=5995&amp;path=1718.20504,1737.20537,1699.20537&amp;xdur=13.122\">▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/6b41a8236197ca3d433b4d6090c1272248670591\">6b41a82</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The waypoint delete/drag assertions failed not because explorer broke but because 2be4473 grew the logical canvas 500x400 -> 720x520 (the Eastern continent) and updated explorer's three coordinate sites while the gate's screen-coord mirror kept dividing by 500/400\n\n▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide https://stellate.app/?genre=jungle&seed=5995&path=1718.20504,1737.20537,1699.20537&xdur=13.122\n\n6b41a82 https://github.com/aboard-io/stellate/commit/6b41a8236197ca3d433b4d6090c1272248670591",
   "date_published": "2026-07-06T14:29:24.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "drums"
   ]
  },
  {
   "id": "d0fba80191baea5f0b4c9f1151a5e7ea732c75e1",
   "url": "https://stellate.app/?genre=crickettempo&seed=6473&path=762.8634,1505.3720,1315.6203&xdur=0.151",
   "external_url": "https://github.com/aboard-io/stellate/commit/d0fba80191baea5f0b4c9f1151a5e7ea732c75e1",
   "title": "THE BIRDS GO HOME: loon to Canada, iriomote benched, beds open seeded",
   "summary": "Paul: \"make birds much more rare... they're really only for canadians.\" The loon plays ONLY in canawave (its vol .035 whisper, as designed). iriomote — the bird-heavy island ambience that impersonated a loon across a dozen genres — leaves every pool (catalog entry benched).",
   "content_html": "<p>Paul: &quot;make birds much more rare... they're really only for canadians.&quot; The loon plays ONLY in canawave (its vol .035 whisper, as designed). iriomote — the bird-heavy island ambience that impersonated a loon across a dozen genres — leaves every pool (catalog entry benched).</p>\n<ul><li>Plus: the bed rotation opens at a seeded index (Knuth hash of seed, no rng draw consumed) instead of always sources[0] — intros stop deterministically leading with the same recording across seeds.</li></ul>\n<p><em>Verified:</em> determinism byte-stable x92, matrix 92/92 diagonal-dominant, vocabulary 0 dangling, engine.test ALL PASS.</p>\n<p><a href=\"https://stellate.app/?genre=crickettempo&amp;seed=6473&amp;path=762.8634,1505.3720,1315.6203&amp;xdur=0.151\">▶ Play it: Chirp Thermometry → Loon Referendum → Undertow Sock Hop — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/d0fba80191baea5f0b4c9f1151a5e7ea732c75e1\">d0fba80</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"make birds much more rare... they're really only for canadians.\" The loon plays ONLY in canawave (its vol .035 whisper, as designed). iriomote — the bird-heavy island ambience that impersonated a loon across a dozen genres — leaves every pool (catalog entry benched).\n\n• Plus: the bed rotation opens at a seeded index (Knuth hash of seed, no rng draw consumed) instead of always sources[0] — intros stop deterministically leading with the same recording across seeds.\n\nVerified: determinism byte-stable x92, matrix 92/92 diagonal-dominant, vocabulary 0 dangling, engine.test ALL PASS.\n\n▶ Play it: Chirp Thermometry → Loon Referendum → Undertow Sock Hop — the three genres this change names, as one path https://stellate.app/?genre=crickettempo&seed=6473&path=762.8634,1505.3720,1315.6203&xdur=0.151\n\nd0fba80 https://github.com/aboard-io/stellate/commit/d0fba80191baea5f0b4c9f1151a5e7ea732c75e1",
   "date_published": "2026-07-06T14:29:24.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "crickettempo",
    "canawave",
    "surfrock",
    "found"
   ]
  },
  {
   "id": "d49bbdbbca206ce517c90cecac3e77644354744c",
   "url": "https://stellate.app/?genre=spokenword&seed=7443&path=196.11721,215.11754,177.11754&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/d49bbdbbca206ce517c90cecac3e77644354744c",
   "title": "found-player: one looping bed buffer (-92% grain churn) + the loon fixes",
   "summary": "Stage 2.4: the granular bed's ~28 src+gain pairs/sec collapse into ONE looping AudioBufferSourceNode — the grain cloud renders once via the mixPCM math (extracted as mixGrains, byte-parity kept for press) in idle-time slices, LRU-cached (6), crossfaded in from the legacy scheduler on first hearing…",
   "content_html": "<p>Stage 2.4: the granular bed's ~28 src+gain pairs/sec collapse into ONE looping AudioBufferSourceNode — the grain cloud renders once via the mixPCM math (extracted as mixGrains, byte-parity kept for press) in idle-time slices, LRU-cached (6), crossfaded in from the legacy scheduler on first hearing…</p>\n<ul><li>The loon fixes (Paul: &quot;fix the loons... they're really only for canadians&quot;): (1) the spokenword quiet-boost is now SPEECH-GATED — median F0 in 70-350Hz + voicedness</li></ul>\n<p><a href=\"https://stellate.app/?genre=spokenword&amp;seed=7443&amp;path=196.11721,215.11754,177.11754&amp;xdur=13.122\">▶ Play it: Dial Tone Prophet — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/d49bbdbbca206ce517c90cecac3e77644354744c\">d49bbdb</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Stage 2.4: the granular bed's ~28 src+gain pairs/sec collapse into ONE looping AudioBufferSourceNode — the grain cloud renders once via the mixPCM math (extracted as mixGrains, byte-parity kept for press) in idle-time slices, LRU-cached (6), crossfaded in from the legacy scheduler on first hearing…\n\n• The loon fixes (Paul: \"fix the loons... they're really only for canadians\"): (1) the spokenword quiet-boost is now SPEECH-GATED — median F0 in 70-350Hz + voicedness\n\n▶ Play it: Dial Tone Prophet — parked on the genre this change names https://stellate.app/?genre=spokenword&seed=7443&path=196.11721,215.11754,177.11754&xdur=13.122\n\nd49bbdb https://github.com/aboard-io/stellate/commit/d49bbdbbca206ce517c90cecac3e77644354744c",
   "date_published": "2026-07-06T14:29:00.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "spokenword",
    "voice"
   ]
  },
  {
   "id": "b3273cf383d5eedafd432f7e981509f443dc0a41",
   "url": "https://stellate.app/?genre=synthwave&seed=9171&path=859.9909,878.9942,840.9942&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/b3273cf383d5eedafd432f7e981509f443dc0a41",
   "title": "render-core: press's per-unit walk extracted, byte-parity proven",
   "summary": "The Stage 3 prerequisite (ZERO-STATIC.md): the pure-compute render loop (param walks, proc.render block loops, mono-legato, insert chains, merged active intervals) moves to faust/render-core.js",
   "content_html": "<p>The Stage 3 prerequisite (ZERO-STATIC.md): the pure-compute render loop (param walks, proc.render block loops, mono-legato, insert chains, merged active intervals) moves to faust/render-core.js</p>\n<p><a href=\"https://stellate.app/?genre=synthwave&amp;seed=9171&amp;path=859.9909,878.9942,840.9942&amp;xdur=13.122\">▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/b3273cf383d5eedafd432f7e981509f443dc0a41\">b3273cf</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The Stage 3 prerequisite (ZERO-STATIC.md): the pure-compute render loop (param walks, proc.render block loops, mono-legato, insert chains, merged active intervals) moves to faust/render-core.js\n\n▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration https://stellate.app/?genre=synthwave&seed=9171&path=859.9909,878.9942,840.9942&xdur=13.122\n\nb3273cf https://github.com/aboard-io/stellate/commit/b3273cf383d5eedafd432f7e981509f443dc0a41",
   "date_published": "2026-07-06T14:29:00.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "synthwave",
    "synth"
   ]
  },
  {
   "id": "405c1c5779c8fa218e69faffe1eadd748953f941",
   "url": "https://stellate.app/?genre=jungle&seed=4391&path=1718.20504,1737.20537,1699.20537&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/405c1c5779c8fa218e69faffe1eadd748953f941",
   "title": "ZERO-STATIC stages 0+1: kill the last zombies, instrument the truth, hygiene the render window",
   "summary": "The 12-agent verdict on \"is it too many effects?\": no — it was two more zombie-worklet leaks (retire() and insert type-change teardown disconnected without destroy(), so every reverb-color/insert swap during travel leaked a forever-computing worklet invisible to countWorklets), plus four…",
   "content_html": "<p>The 12-agent verdict on &quot;is it too many effects?&quot;: no — it was two more zombie-worklet leaks (retire() and insert type-change teardown disconnected without destroy(), so every reverb-color/insert swap during travel leaked a forever-computing worklet invisible to countWorklets), plus four…</p>\n<ul><li>faust/sentinel-processor.js: click/gap/peak sentinel on the audio thread, adaptive click bar (instant-attack/4s-release peak hold over block max-delta — square program raises its own bar</li><li>zombie registry (workletTruth: created/destroyed/alive vs counted) + 2048-entry structural-event journal, always on; sentinel + renderCapacity/playbackStats underrun truth behind ?debugSentinel=1</li><li>soak-travel-run.js: --minutes/--throttle/--gate, per-leg click-&gt; mechanism attribution histograms (nearest journal event ±2.5s)</li><li>destroy-on-retire for color/mb/insert-chain teardowns (the R1 fix)</li></ul>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=4391&amp;path=1718.20504,1737.20537,1699.20537&amp;xdur=13.122\">▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/405c1c5779c8fa218e69faffe1eadd748953f941\">405c1c5</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The 12-agent verdict on \"is it too many effects?\": no — it was two more zombie-worklet leaks (retire() and insert type-change teardown disconnected without destroy(), so every reverb-color/insert swap during travel leaked a forever-computing worklet invisible to countWorklets), plus four…\n\n• faust/sentinel-processor.js: click/gap/peak sentinel on the audio thread, adaptive click bar (instant-attack/4s-release peak hold over block max-delta — square program raises its own bar\n\n• zombie registry (workletTruth: created/destroyed/alive vs counted) + 2048-entry structural-event journal, always on; sentinel + renderCapacity/playbackStats underrun truth behind ?debugSentinel=1\n\n• soak-travel-run.js: --minutes/--throttle/--gate, per-leg click-> mechanism attribution histograms (nearest journal event ±2.5s)\n\n• destroy-on-retire for color/mb/insert-chain teardowns (the R1 fix)\n\n▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide https://stellate.app/?genre=jungle&seed=4391&path=1718.20504,1737.20537,1699.20537&xdur=13.122\n\n405c1c5 https://github.com/aboard-io/stellate/commit/405c1c5779c8fa218e69faffe1eadd748953f941",
   "date_published": "2026-07-06T13:30:23.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "drums"
   ]
  },
  {
   "id": "8356bc684a40211d0852cfde5073639be178a299",
   "url": "https://stellate.app/?genre=dubstep&seed=3624&path=1379.18226,1398.18259,1360.18259&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/8356bc684a40211d0852cfde5073639be178a299",
   "title": "Tectonic SLOTH: 64 — transforms you can never catch moving",
   "summary": "Paul: \"EVEN SLOWER, like 1/4th that slow. They shouldn't be obvious.\" Every zoom/squeeze/lean/wobble now runs 4x slower again; the chaos scheduler self-spaces 4x wider to match; crossfades stay pinned at the 8s FADE_CAP so a dissolve still finishes inside the switch window.",
   "content_html": "<p>Paul: &quot;EVEN SLOWER, like 1/4th that slow. They shouldn't be obvious.&quot; Every zoom/squeeze/lean/wobble now runs 4x slower again; the chaos scheduler self-spaces 4x wider to match; crossfades stay pinned at the 8s FADE_CAP so a dissolve still finishes inside the switch window.</p>\n<p><a href=\"https://stellate.app/?genre=dubstep&amp;seed=3624&amp;path=1379.18226,1398.18259,1360.18259&amp;xdur=13.122\">▶ Play it: Seismic Ultimatum — the genre that is mostly bass</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/8356bc684a40211d0852cfde5073639be178a299\">8356bc6</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"EVEN SLOWER, like 1/4th that slow. They shouldn't be obvious.\" Every zoom/squeeze/lean/wobble now runs 4x slower again; the chaos scheduler self-spaces 4x wider to match; crossfades stay pinned at the 8s FADE_CAP so a dissolve still finishes inside the switch window.\n\n▶ Play it: Seismic Ultimatum — the genre that is mostly bass https://stellate.app/?genre=dubstep&seed=3624&path=1379.18226,1398.18259,1360.18259&xdur=13.122\n\n8356bc6 https://github.com/aboard-io/stellate/commit/8356bc684a40211d0852cfde5073639be178a299",
   "date_published": "2026-07-06T13:30:01.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "dubstep",
    "bass"
   ]
  },
  {
   "id": "ce74176f001a18b4bfb936bff18e0ec227c9f637",
   "url": "https://stellate.app/?genre=dinosynth&seed=2671&path=289.13871,308.13904,270.13904&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/ce74176f001a18b4bfb936bff18e0ec227c9f637",
   "title": "Kill the zombie worklets: destroy-on-retire, cap 8, voice sleep/wake",
   "summary": "Paul's desktop clicks, root-caused: audio-thread render-budget exhaustion from worklets that NEVER STOP COMPUTING. Three mechanisms:",
   "content_html": "<p>Paul's desktop clicks, root-caused: audio-thread render-budget exhaustion from worklets that NEVER STOP COMPUTING. Three mechanisms:</p>\n<ul><li>1. ZOMBIES (the big one): retirePool only DISCONNECTED nodes — a Faust worklet whose process() returns true keeps computing after disconnection, forever, per spec.</li><li>The regime, layered: destroy-on-retire kills zombies at the source; an idle reaper tears down off-genre pools after 16 bars (&lt;=3/bar at bar boundaries)</li><li>The proof: the identical 29-station tour that drove eco-mode to level 3 by station 18 (load dips 0.85, heap 22-&gt;95MB, clicks rising) now runs load 1.000 flat, eco 0, clicks 0.1, 0 errors, node curve…</li><li>Meter upgraded: &quot;1.00x 8:8/8&quot; = load, computing:resident/cap — Paul's 2-3-active observation is now literally the first number.</li></ul>\n<p><em>Verified:</em> BEFORE/FINAL curves; cap-pin@8 torture (24 harvests, music voiced 11/11, revisit identical); cap8 tour returns to &lt;=8 idle; standing single-genre soak sample-equal to baseline</p>\n<p><a href=\"https://stellate.app/?genre=dinosynth&amp;seed=2671&amp;path=289.13871,308.13904,270.13904&amp;xdur=13.122\">▶ Play it: Cretaceous Vespers — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/ce74176f001a18b4bfb936bff18e0ec227c9f637\">ce74176</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul's desktop clicks, root-caused: audio-thread render-budget exhaustion from worklets that NEVER STOP COMPUTING. Three mechanisms:\n\n• 1. ZOMBIES (the big one): retirePool only DISCONNECTED nodes — a Faust worklet whose process() returns true keeps computing after disconnection, forever, per spec.\n\n• The regime, layered: destroy-on-retire kills zombies at the source; an idle reaper tears down off-genre pools after 16 bars (<=3/bar at bar boundaries)\n\n• The proof: the identical 29-station tour that drove eco-mode to level 3 by station 18 (load dips 0.85, heap 22->95MB, clicks rising) now runs load 1.000 flat, eco 0, clicks 0.1, 0 errors, node curve…\n\n• Meter upgraded: \"1.00x 8:8/8\" = load, computing:resident/cap — Paul's 2-3-active observation is now literally the first number.\n\nVerified: BEFORE/FINAL curves; cap-pin@8 torture (24 harvests, music voiced 11/11, revisit identical); cap8 tour returns to <=8 idle; standing single-genre soak sample-equal to baseline\n\n▶ Play it: Cretaceous Vespers — parked on the genre this change names https://stellate.app/?genre=dinosynth&seed=2671&path=289.13871,308.13904,270.13904&xdur=13.122\n\nce74176 https://github.com/aboard-io/stellate/commit/ce74176f001a18b4bfb936bff18e0ec227c9f637",
   "date_published": "2026-07-06T11:22:06.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "dinosynth",
    "harmony"
   ]
  },
  {
   "id": "d769f55ffd5d3aa45f50d66239861c3f23b6e105",
   "url": "https://stellate.app/?genre=ambient&seed=6535&path=2103.13280,2122.13313,2084.13313&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/d769f55ffd5d3aa45f50d66239861c3f23b6e105",
   "title": "Deeper, slower, more twisted: RATE .35, SLOTH 16, DRAMA 1.6",
   "summary": "Paul: \"Slow the video and the effects even more. Make the effects more dramatic, since they're now going so slow it feels organic.",
   "content_html": "<p>Paul: &quot;Slow the video and the effects even more. Make the effects more dramatic, since they're now going so slow it feels organic.</p>\n<ul><li>Footage now plays at 0.35x through the defaultPlaybackRate law (cue windows are media-time so loops are unaffected; 15-45s windows = 42-128s of wall-time dream per clip).</li><li>SEVEN new twisted events: lean (the marquee — the whole frame tilts 25-90 degrees and back over its long life, with an exact never-expose cover scale |cos t| + AR|sin t| held for the sweep), persplean (3D tilt…</li><li>Scanlines: the single hum band becomes THREE stacked soft bands (46/22/66vh) drifting at different speeds and phases, higher contrast, bolder soft-ramp texture — thicker but still analog, no digital grid.</li><li>Mid-flight fix that mattered: multi-cycle warps at SLOTH 16 ballooned to 1-2 minute events starving the scheduler — step timing re-derived from a 15-30s target so they read geological without squatting.</li></ul>\n<p><em>Verified:</em> lean 3-point capture with zero corner exposure at 79 degrees; every new event fired with logged transforms; never-unwatchable spot-checks on bright + dark clips</p>\n<p><a href=\"https://stellate.app/?genre=ambient&amp;seed=6535&amp;path=2103.13280,2122.13313,2084.13313&amp;xdur=13.122\">▶ Play it: Stationary Weather — a long-form genre — put the phone in your pocket and it keeps playing</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/d769f55ffd5d3aa45f50d66239861c3f23b6e105\">d769f55</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"Slow the video and the effects even more. Make the effects more dramatic, since they're now going so slow it feels organic.\n\n• Footage now plays at 0.35x through the defaultPlaybackRate law (cue windows are media-time so loops are unaffected; 15-45s windows = 42-128s of wall-time dream per clip).\n\n• SEVEN new twisted events: lean (the marquee — the whole frame tilts 25-90 degrees and back over its long life, with an exact never-expose cover scale |cos t| + AR|sin t| held for the sweep), persplean (3D tilt…\n\n• Scanlines: the single hum band becomes THREE stacked soft bands (46/22/66vh) drifting at different speeds and phases, higher contrast, bolder soft-ramp texture — thicker but still analog, no digital grid.\n\n• Mid-flight fix that mattered: multi-cycle warps at SLOTH 16 ballooned to 1-2 minute events starving the scheduler — step timing re-derived from a 15-30s target so they read geological without squatting.\n\nVerified: lean 3-point capture with zero corner exposure at 79 degrees; every new event fired with logged transforms; never-unwatchable spot-checks on bright + dark clips\n\n▶ Play it: Stationary Weather — a long-form genre — put the phone in your pocket and it keeps playing https://stellate.app/?genre=ambient&seed=6535&path=2103.13280,2122.13313,2084.13313&xdur=13.122\n\nd769f55 https://github.com/aboard-io/stellate/commit/d769f55ffd5d3aa45f50d66239861c3f23b6e105",
   "date_published": "2026-07-06T04:58:52.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ambient",
    "mobile"
   ]
  },
  {
   "id": "9433eeee6582d9b5ebf6f0f8fd96ed0626a4e4b5",
   "url": "https://stellate.app/?genre=techno&seed=2470&path=1956.22436,1718.20526,1679.4415&xdur=0.042",
   "external_url": "https://github.com/aboard-io/stellate/commit/9433eeee6582d9b5ebf6f0f8fd96ed0626a4e4b5",
   "title": "The footage is ALWAYS slow; glyphs fade in and out",
   "summary": "Paul: \"The video isn't always slow any more. It should always be very slowed down\" + \"Glyphs should fade in and out.\"",
   "content_html": "<p>Paul: &quot;The video isn't always slow any more. It should always be very slowed down&quot; + &quot;Glyphs should fade in and out.&quot;</p>\n<ul><li><strong>THE RATE RACE</strong> — playbackRate was set immediately after src=, but the media load algorithm resets playbackRate to defaultPlaybackRate when the new source loads</li><li><strong>GLYPH FADES</strong> — roaming idents are born at opacity 0 and carry an opacity ease (30% of life, capped 3.2s) alongside their drift</li></ul>\n<p><a href=\"https://stellate.app/?genre=techno&amp;seed=2470&amp;path=1956.22436,1718.20526,1679.4415&amp;xdur=0.042\">▶ Play it: Unblinking Interval → Barometric Stampede → Food Court Eternity — a three-star constellation to watch the map work</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/9433eeee6582d9b5ebf6f0f8fd96ed0626a4e4b5\">9433eee</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"The video isn't always slow any more. It should always be very slowed down\" + \"Glyphs should fade in and out.\"\n\nTHE RATE RACE — playbackRate was set immediately after src=, but the media load algorithm resets playbackRate to defaultPlaybackRate when the new source loads\n\nGLYPH FADES — roaming idents are born at opacity 0 and carry an opacity ease (30% of life, capped 3.2s) alongside their drift\n\n▶ Play it: Unblinking Interval → Barometric Stampede → Food Court Eternity — a three-star constellation to watch the map work https://stellate.app/?genre=techno&seed=2470&path=1956.22436,1718.20526,1679.4415&xdur=0.042\n\n9433eee https://github.com/aboard-io/stellate/commit/9433eeee6582d9b5ebf6f0f8fd96ed0626a4e4b5",
   "date_published": "2026-07-06T04:08:56.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "techno",
    "jungle",
    "vaporwave",
    "visual"
   ]
  },
  {
   "id": "264fea1ed09d8200d9da0188e9c5f59d5e7e0b72",
   "url": "https://stellate.app/?genre=ambient&seed=1486&path=2103.13280,2122.13313,2084.13313&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/264fea1ed09d8200d9da0188e9c5f59d5e7e0b72",
   "title": "Roaming glyphs + the analog scanline",
   "summary": "Paul: \"Glyphs should appear all over the place and move around... different sizes\" + \"the multi-line scanline is too much and too obviously digital.\"",
   "content_html": "<p>Paul: &quot;Glyphs should appear all over the place and move around... different sizes&quot; + &quot;the multi-line scanline is too much and too obviously digital.&quot;</p>\n<ul><li><strong>GLYPHS</strong> — the single anchored ident is now a pooled swarm (4 desktop / 3 mobile, zero DOM churn). Each spawn: random position frame-wide with size-aware clip insets, sizes from 2.6vmin ticker to 24vmin quarter-screen…</li><li><strong>SCANLINE</strong> — the dense 1px repeating-gradient grid is deleted. In its place the classic analog vertical-blanking bar</li><li>0 console errors both tiers; audio smoke PASS; 38 distinct glyph positions / 17 sizes observed desktop, 27/16 mobile.</li></ul>\n<p><a href=\"https://stellate.app/?genre=ambient&amp;seed=1486&amp;path=2103.13280,2122.13313,2084.13313&amp;xdur=13.122\">▶ Play it: Stationary Weather — a long-form genre — put the phone in your pocket and it keeps playing</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/264fea1ed09d8200d9da0188e9c5f59d5e7e0b72\">264fea1</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"Glyphs should appear all over the place and move around... different sizes\" + \"the multi-line scanline is too much and too obviously digital.\"\n\nGLYPHS — the single anchored ident is now a pooled swarm (4 desktop / 3 mobile, zero DOM churn). Each spawn: random position frame-wide with size-aware clip insets, sizes from 2.6vmin ticker to 24vmin quarter-screen…\n\nSCANLINE — the dense 1px repeating-gradient grid is deleted. In its place the classic analog vertical-blanking bar\n\n• 0 console errors both tiers; audio smoke PASS; 38 distinct glyph positions / 17 sizes observed desktop, 27/16 mobile.\n\n▶ Play it: Stationary Weather — a long-form genre — put the phone in your pocket and it keeps playing https://stellate.app/?genre=ambient&seed=1486&path=2103.13280,2122.13313,2084.13313&xdur=13.122\n\n264fea1 https://github.com/aboard-io/stellate/commit/264fea1ed09d8200d9da0188e9c5f59d5e7e0b72",
   "date_published": "2026-07-06T04:05:16.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ambient",
    "mobile"
   ]
  },
  {
   "id": "61ba0e8b58d610be0a2a57c92dd01977fd5694dc",
   "url": "https://stellate.app/?genre=zubrovia&seed=9371&path=364.17761,2191.9087,2001.24486&xdur=0.048",
   "external_url": "https://github.com/aboard-io/stellate/commit/61ba0e8b58d610be0a2a57c92dd01977fd5694dc",
   "title": "THE CATALOG GOES TO 92: 29 fictional genres join the vector space",
   "summary": "Paul's commission (\"30 more, totally ridiculous fictional genres\") lands: 29 inserted via genre-tool, every one self-scoring 100/100 with measured targets, matrix 92/92 diagonal-dominant, and the star chart expanded (logical canvas 500x400 -> 720x520) to hold the Eastern continent and Southern shore…",
   "content_html": "<p>Paul's commission (&quot;30 more, totally ridiculous fictional genres&quot;) lands: 29 inserted via genre-tool, every one self-scoring 100/100 with measured targets, matrix 92/92 diagonal-dominant, and the star chart expanded (logical canvas 500x400 -&gt; 720x520) to hold the Eastern continent and Southern shore…</p>\n<ul><li>The roll call, drone to gabber: atlantidrone (drowned church organ, 32-bar plateaus), sourdough (fermentation as generative ambient), crtwave (the 15.7kHz flyback elegy), termswave (nobody has finished a…</li><li>magpiehouse DEFERRED with honor (spec kept as .deferred): its joke — house distinguishable only by WHICH samples it steals</li><li>Conductor discipline held: specs fixed, never the tool (per-genre fences documented — zubrovia was the worst offender, rebuilt around a narrow bedUse band after stealing six diagonals)</li></ul>\n<p><em>Verified:</em> verify quick + full PASS; snare-law 460/460 clean; all 29 spot-rendered non-silent with signature crates confirmed in events; press determinism x2 byte-identical</p>\n<p><a href=\"https://stellate.app/?genre=zubrovia&amp;seed=9371&amp;path=364.17761,2191.9087,2001.24486&amp;xdur=0.048\">▶ Play it: Zubrovian Irredenta → Squawk Ineffable → Rolling Boil Plateau — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/61ba0e8b58d610be0a2a57c92dd01977fd5694dc\">61ba0e8</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul's commission (\"30 more, totally ridiculous fictional genres\") lands: 29 inserted via genre-tool, every one self-scoring 100/100 with measured targets, matrix 92/92 diagonal-dominant, and the star chart expanded (logical canvas 500x400 -> 720x520) to hold the Eastern continent and Southern shore…\n\n• The roll call, drone to gabber: atlantidrone (drowned church organ, 32-bar plateaus), sourdough (fermentation as generative ambient), crtwave (the 15.7kHz flyback elegy), termswave (nobody has finished a…\n\n• magpiehouse DEFERRED with honor (spec kept as .deferred): its joke — house distinguishable only by WHICH samples it steals\n\n• Conductor discipline held: specs fixed, never the tool (per-genre fences documented — zubrovia was the worst offender, rebuilt around a narrow bedUse band after stealing six diagonals)\n\nVerified: verify quick + full PASS; snare-law 460/460 clean; all 29 spot-rendered non-silent with signature crates confirmed in events; press determinism x2 byte-identical\n\n▶ Play it: Zubrovian Irredenta → Squawk Ineffable → Rolling Boil Plateau — the three genres this change names, as one path https://stellate.app/?genre=zubrovia&seed=9371&path=364.17761,2191.9087,2001.24486&xdur=0.048\n\n61ba0e8 https://github.com/aboard-io/stellate/commit/61ba0e8b58d610be0a2a57c92dd01977fd5694dc",
   "date_published": "2026-07-06T03:47:46.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "zubrovia",
    "airtrafficdrone",
    "aldente",
    "voice"
   ]
  },
  {
   "id": "b86f1f6a6cad3a53cc8453ce2e983d98309255d5",
   "url": "https://stellate.app/?genre=ambient&seed=1282&path=2103.13280,2122.13313,2084.13313&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/b86f1f6a6cad3a53cc8453ce2e983d98309255d5",
   "title": "SLOTH=10: the station stops twitching and starts dreaming",
   "summary": "Paul: \"The video transitions and effects should be 10x slower.\" One dial at the top of video-layer.js, applied at every motion's realization point: crossfades 1600ms -> 8s (capped at ~80% of the 8-bar window at the fastest bpm so a dissolve always completes",
   "content_html": "<p>Paul: &quot;The video transitions and effects should be 10x slower.&quot; One dial at the top of video-layer.js, applied at every motion's realization point: crossfades 1600ms -&gt; 8s (capped at ~80% of the 8-bar window at the fastest bpm so a dissolve always completes</p>\n<ul><li>Ten documented deviations where literal 10x breaks the dream: hsync skews now SLEW (stepped x10 = slideshow); pump eases into a slow throb; invert becomes one long wash to negative and back</li></ul>\n<p><em>Verified:</em> 5/5 dissolves complete before the next switch at 187bpm; 13/13 captured events conform ~10x; three gradual-motion sequences captured (a tracking band drifting 45-&gt;778px over 7.8s)</p>\n<p><a href=\"https://stellate.app/?genre=ambient&amp;seed=1282&amp;path=2103.13280,2122.13313,2084.13313&amp;xdur=13.122\">▶ Play it: Stationary Weather — a long-form genre — put the phone in your pocket and it keeps playing</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/b86f1f6a6cad3a53cc8453ce2e983d98309255d5\">b86f1f6</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"The video transitions and effects should be 10x slower.\" One dial at the top of video-layer.js, applied at every motion's realization point: crossfades 1600ms -> 8s (capped at ~80% of the 8-bar window at the fastest bpm so a dissolve always completes\n\n• Ten documented deviations where literal 10x breaks the dream: hsync skews now SLEW (stepped x10 = slideshow); pump eases into a slow throb; invert becomes one long wash to negative and back\n\nVerified: 5/5 dissolves complete before the next switch at 187bpm; 13/13 captured events conform ~10x; three gradual-motion sequences captured (a tracking band drifting 45->778px over 7.8s)\n\n▶ Play it: Stationary Weather — a long-form genre — put the phone in your pocket and it keeps playing https://stellate.app/?genre=ambient&seed=1282&path=2103.13280,2122.13313,2084.13313&xdur=13.122\n\nb86f1f6 https://github.com/aboard-io/stellate/commit/b86f1f6a6cad3a53cc8453ce2e983d98309255d5",
   "date_published": "2026-07-06T03:47:05.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ambient",
    "mobile"
   ]
  },
  {
   "id": "a144fe3056981d7a86338b9c4318ee7003ba613d",
   "url": "https://stellate.app/?genre=transitwave&seed=2296&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/a144fe3056981d7a86338b9c4318ee7003ba613d",
   "title": "Mobile broadcast parity: streaming, chaos, glyphs-only, tamed bars",
   "summary": "Paul's mobile report, all four + the addendum:",
   "content_html": "<p>Paul's mobile report, all four + the addendum:</p>\n<ul><li>1. ARCHIVE VIDEO ON MOBILE: the root cause of &quot;just the old stuff&quot; — the mobile path built ONE video element, so loadBack's prefetch guard (vids.length&lt;2) returned early on every prefetch and remote only ever…</li><li>Desktop unregressed (15 distinct events, 0 errors); audio smoke PASS. Honest caveat: mobile verification is emulated Chromium — the Safari risk was designed out rather than measured on-device.</li></ul>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=2296&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/a144fe3056981d7a86338b9c4318ee7003ba613d\">a144fe3</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul's mobile report, all four + the addendum:\n\n• 1. ARCHIVE VIDEO ON MOBILE: the root cause of \"just the old stuff\" — the mobile path built ONE video element, so loadBack's prefetch guard (vids.length<2) returned early on every prefetch and remote only ever…\n\n• Desktop unregressed (15 distinct events, 0 errors); audio smoke PASS. Honest caveat: mobile verification is emulated Chromium — the Safari risk was designed out rather than measured on-device.\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=2296&path=749.12536,768.12569,730.12569&xdur=13.122\n\na144fe3 https://github.com/aboard-io/stellate/commit/a144fe3056981d7a86338b9c4318ee7003ba613d",
   "date_published": "2026-07-06T03:04:16.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "3dc8fb0ede9e958042beb03bdb5de7f71feff45e",
   "url": "https://stellate.app/?genre=jazz&seed=7646&path=292.16891,139.12607,1679.4415&xdur=0.06",
   "external_url": "https://github.com/aboard-io/stellate/commit/3dc8fb0ede9e958042beb03bdb5de7f71feff45e",
   "title": "Sampler apply: 11 instruments, real uprights, harpsichord Bach, sax bends",
   "summary": "The sampler review + extraction batch, applied in full — every touched genre's margin BYTE-IDENTICAL before/after (bass and pool additions proved matrix-invisible exactly as the review predicted; nothing scaled back):",
   "content_html": "<p>The sampler review + extraction batch, applied in full — every touched genre's margin BYTE-IDENTICAL before/after (bass and pool additions proved matrix-invisible exactly as the review predicted; nothing scaled back):</p>\n<ul><li><strong>REGISTRY</strong> — 11 new SAMPLERS (accordion, tuba, pan_flute, kalimba, glockenspiel, harpsichord, pizzicato_strings, clavinet, finger_bass, sitar, steel_drums) + the 30-genre commission's 82 SAMPLES (66 espeak lines, 16…</li><li><strong>THE UPRIGHTS</strong> — tango gains the orquesta contrabass under the habanera; lofi gets the Dilla upright; downtempo the Bristol upright (sub-fence measured, holds at .867 over the .5 floor)</li><li><strong>HISTORY</strong> — prelude leads on a real harpsichord 2/3 of seeds (it is literally Bach; felt piano remains the alternate); newjack's DX7 FUNK CLAV fake replaced by the real clavinet; tango pads gain literal pizzicato marcato</li><li><strong>CAPABILITIES</strong> — vaporwave + mallsoft pads breathe through the mellotron tape-wow (the review's strongest call — the worn-VHS move on the genre that IS worn VHS)</li></ul>\n<p><em>Verified:</em> verify quick + full PASS, matrix 63/63, snare-law audit clean, press determinism byte-identical, fixture drift exactly the 9 touched genres.</p>\n<p><a href=\"https://stellate.app/?genre=jazz&amp;seed=7646&amp;path=292.16891,139.12607,1679.4415&amp;xdur=0.06\">▶ Play it: Smoke Arithmetic → Habanera Tribunal → Food Court Eternity — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/3dc8fb0ede9e958042beb03bdb5de7f71feff45e\">3dc8fb0</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The sampler review + extraction batch, applied in full — every touched genre's margin BYTE-IDENTICAL before/after (bass and pool additions proved matrix-invisible exactly as the review predicted; nothing scaled back):\n\nREGISTRY — 11 new SAMPLERS (accordion, tuba, pan_flute, kalimba, glockenspiel, harpsichord, pizzicato_strings, clavinet, finger_bass, sitar, steel_drums) + the 30-genre commission's 82 SAMPLES (66 espeak lines, 16…\n\nTHE UPRIGHTS — tango gains the orquesta contrabass under the habanera; lofi gets the Dilla upright; downtempo the Bristol upright (sub-fence measured, holds at .867 over the .5 floor)\n\nHISTORY — prelude leads on a real harpsichord 2/3 of seeds (it is literally Bach; felt piano remains the alternate); newjack's DX7 FUNK CLAV fake replaced by the real clavinet; tango pads gain literal pizzicato marcato\n\nCAPABILITIES — vaporwave + mallsoft pads breathe through the mellotron tape-wow (the review's strongest call — the worn-VHS move on the genre that IS worn VHS)\n\nVerified: verify quick + full PASS, matrix 63/63, snare-law audit clean, press determinism byte-identical, fixture drift exactly the 9 touched genres.\n\n▶ Play it: Smoke Arithmetic → Habanera Tribunal → Food Court Eternity — the three genres this change names, as one path https://stellate.app/?genre=jazz&seed=7646&path=292.16891,139.12607,1679.4415&xdur=0.06\n\n3dc8fb0 https://github.com/aboard-io/stellate/commit/3dc8fb0ede9e958042beb03bdb5de7f71feff45e",
   "date_published": "2026-07-06T03:00:32.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jazz",
    "tango",
    "vaporwave",
    "voice"
   ]
  },
  {
   "id": "ca11cd8be51eb418e4e1358a3252399f931c545e",
   "url": "https://stellate.app/?genre=citypop&seed=9363&path=1530.6221,1405.21491&xdur=0.049",
   "external_url": "https://github.com/aboard-io/stellate/commit/ca11cd8be51eb418e4e1358a3252399f931c545e",
   "title": "Fix the building static: the media-element sink drifts — mobile-only now",
   "summary": "Paul: static builds over ~10 minutes, any genre, worse over time. The 13-15min instrumented soaks found it: the mobile background-audio route (master -> MediaStreamAudioDestinationNode -> <audio>) made the element THE output for every session, and the element's playback clock DRIFTS from the…",
   "content_html": "<p>Paul: static builds over ~10 minutes, any genre, worse over time. The 13-15min instrumented soaks found it: the mobile background-audio route (master -&gt; MediaStreamAudioDestinationNode -&gt; &lt;audio&gt;) made the element THE output for every session, and the element's playback clock DRIFTS from the…</p>\n<ul><li>Exonerated with the same soaks: the tb303 mono-voice param timeline (13min: 0 clicks, flat noise floor), fx_bus automation, heap, node counts — all flat.</li><li>The fix: the media-element route is now MOBILE-ONLY — it exists for iOS/Android screen-lock survival, which desktop never needed; desktop reverts to the classic analyser -&gt; ctx.destination path.</li><li>KNOWN FOLLOW-UP flagged honestly: mobile long sessions still carry the drifting sink; the fix there is periodic gapless recreation of the element/stream — queued separately.</li><li>faust/soak-run.js + soak.html join the standing harnesses (the class of bug no 30-second gate can see).</li></ul>\n<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=9363&amp;path=1530.6221,1405.21491&amp;xdur=0.049\">▶ Play it: Neon Fiscal Year → Titration Rapture — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/ca11cd8be51eb418e4e1358a3252399f931c545e\">ca11cd8</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: static builds over ~10 minutes, any genre, worse over time. The 13-15min instrumented soaks found it: the mobile background-audio route (master -> MediaStreamAudioDestinationNode -> <audio>) made the element THE output for every session, and the element's playback clock DRIFTS from the…\n\n• Exonerated with the same soaks: the tb303 mono-voice param timeline (13min: 0 clicks, flat noise floor), fx_bus automation, heap, node counts — all flat.\n\n• The fix: the media-element route is now MOBILE-ONLY — it exists for iOS/Android screen-lock survival, which desktop never needed; desktop reverts to the classic analyser -> ctx.destination path.\n\n• KNOWN FOLLOW-UP flagged honestly: mobile long sessions still carry the drifting sink; the fix there is periodic gapless recreation of the element/stream — queued separately.\n\n• faust/soak-run.js + soak.html join the standing harnesses (the class of bug no 30-second gate can see).\n\n▶ Play it: Neon Fiscal Year → Titration Rapture — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=citypop&seed=9363&path=1530.6221,1405.21491&xdur=0.049\n\nca11cd8 https://github.com/aboard-io/stellate/commit/ca11cd8be51eb418e4e1358a3252399f931c545e",
   "date_published": "2026-07-06T02:46:13.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "acidhouse",
    "bass"
   ]
  },
  {
   "id": "9b3e6ee4cfd830fa3cbf7807fd2d6651291c5b1f",
   "url": "https://stellate.app/?genre=jungle&seed=6100&path=1718.20526,1505.3720,1873.8827&xdur=0.045",
   "external_url": "https://github.com/aboard-io/stellate/commit/9b3e6ee4cfd830fa3cbf7807fd2d6651291c5b1f",
   "title": "The snare law: nothing repeats exactly more than twice, kernel-wide",
   "summary": "Paul: \"Snare patterns tend to repeat ad nauseum... filtered, delayed, manipulated, and the rhythm should change. Nothing should repeat exactly the same more than twice.",
   "content_html": "<p>Paul: &quot;Snare patterns tend to repeat ad nauseum... filtered, delayed, manipulated, and the rhythm should change. Nothing should repeat exactly the same more than twice.</p>\n<ul><li><strong>THE NO-THRICE RULE</strong> — each 8-beat kit cell's snare bar gets a compact signature (1/16-grid onsets + 3-level accent buckets; hats add the open flag).</li><li>FEEL-AWARE VOCABULARY via kit-family machineness: machine moves (hit drop, accent migration, on-grid sync shift, syncopation substitute</li><li>MEASURED PROPORTIONALITY, no new dimension: 176 snare fires across 315 states — blues/canawave/surfrock/jazz fire most (human moves)</li><li>Listen for: ghosts and drags creeping into the third bar of any settled blues/jazz groove; a backbeat that suddenly rings into the delay; mallsoft hat beds opening instead of looping.</li></ul>\n<p><em>Verified:</em> matrix 63/63 quick+full, NO rows re-measured; determinism double-renders byte-identical x2; snare-law-run.js joins the standing gates (315/315 clean, --quick/--stats)</p>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=6100&amp;path=1718.20526,1505.3720,1873.8827&amp;xdur=0.045\">▶ Play it: Barometric Stampede → Loon Referendum → Atrium Standing Wave — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/9b3e6ee4cfd830fa3cbf7807fd2d6651291c5b1f\">9b3e6ee</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"Snare patterns tend to repeat ad nauseum... filtered, delayed, manipulated, and the rhythm should change. Nothing should repeat exactly the same more than twice.\n\nTHE NO-THRICE RULE — each 8-beat kit cell's snare bar gets a compact signature (1/16-grid onsets + 3-level accent buckets; hats add the open flag).\n\n• FEEL-AWARE VOCABULARY via kit-family machineness: machine moves (hit drop, accent migration, on-grid sync shift, syncopation substitute\n\n• MEASURED PROPORTIONALITY, no new dimension: 176 snare fires across 315 states — blues/canawave/surfrock/jazz fire most (human moves)\n\n• Listen for: ghosts and drags creeping into the third bar of any settled blues/jazz groove; a backbeat that suddenly rings into the delay; mallsoft hat beds opening instead of looping.\n\nVerified: matrix 63/63 quick+full, NO rows re-measured; determinism double-renders byte-identical x2; snare-law-run.js joins the standing gates (315/315 clean, --quick/--stats)\n\n▶ Play it: Barometric Stampede → Loon Referendum → Atrium Standing Wave — the three genres this change names, as one path https://stellate.app/?genre=jungle&seed=6100&path=1718.20526,1505.3720,1873.8827&xdur=0.045\n\n9b3e6ee https://github.com/aboard-io/stellate/commit/9b3e6ee4cfd830fa3cbf7807fd2d6651291c5b1f",
   "date_published": "2026-07-06T02:27:05.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "canawave",
    "mallsoft",
    "found"
   ]
  },
  {
   "id": "f700285ad61c4e0a481fe07114271ffcb8a3c9e9",
   "url": "https://stellate.app/?genre=transitwave&seed=5682&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/f700285ad61c4e0a481fe07114271ffcb8a3c9e9",
   "title": "ALIEN BROADCAST: the video layer becomes an insane 80s TV station",
   "summary": "Paul: \"WAY glitchier and more surprising... all kinds of wackadoodle effects, often at random... an 80s TV station run by slightly insane alien AI intelligences.\" A chaos layer rides the 5 genre-family base grades: 21 weighted events, never twice in a row —",
   "content_html": "<p>Paul: &quot;WAY glitchier and more surprising... all kinds of wackadoodle effects, often at random... an 80s TV station run by slightly insane alien AI intelligences.&quot; A chaos layer rides the 5 genre-family base grades: 21 weighted events, never twice in a row —</p>\n<ul><li>analog decay (vertical-hold roll with overscan so never-black extends to never-black-edges, h-sync jolt volleys, tracking bands, chroma lurch, ghosting doubles, brightness pumping, invert/posterize blinks…</li><li>Scheduler: Poisson gaps over per-family base rates x a random-walk storm scalar (real bursts and lulls; glitch family 46.7 events/min, ambient 11.7 sparse-but-deeply-weird with weird-events biased 2.1x).</li></ul>\n<p><em>Verified:</em> 20 distinct events in a 3-min glitch session; 0 back-to-back repeats (fixed a pulse-path bypass); audio live smoke PASS with the chaos running</p>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=5682&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/f700285ad61c4e0a481fe07114271ffcb8a3c9e9\">f700285</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"WAY glitchier and more surprising... all kinds of wackadoodle effects, often at random... an 80s TV station run by slightly insane alien AI intelligences.\" A chaos layer rides the 5 genre-family base grades: 21 weighted events, never twice in a row —\n\n• analog decay (vertical-hold roll with overscan so never-black extends to never-black-edges, h-sync jolt volleys, tracking bands, chroma lurch, ghosting doubles, brightness pumping, invert/posterize blinks…\n\n• Scheduler: Poisson gaps over per-family base rates x a random-walk storm scalar (real bursts and lulls; glitch family 46.7 events/min, ambient 11.7 sparse-but-deeply-weird with weird-events biased 2.1x).\n\nVerified: 20 distinct events in a 3-min glitch session; 0 back-to-back repeats (fixed a pulse-path bypass); audio live smoke PASS with the chaos running\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=5682&path=749.12536,768.12569,730.12569&xdur=13.122\n\nf700285 https://github.com/aboard-io/stellate/commit/f700285ad61c4e0a481fe07114271ffcb8a3c9e9",
   "date_published": "2026-07-06T02:12:50.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "7969574915defb9feb07aba2e898c5d21fb1fa97",
   "url": "https://stellate.app/?genre=citypop&seed=4761&path=1530.6221,1832.7062,1691.14506&xdur=0.09",
   "external_url": "https://github.com/aboard-io/stellate/commit/7969574915defb9feb07aba2e898c5d21fb1fa97",
   "title": "Extract 11 FluidR3 instruments: the sampler-review batch",
   "summary": "The sampler review found the soundfont barely tapped (29 of 128 GM programs) and five of the incoming 30 fictional genres pointing at placeholder instruments.",
   "content_html": "<p>The sampler review found the soundfont barely tapped (29 of 128 GM programs) and five of the incoming 30 fictional genres pointing at placeholder instruments.</p>\n<ul><li>Tubular Bells REJECTED honestly: FluidR3 ships one C6 sample split across five keyranges with no root overrides — five byte-identical zone wavs (the DrawbarOrgan failure exactly)</li><li>Zone wavs on disk (gitignored, recoverable by this recipe); the SAMPLERS registry entries + genre pool repoints ride with the next kernel round (lock currently held by the snare-law crew).</li></ul>\n<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=4761&amp;path=1530.6221,1832.7062,1691.14506&amp;xdur=0.09\">▶ Play it: Neon Fiscal Year → Parfait Cosmonaut → Third Eye Turbine — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/7969574915defb9feb07aba2e898c5d21fb1fa97\">7969574</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The sampler review found the soundfont barely tapped (29 of 128 GM programs) and five of the incoming 30 fictional genres pointing at placeholder instruments.\n\n• Tubular Bells REJECTED honestly: FluidR3 ships one C6 sample split across five keyranges with no root overrides — five byte-identical zone wavs (the DrawbarOrgan failure exactly)\n\n• Zone wavs on disk (gitignored, recoverable by this recipe); the SAMPLERS registry entries + genre pool repoints ride with the next kernel round (lock currently held by the snare-law crew).\n\n▶ Play it: Neon Fiscal Year → Parfait Cosmonaut → Third Eye Turbine — the three genres this change names, as one path https://stellate.app/?genre=citypop&seed=4761&path=1530.6221,1832.7062,1691.14506&xdur=0.09\n\n7969574 https://github.com/aboard-io/stellate/commit/7969574915defb9feb07aba2e898c5d21fb1fa97",
   "date_published": "2026-07-06T01:54:09.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "shibuyakei",
    "psytrance",
    "sampler"
   ]
  },
  {
   "id": "535ad4b7595e8b6b749a783c90055aebb55c5182",
   "url": "https://stellate.app/?genre=sourdough&seed=6623&path=2141.12627,1276.5376&xdur=0.103",
   "external_url": "https://github.com/aboard-io/stellate/commit/535ad4b7595e8b6b749a783c90055aebb55c5182",
   "title": "30-genre commission materials: 95 samples across all signature crates",
   "summary": "The Phase B crates for the 30 fictional genres, everything recoverable by committed recipe (wavs gitignored as always):",
   "content_html": "<p>The Phase B crates for the 30 fictional genres, everything recoverable by committed recipe (wavs gitignored as always):</p>\n<ul><li>66 espeak speech (found/samples/speech/sp_*): the hold-music apology cast, the EULA reader, DMV window calls, elevator floors, survey prompts, the auctioneer chant, ATC read-backs, the umpire, the town crier…</li><li>16 synthesized one-shots (found/samples/hits/): DTMF digits FFT-verified to exact telephone frequencies, microwave beep, kitchen timer, gavel, handbell, degauss thump, CRT whine at the true 15734Hz NTSC…</li><li>13 beds (found/): 8 archive.org fetches with per-item license basis (NPS whale song PD, hydrophone, crickets, fermenting sourdough starter +15dB, dishwasher cycle, pigeon coo, chickadee, dryer spin) + 5…</li><li>Flags recorded in SOURCES.md: pigeon_coo (CC BY-SA 4.0) and dryer_spin (CC BY-SA 3.0) carry ShareAlike; chickadee needs attribution; lower-restriction alternatives noted if we'd rather not carry SA.</li></ul>\n<p><a href=\"https://stellate.app/?genre=sourdough&amp;seed=6623&amp;path=2141.12627,1276.5376&amp;xdur=0.103\">▶ Play it: Mother Culture Vigil → Magnetron Benediction — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/535ad4b7595e8b6b749a783c90055aebb55c5182\">535ad4b</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The Phase B crates for the 30 fictional genres, everything recoverable by committed recipe (wavs gitignored as always):\n\n• 66 espeak speech (found/samples/speech/sp_*): the hold-music apology cast, the EULA reader, DMV window calls, elevator floors, survey prompts, the auctioneer chant, ATC read-backs, the umpire, the town crier…\n\n• 16 synthesized one-shots (found/samples/hits/): DTMF digits FFT-verified to exact telephone frequencies, microwave beep, kitchen timer, gavel, handbell, degauss thump, CRT whine at the true 15734Hz NTSC…\n\n• 13 beds (found/): 8 archive.org fetches with per-item license basis (NPS whale song PD, hydrophone, crickets, fermenting sourdough starter +15dB, dishwasher cycle, pigeon coo, chickadee, dryer spin) + 5…\n\n• Flags recorded in SOURCES.md: pigeon_coo (CC BY-SA 4.0) and dryer_spin (CC BY-SA 3.0) carry ShareAlike; chickadee needs attribution; lower-restriction alternatives noted if we'd rather not carry SA.\n\n▶ Play it: Mother Culture Vigil → Magnetron Benediction — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=sourdough&seed=6623&path=2141.12627,1276.5376&xdur=0.103\n\n535ad4b https://github.com/aboard-io/stellate/commit/535ad4b7595e8b6b749a783c90055aebb55c5182",
   "date_published": "2026-07-06T01:45:36.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "sourdough",
    "microwave",
    "voice"
   ]
  },
  {
   "id": "528faf584bde6aa3686c4fff401a54109a7ff2e0",
   "url": "https://stellate.app/?genre=synthwave&seed=4248&path=859.9909,878.9942,840.9942&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/528faf584bde6aa3686c4fff401a54109a7ff2e0",
   "title": "Wire catalog tags into the clip pools — the new footage was unreachable",
   "summary": "Paul: \"I don't see anything new yet.\" Correct: the 97 sourced avant-garde/3D windows carry their genre tags in stream-catalog.json, but the live pool builder read only the kernel's GENRE_CLIPS table — the new clips were loaded, indexed, and never selectable.",
   "content_html": "<p>Paul: &quot;I don't see anything new yet.&quot; Correct: the 97 sourced avant-garde/3D windows carry their genre tags in stream-catalog.json, but the live pool builder read only the kernel's GENRE_CLIPS table — the new clips were loaded, indexed, and never selectable.</p>\n<p><a href=\"https://stellate.app/?genre=synthwave&amp;seed=4248&amp;path=859.9909,878.9942,840.9942&amp;xdur=13.122\">▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/528faf584bde6aa3686c4fff401a54109a7ff2e0\">528faf5</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"I don't see anything new yet.\" Correct: the 97 sourced avant-garde/3D windows carry their genre tags in stream-catalog.json, but the live pool builder read only the kernel's GENRE_CLIPS table — the new clips were loaded, indexed, and never selectable.\n\n▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration https://stellate.app/?genre=synthwave&seed=4248&path=859.9909,878.9942,840.9942&xdur=13.122\n\n528faf5 https://github.com/aboard-io/stellate/commit/528faf584bde6aa3686c4fff401a54109a7ff2e0",
   "date_published": "2026-07-06T01:29:50.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "synthwave",
    "synth"
   ]
  },
  {
   "id": "157d677b2deb220d943b490abf0940b1b6eed05d",
   "url": "https://stellate.app/?genre=synthwave&seed=1027&path=859.9909,878.9942,840.9942&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/157d677b2deb220d943b490abf0940b1b6eed05d",
   "title": "Initial load draws a grand tour: 10-16 waypoints, every leg short",
   "summary": "Paul: \"offer a much longer path with many shorter steps — it works best when traveling from one genre to another over the course of a single edge.\" The boot autoPath (previously 3 distant stars >=150px apart, a cross-chart jump) is now a greedy nearest-unvisited walk: 10-16 waypoints, every leg…",
   "content_html": "<p>Paul: &quot;offer a much longer path with many shorter steps — it works best when traveling from one genre to another over the course of a single edge.&quot; The boot autoPath (previously 3 distant stars &gt;=150px apart, a cross-chart jump) is now a greedy nearest-unvisited walk: 10-16 waypoints, every leg…</p>\n<p><em>Verified:</em> (faust/default-path-run.js, standing): shape + variety + real DOM-event edit checks + a two-leg-boundary ride with zero quiet bars and 0 errors. engine.test + live smoke PASS.</p>\n<p><a href=\"https://stellate.app/?genre=synthwave&amp;seed=1027&amp;path=859.9909,878.9942,840.9942&amp;xdur=13.122\">▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/157d677b2deb220d943b490abf0940b1b6eed05d\">157d677</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"offer a much longer path with many shorter steps — it works best when traveling from one genre to another over the course of a single edge.\" The boot autoPath (previously 3 distant stars >=150px apart, a cross-chart jump) is now a greedy nearest-unvisited walk: 10-16 waypoints, every leg…\n\nVerified: (faust/default-path-run.js, standing): shape + variety + real DOM-event edit checks + a two-leg-boundary ride with zero quiet bars and 0 errors. engine.test + live smoke PASS.\n\n▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration https://stellate.app/?genre=synthwave&seed=1027&path=859.9909,878.9942,840.9942&xdur=13.122\n\n157d677 https://github.com/aboard-io/stellate/commit/157d677b2deb220d943b490abf0940b1b6eed05d",
   "date_published": "2026-07-06T01:24:43.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "synthwave",
    "synth"
   ]
  },
  {
   "id": "a70611865ef06f2ff4ff762ea59375e773ac6c99",
   "url": "https://stellate.app/?genre=transitwave&seed=7774&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/a70611865ef06f2ff4ff762ea59375e773ac6c99",
   "title": "Prefetch gives remote streams the real window, not a 3.8s cap",
   "summary": "Re-verification finding: nextCand applied REMOTE_READY_MS (3.8s) even during a PREFETCH — the next clip starts loading a full 8-bar window early, but the timeout dropped it to local after 3.8s anyway, so a slow-but-reachable archive.org stream could never win, only fail earlier.",
   "content_html": "<p>Re-verification finding: nextCand applied REMOTE_READY_MS (3.8s) even during a PREFETCH — the next clip starts loading a full 8-bar window early, but the timeout dropped it to local after 3.8s anyway, so a slow-but-reachable archive.org stream could never win, only fail earlier.</p>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=7774&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/a70611865ef06f2ff4ff762ea59375e773ac6c99\">a706118</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Re-verification finding: nextCand applied REMOTE_READY_MS (3.8s) even during a PREFETCH — the next clip starts loading a full 8-bar window early, but the timeout dropped it to local after 3.8s anyway, so a slow-but-reachable archive.org stream could never win, only fail earlier.\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=7774&path=749.12536,768.12569,730.12569&xdur=13.122\n\na706118 https://github.com/aboard-io/stellate/commit/a70611865ef06f2ff4ff762ea59375e773ac6c99",
   "date_published": "2026-07-06T01:17:41.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "773f377a6d876d0fef106f899a6525768095d956",
   "url": "https://stellate.app/?genre=breakcore&seed=4674&path=1811.18518,1044.3292&xdur=0.049",
   "external_url": "https://github.com/aboard-io/stellate/commit/773f377a6d876d0fef106f899a6525768095d956",
   "title": "Video goes streaming: archive.org direct + browser effects + 8-bar cadence",
   "summary": "Paul's direction: stream straight from archive.org, let the browser do the processing, lighten the load, more avant-garde and 3D, eight measures per clip.",
   "content_html": "<p>Paul's direction: stream straight from archive.org, let the browser do the processing, lighten the load, more avant-garde and 3D, eight measures per clip.</p>\n<ul><li>stream-catalog.json (committed source): {base, clips:[{name, item, file, in, out, tags, credit, title}]} — cue windows into remote files, played as &lt;video&gt; src with #t seeks.</li><li>Clip advance rides the BAR CLOCK: every 8 measures, dominant-genre change the only off-cycle interrupt (fixed an order-sensitive poolKey bug that made every bar look like a pool change).</li><li>Effects moved from baked ffmpeg to live CSS/SVG, 5 genre-family looks (neon/vhs/dusty/glitch/clean; glitch = feDisplacementMap + RGB split for idm/darksynth/breakcore), eased on genre change.</li><li>Never-black law: next clip prebuffers a full 8-bar window; slow/ failed streams hold the current picture; local corpus demoted to optional cache/fallback (fetch scripts re-documented).</li></ul>\n<p><em>Verified:</em> 8-bar cadence exact; never-black under +4s throttle AND full archive.org block; 6 genre looks screenshotted distinct; audio load unaffected with glitch running; 0 console errors.</p>\n<p><a href=\"https://stellate.app/?genre=breakcore&amp;seed=4674&amp;path=1811.18518,1044.3292&amp;xdur=0.049\">▶ Play it: Shrapnel Lullaby → Apex Curfew — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/773f377a6d876d0fef106f899a6525768095d956\">773f377</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul's direction: stream straight from archive.org, let the browser do the processing, lighten the load, more avant-garde and 3D, eight measures per clip.\n\n• stream-catalog.json (committed source): {base, clips:[{name, item, file, in, out, tags, credit, title}]} — cue windows into remote files, played as <video> src with #t seeks.\n\n• Clip advance rides the BAR CLOCK: every 8 measures, dominant-genre change the only off-cycle interrupt (fixed an order-sensitive poolKey bug that made every bar look like a pool change).\n\n• Effects moved from baked ffmpeg to live CSS/SVG, 5 genre-family looks (neon/vhs/dusty/glitch/clean; glitch = feDisplacementMap + RGB split for idm/darksynth/breakcore), eased on genre change.\n\n• Never-black law: next clip prebuffers a full 8-bar window; slow/ failed streams hold the current picture; local corpus demoted to optional cache/fallback (fetch scripts re-documented).\n\nVerified: 8-bar cadence exact; never-black under +4s throttle AND full archive.org block; 6 genre looks screenshotted distinct; audio load unaffected with glitch running; 0 console errors.\n\n▶ Play it: Shrapnel Lullaby → Apex Curfew — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=breakcore&seed=4674&path=1811.18518,1044.3292&xdur=0.049\n\n773f377 https://github.com/aboard-io/stellate/commit/773f377a6d876d0fef106f899a6525768095d956",
   "date_published": "2026-07-06T01:11:17.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "breakcore",
    "darksynth",
    "found"
   ]
  },
  {
   "id": "284066f7a4783e4644456deb38f75beee6f4c893",
   "url": "https://stellate.app/?genre=triphop&seed=4303&path=388.8037,263.9071,586.10667&xdur=0.283",
   "external_url": "https://github.com/aboard-io/stellate/commit/284066f7a4783e4644456deb38f75beee6f4c893",
   "title": "Halve the drags + tape wobble; CPU budget in the vector realization",
   "summary": "PART A — all six pushPull anchors halved (lofi/triphop bass .03->.015 hat -.01->-.005, downtempo .022/.014->.011/.007, blues .03/.02-> .015/.01, jazz .03->.015, bossanova .02->.01)",
   "content_html": "<ul><li><strong>PART A</strong> — all six pushPull anchors halved (lofi/triphop bass .03-&gt;.015 hat -.01-&gt;-.005, downtempo .022/.014-&gt;.011/.007, blues .03/.02-&gt; .015/.01, jazz .03-&gt;.015, bossanova .02-&gt;.01)</li><li>PART B — CPU budgeting where the vectors are realized. Measured per-module cost table (8s offline renders, min-of-3, pad_saw=1.0) stored as COST in state-engine</li></ul>\n<p><em>Verified:</em> verify quick PASS, live smoke PASS (0.971, 0 errors), macro-live PASS, worst-case under budget. journey-crash-run's ~5.6min headless render dies identically on the stashed baseline</p>\n<p><a href=\"https://stellate.app/?genre=triphop&amp;seed=4303&amp;path=388.8037,263.9071,586.10667&amp;xdur=0.283\">▶ Play it: Inclement Surveillance → Dust Census → Benthic Patience — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/284066f7a4783e4644456deb38f75beee6f4c893\">284066f</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "PART A — all six pushPull anchors halved (lofi/triphop bass .03->.015 hat -.01->-.005, downtempo .022/.014->.011/.007, blues .03/.02-> .015/.01, jazz .03->.015, bossanova .02->.01)\n\n• PART B — CPU budgeting where the vectors are realized. Measured per-module cost table (8s offline renders, min-of-3, pad_saw=1.0) stored as COST in state-engine\n\nVerified: verify quick PASS, live smoke PASS (0.971, 0 errors), macro-live PASS, worst-case under budget. journey-crash-run's ~5.6min headless render dies identically on the stashed baseline\n\n▶ Play it: Inclement Surveillance → Dust Census → Benthic Patience — the three genres this change names, as one path https://stellate.app/?genre=triphop&seed=4303&path=388.8037,263.9071,586.10667&xdur=0.283\n\n284066f https://github.com/aboard-io/stellate/commit/284066f7a4783e4644456deb38f75beee6f4c893",
   "date_published": "2026-07-04T18:30:06.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "triphop",
    "lofi",
    "downtempo",
    "melody"
   ]
  },
  {
   "id": "792dcbe663613cc33fd9c0db0ef90e6d74e756f6",
   "url": "https://stellate.app/?genre=neoclassical&seed=8454&path=859.2784,1718.20526&xdur=0.042",
   "external_url": "https://github.com/aboard-io/stellate/commit/792dcbe663613cc33fd9c0db0ef90e6d74e756f6",
   "title": "Fix the journey wedge; 4-bar instrument hold; bass -25% global",
   "summary": "Paul's ride (blues -> tango -> neoclassical): half a measure of guitar, silence, then the whole song stops. Three interlocking causes, all fixed:",
   "content_html": "<p>Paul's ride (blues -&gt; tango -&gt; neoclassical): half a measure of guitar, silence, then the whole song stops. Three interlocking causes, all fixed:</p>\n<ul><li>1. THE WEDGE: any throw inside injectChord (a voice module failing to instantiate under load, a bad param time) escaped before nextTime/serial advanced</li><li>2. THE HALF-MEASURE GUITAR: continuous blend weights re-pick the dominant genre every bar, so the flip queue swapped the sampler lead in and out within a measure</li><li>3. BASS_TRIM=0.75 at the single bass-level realization point (Paul: &quot;lower the bass 25% everywhere&quot;) — all 63 genres, press + live, relative balances preserved.</li></ul>\n<p><em>Verified:</em> the exact ride passes (0 errors, never silent, tango's nylon/bandoneon lead full sections, flip minGap 4 bars); hold + wedge + macro + live smokes all PASS.</p>\n<p><a href=\"https://stellate.app/?genre=neoclassical&amp;seed=8454&amp;path=859.2784,1718.20526&amp;xdur=0.042\">▶ Play it: Requiem Appendix → Barometric Stampede — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/792dcbe663613cc33fd9c0db0ef90e6d74e756f6\">792dcbe</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul's ride (blues -> tango -> neoclassical): half a measure of guitar, silence, then the whole song stops. Three interlocking causes, all fixed:\n\n• 1. THE WEDGE: any throw inside injectChord (a voice module failing to instantiate under load, a bad param time) escaped before nextTime/serial advanced\n\n• 2. THE HALF-MEASURE GUITAR: continuous blend weights re-pick the dominant genre every bar, so the flip queue swapped the sampler lead in and out within a measure\n\n• 3. BASS_TRIM=0.75 at the single bass-level realization point (Paul: \"lower the bass 25% everywhere\") — all 63 genres, press + live, relative balances preserved.\n\nVerified: the exact ride passes (0 errors, never silent, tango's nylon/bandoneon lead full sections, flip minGap 4 bars); hold + wedge + macro + live smokes all PASS.\n\n▶ Play it: Requiem Appendix → Barometric Stampede — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=neoclassical&seed=8454&path=859.2784,1718.20526&xdur=0.042\n\n792dcbe https://github.com/aboard-io/stellate/commit/792dcbe663613cc33fd9c0db0ef90e6d74e756f6",
   "date_published": "2026-07-04T17:57:02.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "neoclassical",
    "jungle",
    "sampler"
   ]
  },
  {
   "id": "a2cf4a17a723a604f60a085b9e36c0eadef873c5",
   "url": "https://stellate.app/?genre=spokenword&seed=3911&path=196.11721,215.11754,177.11754&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/a2cf4a17a723a604f60a085b9e36c0eadef873c5",
   "title": "Macro sliders: eight global axes bend every vector at once",
   "summary": "Paul's desk: acoustic<->synthesized, simple<->layered, dusty<->clean, dry<->drenched, dark<->bright, tight<->loose, calm<->intense, instrumental<->vocal. (sad<->happy dropped by request.)",
   "content_html": "<p>Paul's desk: acoustic&lt;-&gt;synthesized, simple&lt;-&gt;layered, dusty&lt;-&gt;clean, dry&lt;-&gt;drenched, dark&lt;-&gt;bright, tight&lt;-&gt;loose, calm&lt;-&gt;intense, instrumental&lt;-&gt;vocal. (sad&lt;-&gt;happy dropped by request.)</p>\n<ul><li>Architecture at the keyOffset altitude: opts.macros {-1..+1 each, absent/0 = no-op} is a pure-arithmetic post-resolution transform in applyMacros, run at the top of toState (so the energy bpm nudge flows into…</li><li>Mappings ride existing state fields (no engine changes needed): acoustic biases crackle/humanize/detune/voices and at |A|&gt;=0.6 does a curated model swap between the synth fleet and the acoustic family</li><li><strong>UI</strong> — a MACROS section in the controls popup — eight center-detented sliders with pole labels in the site chrome, reset button, persisted in __S, applied through the same retarget/glide path as a genre move so…</li></ul>\n<p><em>Verified:</em> (the proportional set): fixtures 1047/1047 at neutral; verify quick PASS; press determinism double-renders md5-identical at two non-neutral settings; spot renders</p>\n<p><a href=\"https://stellate.app/?genre=spokenword&amp;seed=3911&amp;path=196.11721,215.11754,177.11754&amp;xdur=13.122\">▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/a2cf4a17a723a604f60a085b9e36c0eadef873c5\">a2cf4a1</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul's desk: acoustic<->synthesized, simple<->layered, dusty<->clean, dry<->drenched, dark<->bright, tight<->loose, calm<->intense, instrumental<->vocal. (sad<->happy dropped by request.)\n\n• Architecture at the keyOffset altitude: opts.macros {-1..+1 each, absent/0 = no-op} is a pure-arithmetic post-resolution transform in applyMacros, run at the top of toState (so the energy bpm nudge flows into…\n\n• Mappings ride existing state fields (no engine changes needed): acoustic biases crackle/humanize/detune/voices and at |A|>=0.6 does a curated model swap between the synth fleet and the acoustic family\n\nUI — a MACROS section in the controls popup — eight center-detented sliders with pole labels in the site chrome, reset button, persisted in __S, applied through the same retarget/glide path as a genre move so…\n\nVerified: (the proportional set): fixtures 1047/1047 at neutral; verify quick PASS; press determinism double-renders md5-identical at two non-neutral settings; spot renders\n\n▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices https://stellate.app/?genre=spokenword&seed=3911&path=196.11721,215.11754,177.11754&xdur=13.122\n\na2cf4a1 https://github.com/aboard-io/stellate/commit/a2cf4a17a723a604f60a085b9e36c0eadef873c5",
   "date_published": "2026-07-04T16:48:43.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "spokenword",
    "voice"
   ]
  },
  {
   "id": "281d013799e697e52819d4dfebe785b1cc02e66d",
   "url": "https://stellate.app/?genre=vaporwave&seed=6495&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/281d013799e697e52819d4dfebe785b1cc02e66d",
   "title": "Mobile background audio: media-element output + lock-screen controls",
   "summary": "Paul: keep audio playing when the screen blanks. A bare WebAudio graph is silenced on mobile screen-lock; a PLAYING media element is kept alive as media playback.",
   "content_html": "<p>Paul: keep audio playing when the screen blanks. A bare WebAudio graph is silenced on mobile screen-lock; a PLAYING media element is kept alive as media playback.</p>\n<ul><li>Media Session: lock screen shows the current genre (or &quot;a + b&quot; when the second blend weight rides above 25%, mirroring the chyron) by CONSTELLATE, updated on genre change via onBar</li></ul>\n<p><em>Verified:</em> live-test-run PASS through the element route (load 0.988, 0 errors); dedicated headless verify</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=6495&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — the brightest, most processed corner of the space</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/281d013799e697e52819d4dfebe785b1cc02e66d\">281d013</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: keep audio playing when the screen blanks. A bare WebAudio graph is silenced on mobile screen-lock; a PLAYING media element is kept alive as media playback.\n\n• Media Session: lock screen shows the current genre (or \"a + b\" when the second blend weight rides above 25%, mirroring the chyron) by CONSTELLATE, updated on genre change via onBar\n\nVerified: live-test-run PASS through the element route (load 0.988, 0 errors); dedicated headless verify\n\n▶ Play it: Food Court Eternity — the brightest, most processed corner of the space https://stellate.app/?genre=vaporwave&seed=6495&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\n281d013 https://github.com/aboard-io/stellate/commit/281d013799e697e52819d4dfebe785b1cc02e66d",
   "date_published": "2026-07-04T16:32:57.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "mix"
   ]
  },
  {
   "id": "90bf6a63194a69ffef4ba2006c2b76b8a7dbc755",
   "url": "https://stellate.app/?genre=gabber&seed=3715&path=1809.17533,1811.18518&xdur=0.761",
   "external_url": "https://github.com/aboard-io/stellate/commit/90bf6a63194a69ffef4ba2006c2b76b8a7dbc755",
   "title": "Simplify pass over the 2026-07-04 session (12 findings applied)",
   "summary": "Four parallel reviewers (reuse/simplification/efficiency/altitude) audited b340b6f..HEAD; all twelve surviving findings applied under the byte-stability law (fixtures 1047-stable except one justified drift):",
   "content_html": "<p>Four parallel reviewers (reuse/simplification/efficiency/altitude) audited b340b6f..HEAD; all twelve surviving findings applied under the byte-stability law (fixtures 1047-stable except one justified drift):</p>\n<ul><li>state-engine mp() param-reader: 101 clamp-idiom sites collapsed across the fleet/tb303/mellotron cases (||-semantics and cross-derived keys deliberately untouched)</li><li>resolveMulti: the pure-copy dominant-parent dims (sampleEvents/ reverbColor/autoTune/masterComp/introMode) collapsed to one registry loop over one hoisted top; vestigial empty NO_AUTO_GENRE set deleted.</li><li>csd-engine matchSec regex compiled per-spec, not per-section.</li><li>genre-verifier exports scoreRow; genre-tool imports it instead of carrying a copy of the scoring formula (matrix stdout diffed byte-identical)</li></ul>\n<p><em>Verified:</em> verify.sh quick + full PASS; live smoke PASS (0.986, balance green); press determinism and djMix output md5-identical through the WAV refactor.</p>\n<p><a href=\"https://stellate.app/?genre=gabber&amp;seed=3715&amp;path=1809.17533,1811.18518&amp;xdur=0.761\">▶ Play it: Jackhammer Communion → Shrapnel Lullaby — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/90bf6a63194a69ffef4ba2006c2b76b8a7dbc755\">90bf6a6</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Four parallel reviewers (reuse/simplification/efficiency/altitude) audited b340b6f..HEAD; all twelve surviving findings applied under the byte-stability law (fixtures 1047-stable except one justified drift):\n\n• state-engine mp() param-reader: 101 clamp-idiom sites collapsed across the fleet/tb303/mellotron cases (||-semantics and cross-derived keys deliberately untouched)\n\n• resolveMulti: the pure-copy dominant-parent dims (sampleEvents/ reverbColor/autoTune/masterComp/introMode) collapsed to one registry loop over one hoisted top; vestigial empty NO_AUTO_GENRE set deleted.\n\n• csd-engine matchSec regex compiled per-spec, not per-section.\n\n• genre-verifier exports scoreRow; genre-tool imports it instead of carrying a copy of the scoring formula (matrix stdout diffed byte-identical)\n\nVerified: verify.sh quick + full PASS; live smoke PASS (0.986, balance green); press determinism and djMix output md5-identical through the WAV refactor.\n\n▶ Play it: Jackhammer Communion → Shrapnel Lullaby — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=gabber&seed=3715&path=1809.17533,1811.18518&xdur=0.761\n\n90bf6a6 https://github.com/aboard-io/stellate/commit/90bf6a63194a69ffef4ba2006c2b76b8a7dbc755",
   "date_published": "2026-07-04T16:24:35.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "gabber",
    "breakcore",
    "harmony"
   ]
  },
  {
   "id": "149c9aa7d6e5de15d55faa81cc2bdb3833fe32a8",
   "url": "https://stellate.app/?genre=vaporwave&seed=1527&path=1679.4415,2097.8214,639.7941&xdur=0.167",
   "external_url": "https://github.com/aboard-io/stellate/commit/149c9aa7d6e5de15d55faa81cc2bdb3833fe32a8",
   "title": "Install the full effects audit: 24 items across 27 genres",
   "summary": "Paul approved every tier (\"these are all great, apply them\"); all applied with genre-true values, one scaled back with reason (krautrock mellotron needs a pad-pool change first — its pad is organ-dominant, nothing for the flag to bite).",
   "content_html": "<p>Paul approved every tier (&quot;these are all great, apply them&quot;); all applied with genre-true values, one scaled back with reason (krautrock mellotron needs a pad-pool change first — its pad is organ-dominant, nothing for the flag to bite).</p>\n<ul><li>Tier A: disco dattorro (the Sigma Sound plate), dub spring (King Tubby's BX20) + Perry phaser on the skank, psytrance morning-lead phaser, lofi/triphop Dilla drag (pushPull bass +.03 hat -.01).</li><li>Firing-rate fix the smoke check caught: surfrock's defining tremolo fired 0/16 — the sampled steel-string lead skips inserts.</li><li>Soft-top re-fence (the one matrix-visible piece), measured: VHS muffle on vaporwave [9-13k], two-storefronts on mallsoft [6-9k], wire-recorder band on chinawave, shortwave band on sovietwave.</li></ul>\n<p><em>Verified:</em> verify.sh quick + full PASS; matrix 63/63 before and after; net new dominance losses 0; only 3 rows moved +-1 (rng drift from their own new inserts).</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=1527&amp;path=1679.4415,2097.8214,639.7941&amp;xdur=0.167\">▶ Play it: Food Court Eternity → Harvest Quota Anthem → Cosmodrome Lullaby — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/149c9aa7d6e5de15d55faa81cc2bdb3833fe32a8\">149c9aa</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul approved every tier (\"these are all great, apply them\"); all applied with genre-true values, one scaled back with reason (krautrock mellotron needs a pad-pool change first — its pad is organ-dominant, nothing for the flag to bite).\n\n• Tier A: disco dattorro (the Sigma Sound plate), dub spring (King Tubby's BX20) + Perry phaser on the skank, psytrance morning-lead phaser, lofi/triphop Dilla drag (pushPull bass +.03 hat -.01).\n\n• Firing-rate fix the smoke check caught: surfrock's defining tremolo fired 0/16 — the sampled steel-string lead skips inserts.\n\n• Soft-top re-fence (the one matrix-visible piece), measured: VHS muffle on vaporwave [9-13k], two-storefronts on mallsoft [6-9k], wire-recorder band on chinawave, shortwave band on sovietwave.\n\nVerified: verify.sh quick + full PASS; matrix 63/63 before and after; net new dominance losses 0; only 3 rows moved +-1 (rng drift from their own new inserts).\n\n▶ Play it: Food Court Eternity → Harvest Quota Anthem → Cosmodrome Lullaby — the three genres this change names, as one path https://stellate.app/?genre=vaporwave&seed=1527&path=1679.4415,2097.8214,639.7941&xdur=0.167\n\n149c9aa https://github.com/aboard-io/stellate/commit/149c9aa7d6e5de15d55faa81cc2bdb3833fe32a8",
   "date_published": "2026-07-04T15:29:00.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "chinawave",
    "sovietwave",
    "harmony"
   ]
  },
  {
   "id": "a25ee61a6079095fde01a94c2c61771f7936342a",
   "url": "https://stellate.app/?genre=lofi&seed=9282&path=263.9071,1530.6221,1811.18518&xdur=0.06",
   "external_url": "https://github.com/aboard-io/stellate/commit/a25ee61a6079095fde01a94c2c61771f7936342a",
   "title": "DJ-mix seams: journeys and playlists mix like a set, not a CD",
   "summary": "Paul: \"songs should mix together like a DJ mix, not stop and start.\" The journey/playlist driver now emits a continuous DJ-mixed journey.mp3 (per-track mp3s + mix page unchanged).",
   "content_html": "<p>Paul: &quot;songs should mix together like a DJ mix, not stop and start.&quot; The journey/playlist driver now emits a continuous DJ-mixed journey.mp3 (per-track mp3s + mix page unchanged).</p>\n<ul><li>Alignment: the incoming track's beat 0 lands sample-accurately on an outgoing bar downbeat.</li><li>Blend: equal-power cos/sin crossfade. Gap &lt;= 8 bpm: 4-bar window with the outgoing tail VARISPED to the incoming tempo (the turntable pitch-nudge; build-time bpm ramps need a kernel time-model change</li><li>The DJ slam: introMode:&quot;off&quot; incoming (gabber/breakcore) or gap &gt; 40 = hard cut on the downbeat.</li><li>Streaming overlap-add (one track in memory + the seam tail), so hours-long journeys stay flat in RAM. press.js untouched; renderState split into pressState + encodeMp3 in the driver.</li></ul>\n<p><em>Verified:</em> playlist lofi-&gt;citypop-&gt;breakcore seed 5, measured on the lossless mix: seam 1 opens at exactly lofi bar 62.00, 2.00-bar overlap, smooth RMS through the boundary</p>\n<p><a href=\"https://stellate.app/?genre=lofi&amp;seed=9282&amp;path=263.9071,1530.6221,1811.18518&amp;xdur=0.06\">▶ Play it: Dust Census → Neon Fiscal Year → Shrapnel Lullaby — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/a25ee61a6079095fde01a94c2c61771f7936342a\">a25ee61</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"songs should mix together like a DJ mix, not stop and start.\" The journey/playlist driver now emits a continuous DJ-mixed journey.mp3 (per-track mp3s + mix page unchanged).\n\n• Alignment: the incoming track's beat 0 lands sample-accurately on an outgoing bar downbeat.\n\n• Blend: equal-power cos/sin crossfade. Gap <= 8 bpm: 4-bar window with the outgoing tail VARISPED to the incoming tempo (the turntable pitch-nudge; build-time bpm ramps need a kernel time-model change\n\n• The DJ slam: introMode:\"off\" incoming (gabber/breakcore) or gap > 40 = hard cut on the downbeat.\n\n• Streaming overlap-add (one track in memory + the seam tail), so hours-long journeys stay flat in RAM. press.js untouched; renderState split into pressState + encodeMp3 in the driver.\n\nVerified: playlist lofi->citypop->breakcore seed 5, measured on the lossless mix: seam 1 opens at exactly lofi bar 62.00, 2.00-bar overlap, smooth RMS through the boundary\n\n▶ Play it: Dust Census → Neon Fiscal Year → Shrapnel Lullaby — the three genres this change names, as one path https://stellate.app/?genre=lofi&seed=9282&path=263.9071,1530.6221,1811.18518&xdur=0.06\n\na25ee61 https://github.com/aboard-io/stellate/commit/a25ee61a6079095fde01a94c2c61771f7936342a",
   "date_published": "2026-07-04T14:47:27.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "lofi",
    "citypop",
    "breakcore",
    "harmony"
   ]
  },
  {
   "id": "160b9d97a2ab355fd028f991d1dec149cc4ac124",
   "url": "https://stellate.app/?genre=surfrock&seed=5991&path=1315.6181,1334.6214,1296.6214&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/160b9d97a2ab355fd028f991d1dec149cc4ac124",
   "title": "insert_tremolo: the missing surf/exotica amplitude modulation",
   "summary": "The effects audit found two defining effects absent for infrastructure reasons: surf rock's Fender-amp tremolo and exotica's vibraphone fan. One module serves both",
   "content_html": "<p>The effects audit found two defining effects absent for infrastructure reasons: surf rock's Fender-amp tremolo and exotica's vibraphone fan. One module serves both</p>\n<ul><li>Probe-verified: bypass bit-identical (maxAbsDiff 0); envelope peak-to-peak 0.7000 at depth 0.7, DFT locked to the LFO rate (14x over neighbors)</li><li>NOT yet wired: the apply round adds the insertChain case, manifest entry, prewarm-list entry, and the surfrock/exotica recipes (spec in the round report).</li></ul>\n<p><a href=\"https://stellate.app/?genre=surfrock&amp;seed=5991&amp;path=1315.6181,1334.6214,1296.6214&amp;xdur=13.122\">▶ Play it: Undertow Sock Hop — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/160b9d97a2ab355fd028f991d1dec149cc4ac124\">160b9d9</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The effects audit found two defining effects absent for infrastructure reasons: surf rock's Fender-amp tremolo and exotica's vibraphone fan. One module serves both\n\n• Probe-verified: bypass bit-identical (maxAbsDiff 0); envelope peak-to-peak 0.7000 at depth 0.7, DFT locked to the LFO rate (14x over neighbors)\n\n• NOT yet wired: the apply round adds the insertChain case, manifest entry, prewarm-list entry, and the surfrock/exotica recipes (spec in the round report).\n\n▶ Play it: Undertow Sock Hop — parked on the genre this change names https://stellate.app/?genre=surfrock&seed=5991&path=1315.6181,1334.6214,1296.6214&xdur=13.122\n\n160b9d9 https://github.com/aboard-io/stellate/commit/160b9d97a2ab355fd028f991d1dec149cc4ac124",
   "date_published": "2026-07-04T14:44:23.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "surfrock",
    "harmony"
   ]
  },
  {
   "id": "34f9778bc8602229fc0e63af4dc66080841ae9cd",
   "url": "https://stellate.app/?genre=lofi&seed=6299&path=263.9071,749.12558,388.8037&xdur=0.165",
   "external_url": "https://github.com/aboard-io/stellate/commit/34f9778bc8602229fc0e63af4dc66080841ae9cd",
   "title": "Ear notes: liberal snare ping-pong + bass warmth",
   "summary": "Paul: \"genres like lofi used to use ping pong delay more liberally — nice for the snare\" + \"bass could be less synthy, a little distortion or chorus.\" Investigated first: git log -S snarePP shows ONE commit ever (its v3 birth on transitwave) — lofi never had it.",
   "content_html": "<p>Paul: &quot;genres like lofi used to use ping pong delay more liberally — nice for the snare&quot; + &quot;bass could be less synthy, a little distortion or chorus.&quot; Investigated first: git log -S snarePP shows ONE commit ever (its v3 birth on transitwave) — lofi never had it.</p>\n<ul><li>snarePP: the throw loop now scales liberality with the send — &gt;= .65 gets &gt;=2-beat spacing at prob .82 (most backbeats echo, the dusty smear)</li><li>Bass: soft insert_distort (cubicnl saturation, drive .09-.22, mix .3-.6 — adds upper harmonics, keeps the fundamental) on lofi/ triphop/downtempo (deep sub stays deep; a chorus would comb-hollow it)</li></ul>\n<p><em>Verified:</em> verify.sh quick + full PASS; margins byte-identical for all five touched-or-adjacent genres; fixture drift exactly the 4 touched genres (57 hashes), transitwave + 59 others byte-stable</p>\n<p><a href=\"https://stellate.app/?genre=lofi&amp;seed=6299&amp;path=263.9071,749.12558,388.8037&amp;xdur=0.165\">▶ Play it: Dust Census → Rail Replacement Rapture → Inclement Surveillance — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/34f9778bc8602229fc0e63af4dc66080841ae9cd\">34f9778</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"genres like lofi used to use ping pong delay more liberally — nice for the snare\" + \"bass could be less synthy, a little distortion or chorus.\" Investigated first: git log -S snarePP shows ONE commit ever (its v3 birth on transitwave) — lofi never had it.\n\n• snarePP: the throw loop now scales liberality with the send — >= .65 gets >=2-beat spacing at prob .82 (most backbeats echo, the dusty smear)\n\n• Bass: soft insert_distort (cubicnl saturation, drive .09-.22, mix .3-.6 — adds upper harmonics, keeps the fundamental) on lofi/ triphop/downtempo (deep sub stays deep; a chorus would comb-hollow it)\n\nVerified: verify.sh quick + full PASS; margins byte-identical for all five touched-or-adjacent genres; fixture drift exactly the 4 touched genres (57 hashes), transitwave + 59 others byte-stable\n\n▶ Play it: Dust Census → Rail Replacement Rapture → Inclement Surveillance — the three genres this change names, as one path https://stellate.app/?genre=lofi&seed=6299&path=263.9071,749.12558,388.8037&xdur=0.165\n\n34f9778 https://github.com/aboard-io/stellate/commit/34f9778bc8602229fc0e63af4dc66080841ae9cd",
   "date_published": "2026-07-04T14:24:56.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "lofi",
    "transitwave",
    "triphop",
    "harmony"
   ]
  },
  {
   "id": "82bb1d55f840b7f4f363b1e96edbe5a29e8077e6",
   "url": "https://stellate.app/?genre=lofi&seed=1821&path=263.9049,282.9082,244.9082&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/82bb1d55f840b7f4f363b1e96edbe5a29e8077e6",
   "title": "Two-tier module prewarm: kill the genre-entry hitch cheaply",
   "summary": "The 2026-07-04 regression hunt (Paul: \"rendering crackles have returned\" + \"the scheduler seems slightly off\") found NO engine regression",
   "content_html": "<p>The 2026-07-04 regression hunt (Paul: &quot;rendering crackles have returned&quot; + &quot;the scheduler seems slightly off&quot;) found NO engine regression</p>\n<ul><li>Fix, measured into shape: full-node-prewarming the heavy voices tanked the load gate (0.987 -&gt; 0.82-0.87</li><li>Vinyl crackle on high-crackle genres (lofi .52, blues .36) renders at exactly the fixed level by design — if it reads too hot by ear, the knob is fx_bus.dsp:55, a deliberate re-voicing not a repair.</li></ul>\n<p><a href=\"https://stellate.app/?genre=lofi&amp;seed=1821&amp;path=263.9049,282.9082,244.9082&amp;xdur=13.122\">▶ Play it: Dust Census — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/82bb1d55f840b7f4f363b1e96edbe5a29e8077e6\">82bb1d5</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The 2026-07-04 regression hunt (Paul: \"rendering crackles have returned\" + \"the scheduler seems slightly off\") found NO engine regression\n\n• Fix, measured into shape: full-node-prewarming the heavy voices tanked the load gate (0.987 -> 0.82-0.87\n\n• Vinyl crackle on high-crackle genres (lofi .52, blues .36) renders at exactly the fixed level by design — if it reads too hot by ear, the knob is fx_bus.dsp:55, a deliberate re-voicing not a repair.\n\n▶ Play it: Dust Census — parked on the genre this change names https://stellate.app/?genre=lofi&seed=1821&path=263.9049,282.9082,244.9082&xdur=13.122\n\n82bb1d5 https://github.com/aboard-io/stellate/commit/82bb1d55f840b7f4f363b1e96edbe5a29e8077e6",
   "date_published": "2026-07-04T13:52:30.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "lofi",
    "mix"
   ]
  },
  {
   "id": "decc5430e5de71203263ed77bda3555875c0df0c",
   "url": "https://stellate.app/?genre=hogcore&seed=8848&path=1670.17099,1718.20526,388.8037&xdur=0.06",
   "external_url": "https://github.com/aboard-io/stellate/commit/decc5430e5de71203263ed77bda3555875c0df0c",
   "title": "Explorer: six UI items + genre-tool learns the star chart",
   "summary": "Paul's batch, all headless-verified with 0 console errors:",
   "content_html": "<p>Paul's batch, all headless-verified with 0 console errors:</p>\n<ul><li>1. Zoomed edge-reach FIXED: PAN_PAD was screen-space but far too small (0.18 let an edge star reach only 18% in from the rim). 0.55 lets every corner star reach dead center</li><li>genre-tool.js: create now REQUIRES spec.pos [x,y] and splices it into explorer.html's new /* genre-tool:positions */ block</li></ul>\n<p><em>Verified:</em> live smoke PASS (load 0.987, balance 0.936, 0 errors); verify.sh PASS; genre-tool check hogcore self 100 unchanged.</p>\n<p><a href=\"https://stellate.app/?genre=hogcore&amp;seed=8848&amp;path=1670.17099,1718.20526,388.8037&amp;xdur=0.06\">▶ Play it: Perihelion Squeal → Barometric Stampede → Inclement Surveillance — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/decc5430e5de71203263ed77bda3555875c0df0c\">decc543</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul's batch, all headless-verified with 0 console errors:\n\n• 1. Zoomed edge-reach FIXED: PAN_PAD was screen-space but far too small (0.18 let an edge star reach only 18% in from the rim). 0.55 lets every corner star reach dead center\n\n• genre-tool.js: create now REQUIRES spec.pos [x,y] and splices it into explorer.html's new /* genre-tool:positions */ block\n\nVerified: live smoke PASS (load 0.987, balance 0.936, 0 errors); verify.sh PASS; genre-tool check hogcore self 100 unchanged.\n\n▶ Play it: Perihelion Squeal → Barometric Stampede → Inclement Surveillance — the three genres this change names, as one path https://stellate.app/?genre=hogcore&seed=8848&path=1670.17099,1718.20526,388.8037&xdur=0.06\n\ndecc543 https://github.com/aboard-io/stellate/commit/decc5430e5de71203263ed77bda3555875c0df0c",
   "date_published": "2026-07-04T13:46:19.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "hogcore",
    "jungle",
    "triphop",
    "meter"
   ]
  },
  {
   "id": "95b062d3db5a321b0131b4e076e98c22c4e43e35",
   "url": "https://stellate.app/?genre=hogcore&seed=5819&path=1670.17099,1285.14089,749.12558&xdur=0.161",
   "external_url": "https://github.com/aboard-io/stellate/commit/95b062d3db5a321b0131b4e076e98c22c4e43e35",
   "title": "Hogcore: every name declares \"is trans\" + two quick-gate repairs",
   "summary": "THE GENRE — all 24 espeak cast voices regenerated as full phrases (\"Hermione Granger is trans\", \"Severus Snape is trans\", ...) — same per-character voice/pitch/speed, the cast stays the cast",
   "content_html": "<ul><li><strong>THE GENRE</strong> — all 24 espeak cast voices regenerated as full phrases (&quot;Hermione Granger is trans&quot;, &quot;Severus Snape is trans&quot;, ...) — same per-character voice/pitch/speed, the cast stays the cast</li><li>REPAIR 1 — quick-gate dominance FAIL (latent since d4b1671): witchhouse &quot;loses to dub&quot; was a tie-break artifact</li><li>REPAIR 2 — validate gate 6 emitted 30 stale &quot;unknown form&quot; warnings: its form check source-scraped the retired if/else chain. genre-kernel now exports FORM_NAMES from the FORMS table</li></ul>\n<p><em>Verified:</em> verify.sh --no-cache PASS and --full --no-cache PASS. Fixtures re-blessed: witchhouse s2/s5 + hogcore s1-5 only, 1047/1047 stable.</p>\n<p><a href=\"https://stellate.app/?genre=hogcore&amp;seed=5819&amp;path=1670.17099,1285.14089,749.12558&amp;xdur=0.161\">▶ Play it: Perihelion Squeal → Chandelier Drowning → Rail Replacement Rapture — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/95b062d3db5a321b0131b4e076e98c22c4e43e35\">95b062d</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "THE GENRE — all 24 espeak cast voices regenerated as full phrases (\"Hermione Granger is trans\", \"Severus Snape is trans\", ...) — same per-character voice/pitch/speed, the cast stays the cast\n\n• REPAIR 1 — quick-gate dominance FAIL (latent since d4b1671): witchhouse \"loses to dub\" was a tie-break artifact\n\n• REPAIR 2 — validate gate 6 emitted 30 stale \"unknown form\" warnings: its form check source-scraped the retired if/else chain. genre-kernel now exports FORM_NAMES from the FORMS table\n\nVerified: verify.sh --no-cache PASS and --full --no-cache PASS. Fixtures re-blessed: witchhouse s2/s5 + hogcore s1-5 only, 1047/1047 stable.\n\n▶ Play it: Perihelion Squeal → Chandelier Drowning → Rail Replacement Rapture — the three genres this change names, as one path https://stellate.app/?genre=hogcore&seed=5819&path=1670.17099,1285.14089,749.12558&xdur=0.161\n\n95b062d https://github.com/aboard-io/stellate/commit/95b062d3db5a321b0131b4e076e98c22c4e43e35",
   "date_published": "2026-07-04T13:29:55.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "hogcore",
    "witchhouse",
    "transitwave",
    "voice"
   ]
  },
  {
   "id": "984138d32e3648ddecfeb38fd1f80664bb76da4a",
   "url": "https://stellate.app/?genre=afrobeat&seed=5219&path=1237.17819,1718.20526,2097.8214&xdur=0.061",
   "external_url": "https://github.com/aboard-io/stellate/commit/984138d32e3648ddecfeb38fd1f80664bb76da4a",
   "title": "Margin round: jazz/blues fence, the interlock feature, exemptions empty",
   "summary": "Item 1 — the last negative column in the matrix (jazz -1, blues scoring 100 AS jazz) was a miscalibrated jazz row: measured over 8 seeds, jazz renders a strong comping snare (.67-.89) on a SPARSE ride (.51-.64) while blues is kick-forward shuffle with a quiet snare on a fuller kit",
   "content_html": "<p>Item 1 — the last negative column in the matrix (jazz -1, blues scoring 100 AS jazz) was a miscalibrated jazz row: measured over 8 seeds, jazz renders a strong comping snare (.67-.89) on a SPARSE ride (.51-.64) while blues is kick-forward shuffle with a quiet snare on a fuller kit</p>\n<ul><li>Item 2 — interlock: the verifier can finally see Fela's arithmetic. Per 8-beat window: (fraction of kick onsets OFF the four-on-floor quarters) x (fraction of 16th slots covered by exactly one lane).</li><li>Item 3 — the four remaining floored seeds (chinawave s5, newage s1, prelude s2/s3) stay floored, documented at the solver: a shorter- progression swap would land them but trades the long-figuration identity…</li></ul>\n<p><em>Verified:</em> verify.sh --full --no-cache PASS: matrix 63/63, NO negative columns remain; validate 5-seed; engine full-length.</p>\n<p><a href=\"https://stellate.app/?genre=afrobeat&amp;seed=5219&amp;path=1237.17819,1718.20526,2097.8214&amp;xdur=0.061\">▶ Play it: Polyrhythm Senate → Barometric Stampede → Harvest Quota Anthem — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/984138d32e3648ddecfeb38fd1f80664bb76da4a\">984138d</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Item 1 — the last negative column in the matrix (jazz -1, blues scoring 100 AS jazz) was a miscalibrated jazz row: measured over 8 seeds, jazz renders a strong comping snare (.67-.89) on a SPARSE ride (.51-.64) while blues is kick-forward shuffle with a quiet snare on a fuller kit\n\n• Item 2 — interlock: the verifier can finally see Fela's arithmetic. Per 8-beat window: (fraction of kick onsets OFF the four-on-floor quarters) x (fraction of 16th slots covered by exactly one lane).\n\n• Item 3 — the four remaining floored seeds (chinawave s5, newage s1, prelude s2/s3) stay floored, documented at the solver: a shorter- progression swap would land them but trades the long-figuration identity…\n\nVerified: verify.sh --full --no-cache PASS: matrix 63/63, NO negative columns remain; validate 5-seed; engine full-length.\n\n▶ Play it: Polyrhythm Senate → Barometric Stampede → Harvest Quota Anthem — the three genres this change names, as one path https://stellate.app/?genre=afrobeat&seed=5219&path=1237.17819,1718.20526,2097.8214&xdur=0.061\n\n984138d https://github.com/aboard-io/stellate/commit/984138d32e3648ddecfeb38fd1f80664bb76da4a",
   "date_published": "2026-07-04T13:09:38.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "afrobeat",
    "jungle",
    "chinawave",
    "harmony"
   ]
  },
  {
   "id": "96672f37aaa686114e563065afdf9c345e290731",
   "url": "https://stellate.app/?genre=ambient&seed=6695&path=2103.13280,2122.13313,2084.13313&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/96672f37aaa686114e563065afdf9c345e290731",
   "title": "Live video variety: shuffled no-repeat bags per play session",
   "summary": "Paul: \"we see the same clips every time we hit play.\" Cause: the genre-affine pool was built in fixed array order and walked with a module-scope linear index that never reshuffled — every session identical — and ambient idle stepped clips.json linearly with the first clip always disc_sunset.",
   "content_html": "<p>Paul: &quot;we see the same clips every time we hit play.&quot; Cause: the genre-affine pool was built in fixed array order and walked with a module-scope linear index that never reshuffled — every session identical — and ambient idle stepped clips.json linearly with the first clip always disc_sunset.</p>\n<ul><li>Now: explorer's genre pool is a Fisher-Yates shuffled bag (fresh shuffle at every goLive, so each play differs), rotating with no repeats until drained, rebuilt when travel changes the pool, never back-to-back…</li><li>Only the LIVE presentational layer uses Math.random; the seeded journey/press video path is untouched (renders stay reproducible).</li></ul>\n<p><em>Verified:</em> live audio smoke PASS 0 errors; two-session variety gates on both the mobile hard-cut and desktop crossfade paths show fully different clip sequences with the crossfade intact, 0 console…</p>\n<p><a href=\"https://stellate.app/?genre=ambient&amp;seed=6695&amp;path=2103.13280,2122.13313,2084.13313&amp;xdur=13.122\">▶ Play it: Stationary Weather — a long-form genre — put the phone in your pocket and it keeps playing</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/96672f37aaa686114e563065afdf9c345e290731\">96672f3</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Paul: \"we see the same clips every time we hit play.\" Cause: the genre-affine pool was built in fixed array order and walked with a module-scope linear index that never reshuffled — every session identical — and ambient idle stepped clips.json linearly with the first clip always disc_sunset.\n\n• Now: explorer's genre pool is a Fisher-Yates shuffled bag (fresh shuffle at every goLive, so each play differs), rotating with no repeats until drained, rebuilt when travel changes the pool, never back-to-back…\n\n• Only the LIVE presentational layer uses Math.random; the seeded journey/press video path is untouched (renders stay reproducible).\n\nVerified: live audio smoke PASS 0 errors; two-session variety gates on both the mobile hard-cut and desktop crossfade paths show fully different clip sequences with the crossfade intact, 0 console…\n\n▶ Play it: Stationary Weather — a long-form genre — put the phone in your pocket and it keeps playing https://stellate.app/?genre=ambient&seed=6695&path=2103.13280,2122.13313,2084.13313&xdur=13.122\n\n96672f3 https://github.com/aboard-io/stellate/commit/96672f37aaa686114e563065afdf9c345e290731",
   "date_published": "2026-07-04T13:08:58.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ambient",
    "mobile"
   ]
  },
  {
   "id": "96ec2f1645b5feb3ba1a70a622415a65d89ca4ec",
   "url": "https://stellate.app/?genre=bebop&seed=1950&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/96ec2f1645b5feb3ba1a70a622415a65d89ca4ec",
   "title": "Kit-as-data close-out: euclid overlay compiled to lane notation",
   "summary": "Phase 1 already made the 18 named kits data (KITS + drumEvents); the one procedural remnant was the euclid overlay — three hardcoded place() calls with inline amp lambdas.",
   "content_html": "<p>Phase 1 already made the 18 named kits data (KITS + drumEvents); the one procedural remnant was the euclid overlay — three hardcoded place() calls with inline amp lambdas.</p>\n<ul><li>Kept procedural with in-code reason: the euclid pass remains a once-per-bar post-pass — byte-identity pins (a) the shadowed kit lane's rng draws having already fired, (b) the closed-vs-open hat distinction per…</li><li>ZERO fixture drift: 1047/1047 incl. all 102 kit-stream hashes vs the pre-edit baseline. verify.sh --full --no-cache PASS (matrix 63/63, validate 5-seed, engine).</li></ul>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=1950&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/96ec2f1645b5feb3ba1a70a622415a65d89ca4ec\">96ec2f1</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Phase 1 already made the 18 named kits data (KITS + drumEvents); the one procedural remnant was the euclid overlay — three hardcoded place() calls with inline amp lambdas.\n\n• Kept procedural with in-code reason: the euclid pass remains a once-per-bar post-pass — byte-identity pins (a) the shadowed kit lane's rng draws having already fired, (b) the closed-vs-open hat distinction per…\n\n• ZERO fixture drift: 1047/1047 incl. all 102 kit-stream hashes vs the pre-edit baseline. verify.sh --full --no-cache PASS (matrix 63/63, validate 5-seed, engine).\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=1950&path=694.13834,713.13867,675.13867&xdur=13.122\n\n96ec2f1 https://github.com/aboard-io/stellate/commit/96ec2f1645b5feb3ba1a70a622415a65d89ca4ec",
   "date_published": "2026-07-04T12:48:23.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "c0e7cbcdcd3be8759f1af9480362598daf3d831e",
   "url": "https://stellate.app/?genre=gabber&seed=8461&path=1809.17533,1679.4415,859.9931&xdur=0.057",
   "external_url": "https://github.com/aboard-io/stellate/commit/c0e7cbcdcd3be8759f1af9480362598daf3d831e",
   "title": "Form grammar: seven forms as data, optional intro, section-drop lever",
   "summary": "Stage 1 — the seven-branch buildSections if/else chain is now a FORMS data table walked by one generic buildForm. Nodes are [name, spec] pairs typed via sectionTag",
   "content_html": "<p>Stage 1 — the seven-branch buildSections if/else chain is now a FORMS data table walked by one generic buildForm. Nodes are [name, spec] pairs typed via sectionTag</p>\n<ul><li>Stage 2a — introMode (Paul: &quot;four bar intro almost everywhere — make it optional&quot;): zero-rng dominant-parent enum</li><li>Stage 2b — section-drop solver lever: when cycle-flooring lands over-band, drop optional low-energy nodes (never build/peak/hook), commit ONLY if the result lands in [162,198]s, else revert byte-identical.</li><li>Stage 3 — generateSong DELETED: defaultState inlined as the value-identical royal-road literal; render-sample-video's synthwave preset inlined value-identical (vaporwave preset stays on defaultState</li></ul>\n<p><em>Verified:</em> verify.sh --full --no-cache PASS; walker 0.219 ms/track vs 0.225 baseline (no regression); rng streams untouched, proven by the 47 untouched genres' byte-stability.</p>\n<p><a href=\"https://stellate.app/?genre=gabber&amp;seed=8461&amp;path=1809.17533,1679.4415,859.9931&amp;xdur=0.057\">▶ Play it: Jackhammer Communion → Food Court Eternity → Highway Heat Death — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/c0e7cbcdcd3be8759f1af9480362598daf3d831e\">c0e7cbc</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Stage 1 — the seven-branch buildSections if/else chain is now a FORMS data table walked by one generic buildForm. Nodes are [name, spec] pairs typed via sectionTag\n\n• Stage 2a — introMode (Paul: \"four bar intro almost everywhere — make it optional\"): zero-rng dominant-parent enum\n\n• Stage 2b — section-drop solver lever: when cycle-flooring lands over-band, drop optional low-energy nodes (never build/peak/hook), commit ONLY if the result lands in [162,198]s, else revert byte-identical.\n\n• Stage 3 — generateSong DELETED: defaultState inlined as the value-identical royal-road literal; render-sample-video's synthwave preset inlined value-identical (vaporwave preset stays on defaultState\n\nVerified: verify.sh --full --no-cache PASS; walker 0.219 ms/track vs 0.225 baseline (no regression); rng streams untouched, proven by the 47 untouched genres' byte-stability.\n\n▶ Play it: Jackhammer Communion → Food Court Eternity → Highway Heat Death — the three genres this change names, as one path https://stellate.app/?genre=gabber&seed=8461&path=1809.17533,1679.4415,859.9931&xdur=0.057\n\nc0e7cbc https://github.com/aboard-io/stellate/commit/c0e7cbcdcd3be8759f1af9480362598daf3d831e",
   "date_published": "2026-07-04T12:41:20.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "gabber",
    "vaporwave",
    "synthwave",
    "sampler"
   ]
  },
  {
   "id": "eff2f8080d7dcd8e55f396f81668b33c1876927c",
   "url": "https://stellate.app/?genre=jungle&seed=5832&path=1718.20526,1873.8827,1315.6203&xdur=0.052",
   "external_url": "https://github.com/aboard-io/stellate/commit/eff2f8080d7dcd8e55f396f81668b33c1876927c",
   "title": "Reverb-color tap-out: colored genres get the echo-into-reverb glue",
   "summary": "Genres with a reverbColor sent only the raw rev bus through the external color node; the fx_bus delay/pingpong bleed into reverb (d*0.2 + pp*0.12) fed only the internal zita — muted when a color is active — so colored genres were subtly drier after echoes than uncolored ones.",
   "content_html": "<p>Genres with a reverbColor sent only the raw rev bus through the external color node; the fx_bus delay/pingpong bleed into reverb (d*0.2 + pp*0.12) fed only the internal zita — muted when a color is active — so colored genres were subtly drier after echoes than uncolored ones.</p>\n<ul><li>dsp/rev_bleed.dsp (new, subset-built): recomputes the exact fx_bus bleed term (identical fbdel + cross-fed pingpong, same 0.2/0.12).</li><li>press: inside the color path, render rev_bleed over the del/pp buses and feed the color node rev + bleed.</li><li>live: a native-node bleed graph (feedback delay + cross-fed pingpong — no extra worklet, budget stands) folded into the color node's input, built lazily on the first colored bar, params driven per-bar from the…</li><li>TRIM recalibration measured as unnecessary: tail energies unchanged (all colors ~3.3-3.9e-5 vs zita ~3.6e-5), press L-RMS moved &lt;0.1dB.</li></ul>\n<p><em>Verified:</em> probe-reverb extended with a bleed-echo assertion, PASS; surfrock colored double-render byte-identical; verify.sh PASS; live smoke PASS (load 0.976, balance 0.936, 0 errors).</p>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=5832&amp;path=1718.20526,1873.8827,1315.6203&amp;xdur=0.052\">▶ Play it: Barometric Stampede → Atrium Standing Wave → Undertow Sock Hop — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/eff2f8080d7dcd8e55f396f81668b33c1876927c\">eff2f80</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Genres with a reverbColor sent only the raw rev bus through the external color node; the fx_bus delay/pingpong bleed into reverb (d*0.2 + pp*0.12) fed only the internal zita — muted when a color is active — so colored genres were subtly drier after echoes than uncolored ones.\n\n• dsp/rev_bleed.dsp (new, subset-built): recomputes the exact fx_bus bleed term (identical fbdel + cross-fed pingpong, same 0.2/0.12).\n\n• press: inside the color path, render rev_bleed over the del/pp buses and feed the color node rev + bleed.\n\n• live: a native-node bleed graph (feedback delay + cross-fed pingpong — no extra worklet, budget stands) folded into the color node's input, built lazily on the first colored bar, params driven per-bar from the…\n\n• TRIM recalibration measured as unnecessary: tail energies unchanged (all colors ~3.3-3.9e-5 vs zita ~3.6e-5), press L-RMS moved <0.1dB.\n\nVerified: probe-reverb extended with a bleed-echo assertion, PASS; surfrock colored double-render byte-identical; verify.sh PASS; live smoke PASS (load 0.976, balance 0.936, 0 errors).\n\n▶ Play it: Barometric Stampede → Atrium Standing Wave → Undertow Sock Hop — the three genres this change names, as one path https://stellate.app/?genre=jungle&seed=5832&path=1718.20526,1873.8827,1315.6203&xdur=0.052\n\neff2f80 https://github.com/aboard-io/stellate/commit/eff2f8080d7dcd8e55f396f81668b33c1876927c",
   "date_published": "2026-07-04T12:21:24.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "mallsoft",
    "surfrock",
    "mix"
   ]
  },
  {
   "id": "cee5ed2dd541d9c893b0c75734386ba9b5bc3b9e",
   "url": "https://stellate.app/?genre=triphop&seed=1957&path=388.8037,449.16468,945.16205&xdur=0.087",
   "external_url": "https://github.com/aboard-io/stellate/commit/cee5ed2dd541d9c893b0c75734386ba9b5bc3b9e",
   "title": "Explorer: continuous blend weights (no midpoint snap) + 4 UI fixes",
   "summary": "THE BUG — weightsAt() hard-snapped to the nearest anchor inside SNAP=26px. arabpop and triphop sit ~39 logical px apart, so their snap radii OVERLAP",
   "content_html": "<ul><li><strong>THE BUG</strong> — weightsAt() hard-snapped to the nearest anchor inside SNAP=26px. arabpop and triphop sit ~39 logical px apart, so their snap radii OVERLAP</li><li><strong>UI</strong> — path points 2x (halo 14-&gt;28, dot 9-&gt;18, numbers 11-&gt;22px); labels hold WHITE for 10s after the last interaction (single reset timer, no leak)</li></ul>\n<p><em>Verified:</em> live smoke PASS (load 0.987, L/R balance 0.939, 0 errors); full headless session tap-&gt;zoom-&gt;pan-&gt;draw-&gt;play across a leg boundary, 0 console errors.</p>\n<p><a href=\"https://stellate.app/?genre=triphop&amp;seed=1957&amp;path=388.8037,449.16468,945.16205&amp;xdur=0.087\">▶ Play it: Inclement Surveillance → Sirocco Telemetry → Dune Recursion — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/cee5ed2dd541d9c893b0c75734386ba9b5bc3b9e\">cee5ed2</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "THE BUG — weightsAt() hard-snapped to the nearest anchor inside SNAP=26px. arabpop and triphop sit ~39 logical px apart, so their snap radii OVERLAP\n\nUI — path points 2x (halo 14->28, dot 9->18, numbers 11->22px); labels hold WHITE for 10s after the last interaction (single reset timer, no leak)\n\nVerified: live smoke PASS (load 0.987, L/R balance 0.939, 0 errors); full headless session tap->zoom->pan->draw->play across a leg boundary, 0 console errors.\n\n▶ Play it: Inclement Surveillance → Sirocco Telemetry → Dune Recursion — the three genres this change names, as one path https://stellate.app/?genre=triphop&seed=1957&path=388.8037,449.16468,945.16205&xdur=0.087\n\ncee5ed2 https://github.com/aboard-io/stellate/commit/cee5ed2dd541d9c893b0c75734386ba9b5bc3b9e",
   "date_published": "2026-07-04T12:14:09.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "triphop",
    "arabpop",
    "desertblues",
    "harmony"
   ]
  },
  {
   "id": "c67d53d0b4c04e1640637393f8e5f09990a986ed",
   "url": "https://stellate.app/?genre=bigband&seed=4224&path=814.14134,833.14167,795.14167&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/c67d53d0b4c04e1640637393f8e5f09990a986ed",
   "title": "Add guitars to tango: the Gardel-quartet nylon string",
   "summary": "At Paul's direction. The real sampled nylon-string guitar (FluidR3) joins tango's acoustic combo: it takes the lead from the bandoneon on ~1/3 of seeds (hard staccato, same recipe — the guitar-quartet tradition) and joins the comping pool alongside the marcato strings.",
   "content_html": "<p>At Paul's direction. The real sampled nylon-string guitar (FluidR3) joins tango's acoustic combo: it takes the lead from the bandoneon on ~1/3 of seeds (hard staccato, same recipe — the guitar-quartet tradition) and joins the comping pool alongside the marcato strings.</p>\n<ul><li>Sampler-pool additions only: one pick draw each, draw order unchanged, so only tango's own outcomes shift. Measured across 12 seeds: guitar appears in 6 (lead and/or comping). verify.sh PASS</li></ul>\n<p><a href=\"https://stellate.app/?genre=bigband&amp;seed=4224&amp;path=814.14134,833.14167,795.14167&amp;xdur=13.122\">▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/c67d53d0b4c04e1640637393f8e5f09990a986ed\">c67d53d</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "At Paul's direction. The real sampled nylon-string guitar (FluidR3) joins tango's acoustic combo: it takes the lead from the bandoneon on ~1/3 of seeds (hard staccato, same recipe — the guitar-quartet tradition) and joins the comping pool alongside the marcato strings.\n\n• Sampler-pool additions only: one pick draw each, draw order unchanged, so only tango's own outcomes shift. Measured across 12 seeds: guitar appears in 6 (lead and/or comping). verify.sh PASS\n\n▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments https://stellate.app/?genre=bigband&seed=4224&path=814.14134,833.14167,795.14167&xdur=13.122\n\nc67d53d https://github.com/aboard-io/stellate/commit/c67d53d0b4c04e1640637393f8e5f09990a986ed",
   "date_published": "2026-07-04T12:10:07.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bigband",
    "sampler"
   ]
  },
  {
   "id": "60800684b4ece81c3af9e540bfe4aca28a6787fc",
   "url": "https://stellate.app/?genre=hogcore&seed=3012&path=1670.17099,749.12558,1505.3720&xdur=0.056",
   "external_url": "https://github.com/aboard-io/stellate/commit/60800684b4ece81c3af9e540bfe4aca28a6787fc",
   "title": "Retire stations/horn/ding onto sampleEvents; keep vox/vocal with reason",
   "summary": "Three bespoke sample-event mechanisms ported to the generic state.sampleEvents path genre-by-genre behind A/B equivalence gates, then their engine handlers + toState specials DELETED:",
   "content_html": "<p>Three bespoke sample-event mechanisms ported to the generic state.sampleEvents path genre-by-genre behind A/B equivalence gates, then their engine handlers + toState specials DELETED:</p>\n<ul><li>stations -&gt; buried (hogcore 24 HP names, transitwave 96 metro names): st-main counts A/B-EXACT every seed (128&lt;-&gt;128, 96&lt;-&gt;96); glitch tail within rng variance on the independent +9091 stream</li><li>horn -&gt; opener (canawave, transitwave): treatment reproduced exactly (canawave amp 0.756 = 0.42x1.8, cut 6000); count collapses to the single true opener per the charter intent + bigbeat precedent.</li><li>ding -&gt; oneShot+cadence (transitwave): n=8 A/B-exact, every treatment number identical (dur 2.20, ppsend 0.7).</li><li>Vocabulary extended zero-rng: treatment.vol/maxDur/glitchBursts + a buried downward-glitch tail; absent keys byte-identical for all pre-existing sampleEvents users.</li></ul>\n<p><em>Verified:</em> verify.sh --full --no-cache PASS: matrix 63/63, margins held (canawave 2, transitwave 3, hogcore 2). Fixtures re-blessed: events drift confined to the 3 migrated genres</p>\n<p><a href=\"https://stellate.app/?genre=hogcore&amp;seed=3012&amp;path=1670.17099,749.12558,1505.3720&amp;xdur=0.056\">▶ Play it: Perihelion Squeal → Rail Replacement Rapture → Loon Referendum — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/60800684b4ece81c3af9e540bfe4aca28a6787fc\">6080068</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Three bespoke sample-event mechanisms ported to the generic state.sampleEvents path genre-by-genre behind A/B equivalence gates, then their engine handlers + toState specials DELETED:\n\n• stations -> buried (hogcore 24 HP names, transitwave 96 metro names): st-main counts A/B-EXACT every seed (128<->128, 96<->96); glitch tail within rng variance on the independent +9091 stream\n\n• horn -> opener (canawave, transitwave): treatment reproduced exactly (canawave amp 0.756 = 0.42x1.8, cut 6000); count collapses to the single true opener per the charter intent + bigbeat precedent.\n\n• ding -> oneShot+cadence (transitwave): n=8 A/B-exact, every treatment number identical (dur 2.20, ppsend 0.7).\n\n• Vocabulary extended zero-rng: treatment.vol/maxDur/glitchBursts + a buried downward-glitch tail; absent keys byte-identical for all pre-existing sampleEvents users.\n\nVerified: verify.sh --full --no-cache PASS: matrix 63/63, margins held (canawave 2, transitwave 3, hogcore 2). Fixtures re-blessed: events drift confined to the 3 migrated genres\n\n▶ Play it: Perihelion Squeal → Rail Replacement Rapture → Loon Referendum — the three genres this change names, as one path https://stellate.app/?genre=hogcore&seed=3012&path=1670.17099,749.12558,1505.3720&xdur=0.056\n\n6080068 https://github.com/aboard-io/stellate/commit/60800684b4ece81c3af9e540bfe4aca28a6787fc",
   "date_published": "2026-07-04T12:02:08.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "hogcore",
    "transitwave",
    "canawave",
    "voice"
   ]
  },
  {
   "id": "4a80f487b810de8d6c7db432ecccc8feba7e337a",
   "url": "https://stellate.app/?genre=jungle&seed=1191&path=1718.20526,1530.6221&xdur=0.052",
   "external_url": "https://github.com/aboard-io/stellate/commit/4a80f487b810de8d6c7db432ecccc8feba7e337a",
   "title": "Fix hard-left dry bus in live: pin dryBus to explicit 2 channels",
   "summary": "The stereo-voice dry path (5b26293) had a channel-count trap: with the default \"max\" mode, a genre with only MONO voices computed a 1-channel dryBus, and ChannelSplitter upmixes DISCRETELY — channel 1 padded with silence — so the entire dry mix (bass always",
   "content_html": "<p>The stereo-voice dry path (5b26293) had a channel-count trap: with the default &quot;max&quot; mode, a genre with only MONO voices computed a 1-channel dryBus, and ChannelSplitter upmixes DISCRETELY — channel 1 padded with silence — so the entire dry mix (bass always</p>\n<ul><li>The smoke gate never saw it because AnalyserNode DOWNMIXES to mono. Added handle.balance() (splitter + per-channel analysers off master) and a standing L/R assertion in live-test-run.js: quieter channel must…</li><li>Reported by Paul by ear — &quot;bass is always panned left&quot;.</li></ul>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=1191&amp;path=1718.20526,1530.6221&amp;xdur=0.052\">▶ Play it: Barometric Stampede → Neon Fiscal Year — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/4a80f487b810de8d6c7db432ecccc8feba7e337a\">4a80f48</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The stereo-voice dry path (5b26293) had a channel-count trap: with the default \"max\" mode, a genre with only MONO voices computed a 1-channel dryBus, and ChannelSplitter upmixes DISCRETELY — channel 1 padded with silence — so the entire dry mix (bass always\n\n• The smoke gate never saw it because AnalyserNode DOWNMIXES to mono. Added handle.balance() (splitter + per-channel analysers off master) and a standing L/R assertion in live-test-run.js: quieter channel must…\n\n• Reported by Paul by ear — \"bass is always panned left\".\n\n▶ Play it: Barometric Stampede → Neon Fiscal Year — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=jungle&seed=1191&path=1718.20526,1530.6221&xdur=0.052\n\n4a80f48 https://github.com/aboard-io/stellate/commit/4a80f487b810de8d6c7db432ecccc8feba7e337a",
   "date_published": "2026-07-04T11:47:41.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "citypop",
    "harmony"
   ]
  },
  {
   "id": "95fe3001a837fabc910bde6e1859394e544cae7a",
   "url": "https://stellate.app/?genre=citypop&seed=1617&path=1530.6221,586.10667,1376.19565&xdur=0.056",
   "external_url": "https://github.com/aboard-io/stellate/commit/95fe3001a837fabc910bde6e1859394e544cae7a",
   "title": "Remove the June-11 mix demo set and its page",
   "summary": "At Paul's direction: mix/ (six csound-era tracks, their state seeds, mix.m3u, and the served mix page) is gone from the live site. make-mix-page.js stays — it regenerates a mix page from any rendered playlist dir.",
   "content_html": "<p>At Paul's direction: mix/ (six csound-era tracks, their state seeds, mix.m3u, and the served mix page) is gone from the live site. make-mix-page.js stays — it regenerates a mix page from any rendered playlist dir.</p>\n<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=1617&amp;path=1530.6221,586.10667,1376.19565&amp;xdur=0.056\">▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/95fe3001a837fabc910bde6e1859394e544cae7a\">95fe300</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "At Paul's direction: mix/ (six csound-era tracks, their state seeds, mix.m3u, and the served mix page) is gone from the live site. make-mix-page.js stays — it regenerates a mix page from any rendered playlist dir.\n\n▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix https://stellate.app/?genre=citypop&seed=1617&path=1530.6221,586.10667,1376.19565&xdur=0.056\n\n95fe300 https://github.com/aboard-io/stellate/commit/95fe3001a837fabc910bde6e1859394e544cae7a",
   "date_published": "2026-07-04T11:35:53.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "downtempo",
    "dnb"
   ]
  },
  {
   "id": "47f24f99a9ff5373142dc199209c050c5106d290",
   "url": "https://stellate.app/?genre=transitwave&seed=1425&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/47f24f99a9ff5373142dc199209c050c5106d290",
   "title": "Cleanup: delete the umiwashi reel + 340MB of derived render outputs",
   "summary": "At Paul's direction (\"delete unused data and old wavs\"): the flagged 1943 propaganda reel is deleted from found/video/lib/ (86MB, never cued; SOURCES.md row replaced with a tombstone, cut-lib-clips.sh entry pruned to a comment), along with all regenerable derived audio",
   "content_html": "<p>At Paul's direction (&quot;delete unused data and old wavs&quot;): the flagged 1943 propaganda reel is deleted from found/video/lib/ (86MB, never cued; SOURCES.md row replaced with a tombstone, cut-lib-clips.sh entry pruned to a comment), along with all regenerable derived audio</p>\n<ul><li>Cross-referenced every found/ file against all live registries (genre-kernel SOURCES/SAMPLES/GENRE_CLIPS/stationPool, sample manifest, clip manifests, fetch recipes): no orphaned found audio exists</li><li>Total freed this round ~340MB (+ 840MB grand tour in 1461353). verify.sh PASS after deletion — no live registry lost a file.</li></ul>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=1425&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/47f24f99a9ff5373142dc199209c050c5106d290\">47f24f9</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "At Paul's direction (\"delete unused data and old wavs\"): the flagged 1943 propaganda reel is deleted from found/video/lib/ (86MB, never cued; SOURCES.md row replaced with a tombstone, cut-lib-clips.sh entry pruned to a comment), along with all regenerable derived audio\n\n• Cross-referenced every found/ file against all live registries (genre-kernel SOURCES/SAMPLES/GENRE_CLIPS/stationPool, sample manifest, clip manifests, fetch recipes): no orphaned found audio exists\n\n• Total freed this round ~340MB (+ 840MB grand tour in 1461353). verify.sh PASS after deletion — no live registry lost a file.\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=1425&path=749.12536,768.12569,730.12569&xdur=13.122\n\n47f24f9 https://github.com/aboard-io/stellate/commit/47f24f99a9ff5373142dc199209c050c5106d290",
   "date_published": "2026-07-04T11:34:20.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "064f64917a3839ab1257c48b4f98bc217bab04a0",
   "url": "https://stellate.app/?genre=vaporwave&seed=9385&path=1679.4415,292.16891,1718.20526&xdur=0.046",
   "external_url": "https://github.com/aboard-io/stellate/commit/064f64917a3839ab1257c48b4f98bc217bab04a0",
   "title": "Delete the grand tour (journey/, 840MB) and its mix page",
   "summary": "At Paul's direction: the July-3 csound-era grand-tour artifact — tracks, gapless journey.mp3/.mp4, and its journey/index.html mix page — is removed from the live site (the tree is the web root).",
   "content_html": "<p>At Paul's direction: the July-3 csound-era grand-tour artifact — tracks, gapless journey.mp3/.mp4, and its journey/index.html mix page — is removed from the live site (the tree is the web root).</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=9385&amp;path=1679.4415,292.16891,1718.20526&amp;xdur=0.046\">▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/064f64917a3839ab1257c48b4f98bc217bab04a0\">064f649</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "At Paul's direction: the July-3 csound-era grand-tour artifact — tracks, gapless journey.mp3/.mp4, and its journey/index.html mix page — is removed from the live site (the tree is the web root).\n\n▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix https://stellate.app/?genre=vaporwave&seed=9385&path=1679.4415,292.16891,1718.20526&xdur=0.046\n\n064f649 https://github.com/aboard-io/stellate/commit/064f64917a3839ab1257c48b4f98bc217bab04a0",
   "date_published": "2026-07-04T11:33:39.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "jazz",
    "jungle",
    "travel"
   ]
  },
  {
   "id": "66755a1f10866791897c9d5443130b3e04fac8ba",
   "url": "https://stellate.app/?genre=citypop&seed=3815&path=1530.6221,586.10667,1376.19565&xdur=0.056",
   "external_url": "https://github.com/aboard-io/stellate/commit/66755a1f10866791897c9d5443130b3e04fac8ba",
   "title": "NEXT.md: the 2026-07-04 marathon is complete; remaining = future rounds",
   "summary": "NEXT.md: the 2026-07-04 marathon is complete; remaining = future rounds",
   "content_html": "<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=3815&amp;path=1530.6221,586.10667,1376.19565&amp;xdur=0.056\">▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/66755a1f10866791897c9d5443130b3e04fac8ba\">66755a1</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix https://stellate.app/?genre=citypop&seed=3815&path=1530.6221,586.10667,1376.19565&xdur=0.056\n\n66755a1 https://github.com/aboard-io/stellate/commit/66755a1f10866791897c9d5443130b3e04fac8ba",
   "date_published": "2026-07-04T08:00:18.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "downtempo",
    "dnb"
   ]
  },
  {
   "id": "1ef26b62999ea2d3cf61c11d16a0674c82c0fba4",
   "url": "https://stellate.app/?genre=coldwave&seed=3682&path=1900.4416,388.8037,2097.8214&xdur=0.159",
   "external_url": "https://github.com/aboard-io/stellate/commit/1ef26b62999ea2d3cf61c11d16a0674c82c0fba4",
   "title": "Deep pass: coldwave, triphop, idm, sludgemetal — worst-10 CLOSED",
   "summary": "coldwave (margin 0 -> +6): the tie was chinawave (mutual 100/100) — they share ~110bpm/dry triads/crackle/motion; the real musical difference is the drum mix, so it's structural now: chinawave's stated identity is the march snare UP (renders .74-.90), coldwave is bass-forward post-punk (kick up…",
   "content_html": "<p>coldwave (margin 0 -&gt; +6): the tie was chinawave (mutual 100/100) — they share ~110bpm/dry triads/crackle/motion; the real musical difference is the drum mix, so it's structural now: chinawave's stated identity is the march snare UP (renders .74-.90), coldwave is bass-forward post-punk (kick up…</p>\n<ul><li>triphop (+1 -&gt; +6): the oldest confusion pair (lofi 99) broken on the claim triphop always had — the SLOWED SAMPLED BREAK (renders breakUse .5) vs lofi's programmed boombap (0). lofi's row simply never read it.</li><li>idm (+1 -&gt; +8): checked the variation-feature hypothesis — it saturates at 1.0 nearly everywhere, can't carry transform density.</li><li>sludgemetal (+8 held, identity deepened): the doom drag — timeFeel pushPull, the whole band behind the beat with the bass draggiest (the amp about to die pulls the riff late)</li><li><strong>WORST-10 CLOSE-OUT</strong> — darksynth 0-&gt;+6, mallsoft 0-&gt;+8, witchhouse +1-&gt;+7, downtempo +1-&gt;+6, newage +1-&gt;+5, exotica +1-&gt;+5, spacelounge +1-&gt;+6, arabpop +1-&gt;+5 deepened, coldwave 0-&gt;+6, triphop +1-&gt;+6, idm +1-&gt;+8, sludgemetal +8…</li></ul>\n<p><em>Verified:</em> verify.sh --full --no-cache PASS: matrix 63/63, validate 5-seed, engine. Fixtures: only coldwave/sludgemetal drifted (30 hashes); 59 genres + kit streams byte-stable.</p>\n<p><a href=\"https://stellate.app/?genre=coldwave&amp;seed=3682&amp;path=1900.4416,388.8037,2097.8214&amp;xdur=0.159\">▶ Play it: Unheated Archive → Inclement Surveillance → Harvest Quota Anthem — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/1ef26b62999ea2d3cf61c11d16a0674c82c0fba4\">1ef26b6</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "coldwave (margin 0 -> +6): the tie was chinawave (mutual 100/100) — they share ~110bpm/dry triads/crackle/motion; the real musical difference is the drum mix, so it's structural now: chinawave's stated identity is the march snare UP (renders .74-.90), coldwave is bass-forward post-punk (kick up…\n\n• triphop (+1 -> +6): the oldest confusion pair (lofi 99) broken on the claim triphop always had — the SLOWED SAMPLED BREAK (renders breakUse .5) vs lofi's programmed boombap (0). lofi's row simply never read it.\n\n• idm (+1 -> +8): checked the variation-feature hypothesis — it saturates at 1.0 nearly everywhere, can't carry transform density.\n\n• sludgemetal (+8 held, identity deepened): the doom drag — timeFeel pushPull, the whole band behind the beat with the bass draggiest (the amp about to die pulls the riff late)\n\nWORST-10 CLOSE-OUT — darksynth 0->+6, mallsoft 0->+8, witchhouse +1->+7, downtempo +1->+6, newage +1->+5, exotica +1->+5, spacelounge +1->+6, arabpop +1->+5 deepened, coldwave 0->+6, triphop +1->+6, idm +1->+8, sludgemetal +8…\n\nVerified: verify.sh --full --no-cache PASS: matrix 63/63, validate 5-seed, engine. Fixtures: only coldwave/sludgemetal drifted (30 hashes); 59 genres + kit streams byte-stable.\n\n▶ Play it: Unheated Archive → Inclement Surveillance → Harvest Quota Anthem — the three genres this change names, as one path https://stellate.app/?genre=coldwave&seed=3682&path=1900.4416,388.8037,2097.8214&xdur=0.159\n\n1ef26b6 https://github.com/aboard-io/stellate/commit/1ef26b62999ea2d3cf61c11d16a0674c82c0fba4",
   "date_published": "2026-07-04T07:59:13.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "coldwave",
    "triphop",
    "chinawave",
    "drums"
   ]
  },
  {
   "id": "d960f61894413e939687708986df115f6a4b2422",
   "url": "https://stellate.app/?genre=spacelounge&seed=4328&path=315.4670,586.10667,1220.4964&xdur=0.118",
   "external_url": "https://github.com/aboard-io/stellate/commit/d960f61894413e939687708986df115f6a4b2422",
   "title": "Deep pass: exotica, spacelounge, arabpop — tiki, orbit, maqam",
   "summary": "exotica (margin 1 -> 7): the Baxter/Denny signature made literal — a sampleEvents AVIARY answers the melodic phrase on the back half of ~40% of chord bars (loon/iriomote/frogs, bright and DRY, the tiki room renders wash .21-.28).",
   "content_html": "<p>exotica (margin 1 -&gt; 7): the Baxter/Denny signature made literal — a sampleEvents AVIARY answers the melodic phrase on the back half of ~40% of chord bars (loon/iriomote/frogs, bright and DRY, the tiki room renders wash .21-.28).</p>\n<ul><li>spacelounge (margin 1 -&gt; 5): the claim exotica cannot make — width and electronics, not acoustic birds.</li><li>arabpop (margin 8 held; identity deepened): culturally serious, no fake-vocal pastiche — the lead is the ornamented MONOPHONIC maqam line (voices [1,1]</li></ul>\n<p><em>Verified:</em> verify.sh --full --no-cache PASS: matrix 63/63, validate 5-seed, engine. Fixtures: exactly the three genres drifted (31 hashes), kit streams byte-stable, rng streams undisturbed.</p>\n<p><a href=\"https://stellate.app/?genre=spacelounge&amp;seed=4328&amp;path=315.4670,586.10667,1220.4964&amp;xdur=0.118\">▶ Play it: Martini Parallax → Benthic Patience → Chrome Cotillion — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/d960f61894413e939687708986df115f6a4b2422\">d960f61</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "exotica (margin 1 -> 7): the Baxter/Denny signature made literal — a sampleEvents AVIARY answers the melodic phrase on the back half of ~40% of chord bars (loon/iriomote/frogs, bright and DRY, the tiki room renders wash .21-.28).\n\n• spacelounge (margin 1 -> 5): the claim exotica cannot make — width and electronics, not acoustic birds.\n\n• arabpop (margin 8 held; identity deepened): culturally serious, no fake-vocal pastiche — the lead is the ornamented MONOPHONIC maqam line (voices [1,1]\n\nVerified: verify.sh --full --no-cache PASS: matrix 63/63, validate 5-seed, engine. Fixtures: exactly the three genres drifted (31 hashes), kit streams byte-stable, rng streams undisturbed.\n\n▶ Play it: Martini Parallax → Benthic Patience → Chrome Cotillion — the three genres this change names, as one path https://stellate.app/?genre=spacelounge&seed=4328&path=315.4670,586.10667,1220.4964&xdur=0.118\n\nd960f61 https://github.com/aboard-io/stellate/commit/d960f61894413e939687708986df115f6a4b2422",
   "date_published": "2026-07-04T07:40:06.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "spacelounge",
    "downtempo",
    "newjack",
    "voice"
   ]
  },
  {
   "id": "0f32018fbd140e776608187b82ab773920f0b230",
   "url": "https://stellate.app/?genre=downtempo&seed=2439&path=586.10667,1285.14089,1679.4415&xdur=0.077",
   "external_url": "https://github.com/aboard-io/stellate/commit/0f32018fbd140e776608187b82ab773920f0b230",
   "title": "Deep pass: witchhouse + the wash trio — margins +1 -> +5..+7",
   "summary": "The gate-3 wash cluster, structurally differentiated (one identity claim each that the neighbors cannot make, not target gerrymandering):",
   "content_html": "<p>The gate-3 wash cluster, structurally differentiated (one identity claim each that the neighbors cannot make, not target gerrymandering):</p>\n<ul><li>ambient — the STATIC one: drone_min-dominant progressions (motion renders 0), kits [&quot;off&quot;] only (drumDensity strictly 0), chordEvery:32 (the longest harmonic plateau in the catalog).</li><li>downtempo — the BEAT one: swing floor raised (never straight), bpm dropped below exotica's tiki floor, timeFeel pushPull bass +.022 / hat -.014 (the head-nod lean, drawless).</li><li>newage — the MELODIC one: rubato prob 1 (gentler/slower than neoclassical — the only wash genre that breathes; every rival renders rubato 0), progressions always-moving.</li><li>witchhouse — the drowned occult drone: drone-dominant progressions + a sampleEvents pitched-down ghost voice (dragged to .42, lowpassed, drenched) answering the back half of each drone bar (26 events at seed…</li></ul>\n<p><em>Verified:</em> verify.sh --full --no-cache PASS: matrix 63/63, validate 5-seed, engine. Fixtures: exactly 60 drifted hashes = the four genres; 59 others + all kit streams byte-stable.</p>\n<p><a href=\"https://stellate.app/?genre=downtempo&amp;seed=2439&amp;path=586.10667,1285.14089,1679.4415&amp;xdur=0.077\">▶ Play it: Benthic Patience → Chandelier Drowning → Food Court Eternity — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/0f32018fbd140e776608187b82ab773920f0b230\">0f32018</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The gate-3 wash cluster, structurally differentiated (one identity claim each that the neighbors cannot make, not target gerrymandering):\n\n• ambient — the STATIC one: drone_min-dominant progressions (motion renders 0), kits [\"off\"] only (drumDensity strictly 0), chordEvery:32 (the longest harmonic plateau in the catalog).\n\n• downtempo — the BEAT one: swing floor raised (never straight), bpm dropped below exotica's tiki floor, timeFeel pushPull bass +.022 / hat -.014 (the head-nod lean, drawless).\n\n• newage — the MELODIC one: rubato prob 1 (gentler/slower than neoclassical — the only wash genre that breathes; every rival renders rubato 0), progressions always-moving.\n\n• witchhouse — the drowned occult drone: drone-dominant progressions + a sampleEvents pitched-down ghost voice (dragged to .42, lowpassed, drenched) answering the back half of each drone bar (26 events at seed…\n\nVerified: verify.sh --full --no-cache PASS: matrix 63/63, validate 5-seed, engine. Fixtures: exactly 60 drifted hashes = the four genres; 59 others + all kit streams byte-stable.\n\n▶ Play it: Benthic Patience → Chandelier Drowning → Food Court Eternity — the three genres this change names, as one path https://stellate.app/?genre=downtempo&seed=2439&path=586.10667,1285.14089,1679.4415&xdur=0.077\n\n0f32018 https://github.com/aboard-io/stellate/commit/0f32018fbd140e776608187b82ab773920f0b230",
   "date_published": "2026-07-04T07:15:10.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "downtempo",
    "witchhouse",
    "vaporwave",
    "harmony"
   ]
  },
  {
   "id": "1b3959deaee7879d6a0538077394599469dd7e39",
   "url": "https://stellate.app/?genre=dubstep&seed=3390&path=1379.18248,1044.3292,1873.8827&xdur=0.05",
   "external_url": "https://github.com/aboard-io/stellate/commit/1b3959deaee7879d6a0538077394599469dd7e39",
   "title": "Deep pass: darksynth + mallsoft — the audit's two margin-0 failures",
   "summary": "darksynth (was: scored 100 AS dubstep): the horror gate — transforms pool [stutter,rot] @ .16, ~1/6 of bars snap into a gated 16th-stutter or displaced-hat lurch over the relentless pulse.",
   "content_html": "<p>darksynth (was: scored 100 AS dubstep): the horror gate — transforms pool [stutter,rot] @ .16, ~1/6 of bars snap into a gated 16th-stutter or displaced-hat lurch over the relentless pulse.</p>\n<ul><li>mallsoft (was: pool-shuffle, 100 as vaporwave): the dead-mall thesis made structural — form wave (arrive/drift/swell/recede/depart, kit mostly off: the band left), chordEvery:16 (muzak drifts the length of the…</li><li>Latent determinism bug found while recapturing fixtures and fixed: the module-global section-id counter made every track's section ids depend on how many genres resolved earlier in-process</li></ul>\n<p><em>Verified:</em> verify.sh --full --no-cache PASS: matrix 63/63, validate 5-seed, engine. Dominance losses: fixed 5, added 0.</p>\n<p><a href=\"https://stellate.app/?genre=dubstep&amp;seed=3390&amp;path=1379.18248,1044.3292,1873.8827&amp;xdur=0.05\">▶ Play it: Seismic Ultimatum → Apex Curfew → Atrium Standing Wave — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/1b3959deaee7879d6a0538077394599469dd7e39\">1b3959d</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "darksynth (was: scored 100 AS dubstep): the horror gate — transforms pool [stutter,rot] @ .16, ~1/6 of bars snap into a gated 16th-stutter or displaced-hat lurch over the relentless pulse.\n\n• mallsoft (was: pool-shuffle, 100 as vaporwave): the dead-mall thesis made structural — form wave (arrive/drift/swell/recede/depart, kit mostly off: the band left), chordEvery:16 (muzak drifts the length of the…\n\n• Latent determinism bug found while recapturing fixtures and fixed: the module-global section-id counter made every track's section ids depend on how many genres resolved earlier in-process\n\nVerified: verify.sh --full --no-cache PASS: matrix 63/63, validate 5-seed, engine. Dominance losses: fixed 5, added 0.\n\n▶ Play it: Seismic Ultimatum → Apex Curfew → Atrium Standing Wave — the three genres this change names, as one path https://stellate.app/?genre=dubstep&seed=3390&path=1379.18248,1044.3292,1873.8827&xdur=0.05\n\n1b3959d https://github.com/aboard-io/stellate/commit/1b3959deaee7879d6a0538077394599469dd7e39",
   "date_published": "2026-07-04T06:42:26.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "dubstep",
    "darksynth",
    "mallsoft",
    "harmony"
   ]
  },
  {
   "id": "92564065a50c733152a137c3cdfe74fd8d0e1b6d",
   "url": "https://stellate.app/?genre=bigband&seed=8117&path=814.14134,833.14167,795.14167&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/92564065a50c733152a137c3cdfe74fd8d0e1b6d",
   "title": "v4 Phase 6: source-class axis, ARTIC absorbed, deletion-list close-out",
   "summary": "SOURCE_CLASS in csd-engine: all 32 pitched models classified into five source classes (analog incl. the emulation fleet, fm, sampler, electromech, mechanical), each with an acoustic-membership grade; exported with sourceClassOf().",
   "content_html": "<p>SOURCE_CLASS in csd-engine: all 32 pitched models classified into five source classes (analog incl. the emulation fleet, fm, sampler, electromech, mechanical), each with an acoustic-membership grade; exported with sourceClassOf().</p>\n<ul><li>Deletion list, item by item: ARTIC load-time patching TAKEN (12 genres now carry their envelope identity inline); STYLES presets TAKEN (zero live readers)</li><li>Fixture drift: ZERO — 1047/1047 byte-stable through every edit, nothing regenerated. verify --no-cache PASS: matrix 63/63, validate full 5-seed 5/1/0, engine smoke.</li><li>This closes the KERNEL-V4 strangler program: transforms, timeFeel, chordEvery, sampleEvents, and the source-class axis are dimensional infrastructure behind byte-stable adapters</li></ul>\n<p><a href=\"https://stellate.app/?genre=bigband&amp;seed=8117&amp;path=814.14134,833.14167,795.14167&amp;xdur=13.122\">▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/92564065a50c733152a137c3cdfe74fd8d0e1b6d\">9256406</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "SOURCE_CLASS in csd-engine: all 32 pitched models classified into five source classes (analog incl. the emulation fleet, fm, sampler, electromech, mechanical), each with an acoustic-membership grade; exported with sourceClassOf().\n\n• Deletion list, item by item: ARTIC load-time patching TAKEN (12 genres now carry their envelope identity inline); STYLES presets TAKEN (zero live readers)\n\n• Fixture drift: ZERO — 1047/1047 byte-stable through every edit, nothing regenerated. verify --no-cache PASS: matrix 63/63, validate full 5-seed 5/1/0, engine smoke.\n\n• This closes the KERNEL-V4 strangler program: transforms, timeFeel, chordEvery, sampleEvents, and the source-class axis are dimensional infrastructure behind byte-stable adapters\n\n▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments https://stellate.app/?genre=bigband&seed=8117&path=814.14134,833.14167,795.14167&xdur=13.122\n\n9256406 https://github.com/aboard-io/stellate/commit/92564065a50c733152a137c3cdfe74fd8d0e1b6d",
   "date_published": "2026-07-04T06:09:21.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bigband",
    "sampler"
   ]
  },
  {
   "id": "37a60af0544859d95fe5df356d6c6c5c88470f85",
   "url": "https://stellate.app/?genre=witchhouse&seed=5656&path=1285.14089,1237.17819,1378.11127&xdur=0.112",
   "external_url": "https://github.com/aboard-io/stellate/commit/37a60af0544859d95fe5df356d6c6c5c88470f85",
   "title": "v4 Phase 5: 3-minute duration solver + form-graph section tags",
   "summary": "The charter's 3-min rule completes: track/blend/mix default targetSec:180 (journeys keep per-leg targets), and the blunt +/-15% deadband scaler is replaced by a deterministic solver",
   "content_html": "<p>The charter's 3-min rule completes: track/blend/mix default targetSec:180 (journeys keep per-leg targets), and the blunt +/-15% deadband scaler is replaced by a deterministic solver</p>\n<ul><li>sectionTag(name) classifier (ground/build/peak/release/exposed/ cadence) exported from csd-engine; sampleEvents sections accepts &quot;tag:peak,cadence&quot; — rename-proof attach points, byte-safe, opt-in.</li><li>Exemptions (strangler, documented in-code): VIDEO_LOCKED forms (ritual/anthem/transit — hand-authored cycles graft onto committed videos, events byte-identical, cut-lock preserved) and MARGIN_FRAGILE (afrobeat…</li><li>Refusals: the seven form branches stay as the grammar instances (a byte-identical data rewrite buys nothing); forced bridge-bed/intro- outro pads entangled with the bedUse feature</li></ul>\n<p><em>Verified:</em> verify.sh --no-cache PASS: matrix 63/63, validate incl. 5-seed dominance, engine; weakest gate-3 margins byte-identical to baseline.</p>\n<p><a href=\"https://stellate.app/?genre=witchhouse&amp;seed=5656&amp;path=1285.14089,1237.17819,1378.11127&amp;xdur=0.112\">▶ Play it: Chandelier Drowning → Polyrhythm Senate → Hydraulic Tantrum — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/37a60af0544859d95fe5df356d6c6c5c88470f85\">37a60af</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The charter's 3-min rule completes: track/blend/mix default targetSec:180 (journeys keep per-leg targets), and the blunt +/-15% deadband scaler is replaced by a deterministic solver\n\n• sectionTag(name) classifier (ground/build/peak/release/exposed/ cadence) exported from csd-engine; sampleEvents sections accepts \"tag:peak,cadence\" — rename-proof attach points, byte-safe, opt-in.\n\n• Exemptions (strangler, documented in-code): VIDEO_LOCKED forms (ritual/anthem/transit — hand-authored cycles graft onto committed videos, events byte-identical, cut-lock preserved) and MARGIN_FRAGILE (afrobeat…\n\n• Refusals: the seven form branches stay as the grammar instances (a byte-identical data rewrite buys nothing); forced bridge-bed/intro- outro pads entangled with the bedUse feature\n\nVerified: verify.sh --no-cache PASS: matrix 63/63, validate incl. 5-seed dominance, engine; weakest gate-3 margins byte-identical to baseline.\n\n▶ Play it: Chandelier Drowning → Polyrhythm Senate → Hydraulic Tantrum — the three genres this change names, as one path https://stellate.app/?genre=witchhouse&seed=5656&path=1285.14089,1237.17819,1378.11127&xdur=0.112\n\n37a60af https://github.com/aboard-io/stellate/commit/37a60af0544859d95fe5df356d6c6c5c88470f85",
   "date_published": "2026-07-04T05:53:56.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "witchhouse",
    "afrobeat",
    "industrialmetal",
    "found"
   ]
  },
  {
   "id": "e9872ec726095c2e1011e739735aa5ada1847f44",
   "url": "https://stellate.app/?genre=dinosynth&seed=8663&path=289.13893,893.15798&xdur=0.375",
   "external_url": "https://github.com/aboard-io/stellate/commit/e9872ec726095c2e1011e739735aa5ada1847f44",
   "title": "v4 Phase 4: generalized sample-event roles (state.sampleEvents)",
   "summary": "One vocabulary replaces the need for per-idea special fields: sampleEvents:[{pool, placement, sync, sections, treatment, gain, prob}] with seven placements (bed/slice/oneShot/opener/cadence/ buried/response), section filters (all/first/quiet/name-regex), and a treatment block…",
   "content_html": "<p>One vocabulary replaces the need for per-idea special fields: sampleEvents:[{pool, placement, sync, sections, treatment, gain, prob}] with seven placements (bed/slice/oneShot/opener/cadence/ buried/response), section filters (all/first/quiet/name-regex), and a treatment block…</p>\n<ul><li>Deletion REFUSED, justified: the charter's full deletion of the bespoke handlers (toState specials + engine L571-751) is the full-adoption vision</li><li>Pilots (fixture drift exactly 20 entries, state+events only, features byte-identical so the matrix holds by construction): bigbeat opener air-horn (fires once at beat 0.25), dinosynth response paleontologist…</li></ul>\n<p><em>Verified:</em> verify.sh --no-cache PASS: matrix 63/63, validate 5/1/0 with gate 6 at 0 dangling, engine smoke. Perf 1.44 -&gt; 1.38 ms/state (pass gated off for 59/61 genres).</p>\n<p><a href=\"https://stellate.app/?genre=dinosynth&amp;seed=8663&amp;path=289.13893,893.15798&amp;xdur=0.375\">▶ Play it: Cretaceous Vespers → Airhorn Apocrypha — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/e9872ec726095c2e1011e739735aa5ada1847f44\">e9872ec</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "One vocabulary replaces the need for per-idea special fields: sampleEvents:[{pool, placement, sync, sections, treatment, gain, prob}] with seven placements (bed/slice/oneShot/opener/cadence/ buried/response), section filters (all/first/quiet/name-regex), and a treatment block…\n\n• Deletion REFUSED, justified: the charter's full deletion of the bespoke handlers (toState specials + engine L571-751) is the full-adoption vision\n\n• Pilots (fixture drift exactly 20 entries, state+events only, features byte-identical so the matrix holds by construction): bigbeat opener air-horn (fires once at beat 0.25), dinosynth response paleontologist…\n\nVerified: verify.sh --no-cache PASS: matrix 63/63, validate 5/1/0 with gate 6 at 0 dangling, engine smoke. Perf 1.44 -> 1.38 ms/state (pass gated off for 59/61 genres).\n\n▶ Play it: Cretaceous Vespers → Airhorn Apocrypha — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=dinosynth&seed=8663&path=289.13893,893.15798&xdur=0.375\n\ne9872ec https://github.com/aboard-io/stellate/commit/e9872ec726095c2e1011e739735aa5ada1847f44",
   "date_published": "2026-07-04T05:27:02.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "dinosynth",
    "bigbeat",
    "found"
   ]
  },
  {
   "id": "922b5a6e56e6ef550684e463fd454fc9df58fe30",
   "url": "https://stellate.app/?genre=bebop&seed=4734&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/922b5a6e56e6ef550684e463fd454fc9df58fe30",
   "title": "v4 Phase 3: unified timeFeel — swing/humanize/rubato as one family",
   "summary": "resolveTimeFeel(state) resolves the time dimensions to one spec applied in two stages: grid stage (applyGroove refactored — SWING_GRIDS table replaces the hardwired 8th special-case: \"8th\" byte-identical default, \"16th\" e/a offbeats, \"triplet\" generalized shuffle",
   "content_html": "<p>resolveTimeFeel(state) resolves the time dimensions to one spec applied in two stages: grid stage (applyGroove refactored — SWING_GRIDS table replaces the hardwired 8th special-case: &quot;8th&quot; byte-identical default, &quot;16th&quot; e/a offbeats, &quot;triplet&quot; generalized shuffle</p>\n<ul><li>Kernel: state.timeFeel {grid, pushPull} blendable zero-rng (dominant grid, pushPull union + value-lerp)</li><li>Charter deviation, justified: the shuffle-kit placement (L372) was NOT deleted — skip=0.5+(2/3-0.5)*sw/0.3 IS the blues triplet ride, not avoidance code; deleting it drifts blues for no sonic gain.</li></ul>\n<p><em>Verified:</em> verify.sh --no-cache PASS (matrix 63/63, validate, engine). Perf noise-dominated, no regression (medians overlap; best-of-8 1.15 vs 1.35 ms/state).</p>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=4734&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/922b5a6e56e6ef550684e463fd454fc9df58fe30\">922b5a6</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "resolveTimeFeel(state) resolves the time dimensions to one spec applied in two stages: grid stage (applyGroove refactored — SWING_GRIDS table replaces the hardwired 8th special-case: \"8th\" byte-identical default, \"16th\" e/a offbeats, \"triplet\" generalized shuffle\n\n• Kernel: state.timeFeel {grid, pushPull} blendable zero-rng (dominant grid, pushPull union + value-lerp)\n\n• Charter deviation, justified: the shuffle-kit placement (L372) was NOT deleted — skip=0.5+(2/3-0.5)*sw/0.3 IS the blues triplet ride, not avoidance code; deleting it drifts blues for no sonic gain.\n\nVerified: verify.sh --no-cache PASS (matrix 63/63, validate, engine). Perf noise-dominated, no regression (medians overlap; best-of-8 1.15 vs 1.35 ms/state).\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=4734&path=694.13834,713.13867,675.13867&xdur=13.122\n\n922b5a6 https://github.com/aboard-io/stellate/commit/922b5a6e56e6ef550684e463fd454fc9df58fe30",
   "date_published": "2026-07-04T05:12:41.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "b991e96beacce34d253562390a45e91113b691c0",
   "url": "https://stellate.app/?genre=bebop&seed=5435&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/b991e96beacce34d253562390a45e91113b691c0",
   "title": "v4 Phase 2: pattern-transform algebra as a blendable dimension",
   "summary": "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.",
   "content_html": "<p>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.</p>\n<ul><li>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</li><li>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…</li></ul>\n<p><em>Verified:</em> verify.sh --no-cache PASS (matrix 63/63, validate, engine). Perf 1.488 -&gt; 1.389 ms/state (315-state harness) — the unification is free</p>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=5435&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/b991e96beacce34d253562390a45e91113b691c0\">b991e96</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "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.\n\n• 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\n\n• 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…\n\nVerified: verify.sh --no-cache PASS (matrix 63/63, validate, engine). Perf 1.488 -> 1.389 ms/state (315-state harness) — the unification is free\n\n▶ 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\n\nb991e96 https://github.com/aboard-io/stellate/commit/b991e96beacce34d253562390a45e91113b691c0",
   "date_published": "2026-07-04T04:58:38.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "d9144c7211b7fb764875975093be0a7d4f5a0d5d",
   "url": "https://stellate.app/?genre=citypop&seed=2162&path=1530.6221,586.10667,1376.19565&xdur=0.056",
   "external_url": "https://github.com/aboard-io/stellate/commit/d9144c7211b7fb764875975093be0a7d4f5a0d5d",
   "title": "NEXT.md: record the multiband bake-vs-extract load measurements",
   "summary": "NEXT.md: record the multiband bake-vs-extract load measurements",
   "content_html": "<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=2162&amp;path=1530.6221,586.10667,1376.19565&amp;xdur=0.056\">▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/d9144c7211b7fb764875975093be0a7d4f5a0d5d\">d9144c7</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix https://stellate.app/?genre=citypop&seed=2162&path=1530.6221,586.10667,1376.19565&xdur=0.056\n\nd9144c7 https://github.com/aboard-io/stellate/commit/d9144c7211b7fb764875975093be0a7d4f5a0d5d",
   "date_published": "2026-07-04T04:45:59.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "downtempo",
    "dnb"
   ]
  },
  {
   "id": "a526c4ad0ace083a14dd479a1b5ea6e8beaeaa52",
   "url": "https://stellate.app/?genre=hogcore&seed=6357&path=1670.17099,1679.4415,196.11743&xdur=0.058",
   "external_url": "https://github.com/aboard-io/stellate/commit/a526c4ad0ace083a14dd479a1b5ea6e8beaeaa52",
   "title": "Wings 2-4: found-vocal auto-tune, crybaby wah insert, multiband glue",
   "summary": "STAGE 2 — auto-tune of the voice crates to song key (the unified deterministic clip-snap): found-player detects each clip's median F0 offline (decimated autocorrelation, first-peak anti-octave, parabolic interp, WeakMap-cached), bends playbackRate so the heard median lands on the nearest scale…",
   "content_html": "<p>STAGE 2 — auto-tune of the voice crates to song key (the unified deterministic clip-snap): found-player detects each clip's median F0 offline (decimated autocorrelation, first-peak anti-octave, parabolic interp, WeakMap-cached), bends playbackRate so the heard median lands on the nearest scale…</p>\n<ul><li>STAGE 3 — insert_wah.dsp (amp-follower resonant bandpass sweep, mix 0 = bit-exact bypass) into the disco/newjack/afrobeat bass insert pools at prob .4-.45; live prewarms it; probe-wah PASS.</li><li>STAGE 4 — multiband master glue as an EXTERNAL post-pass module (master_mb.dsp, 3-band gentle comp) selected via state.masterComp, keeping fx_bus at committed bytes (same pattern as reverb color)</li><li>Blast radius verified: state-hash sweep 63 genres x 3 seeds — exactly six genres changed (hogcore, vaporwave, spokenword, disco, newjack, afrobeat), 57 byte-identical</li></ul>\n<p><a href=\"https://stellate.app/?genre=hogcore&amp;seed=6357&amp;path=1670.17099,1679.4415,196.11743&amp;xdur=0.058\">▶ Play it: Perihelion Squeal → Food Court Eternity → Dial Tone Prophet — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/a526c4ad0ace083a14dd479a1b5ea6e8beaeaa52\">a526c4a</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "STAGE 2 — auto-tune of the voice crates to song key (the unified deterministic clip-snap): found-player detects each clip's median F0 offline (decimated autocorrelation, first-peak anti-octave, parabolic interp, WeakMap-cached), bends playbackRate so the heard median lands on the nearest scale…\n\n• STAGE 3 — insert_wah.dsp (amp-follower resonant bandpass sweep, mix 0 = bit-exact bypass) into the disco/newjack/afrobeat bass insert pools at prob .4-.45; live prewarms it; probe-wah PASS.\n\n• STAGE 4 — multiband master glue as an EXTERNAL post-pass module (master_mb.dsp, 3-band gentle comp) selected via state.masterComp, keeping fx_bus at committed bytes (same pattern as reverb color)\n\n• Blast radius verified: state-hash sweep 63 genres x 3 seeds — exactly six genres changed (hogcore, vaporwave, spokenword, disco, newjack, afrobeat), 57 byte-identical\n\n▶ Play it: Perihelion Squeal → Food Court Eternity → Dial Tone Prophet — the three genres this change names, as one path https://stellate.app/?genre=hogcore&seed=6357&path=1670.17099,1679.4415,196.11743&xdur=0.058\n\na526c4a https://github.com/aboard-io/stellate/commit/a526c4ad0ace083a14dd479a1b5ea6e8beaeaa52",
   "date_published": "2026-07-04T04:43:00.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "hogcore",
    "vaporwave",
    "spokenword",
    "voice"
   ]
  },
  {
   "id": "94afcb0ed68f80b069b0e27099344d2809477fec",
   "url": "https://stellate.app/?genre=neoclassical&seed=1750&path=859.2784,1405.21491,289.13893&xdur=0.04",
   "external_url": "https://github.com/aboard-io/stellate/commit/94afcb0ed68f80b069b0e27099344d2809477fec",
   "title": "Mellotron sampler-mode + hammond joins the verifier's acoustic list",
   "summary": "PART A — Mellotron tape mode on the native sampler, both engines: wow (~0.7Hz) + flutter (~7Hz) semitone undulation on playbackRate, 8s tape-strip cap with tape-runs-out pitch sag, gentle head-EQ.",
   "content_html": "<p>PART A — Mellotron tape mode on the native sampler, both engines: wow (~0.7Hz) + flutter (~7Hz) semitone undulation on playbackRate, 8s tape-strip cap with tape-runs-out pitch sag, gentle head-EQ.</p>\n<ul><li>PART B — measured both ways, then decided: hammond (a tonewheel organ, genuinely electro-mechanical) joins genre-verifier's acoustic model-list at organ-grade .6</li></ul>\n<p><em>Verified:</em> verify.sh PASS both parts: matrix 63/63, validate, engine smoke.</p>\n<p><a href=\"https://stellate.app/?genre=neoclassical&amp;seed=1750&amp;path=859.2784,1405.21491,289.13893&amp;xdur=0.04\">▶ Play it: Requiem Appendix → Titration Rapture → Cretaceous Vespers — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/94afcb0ed68f80b069b0e27099344d2809477fec\">94afcb0</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "PART A — Mellotron tape mode on the native sampler, both engines: wow (~0.7Hz) + flutter (~7Hz) semitone undulation on playbackRate, 8s tape-strip cap with tape-runs-out pitch sag, gentle head-EQ.\n\n• PART B — measured both ways, then decided: hammond (a tonewheel organ, genuinely electro-mechanical) joins genre-verifier's acoustic model-list at organ-grade .6\n\nVerified: verify.sh PASS both parts: matrix 63/63, validate, engine smoke.\n\n▶ Play it: Requiem Appendix → Titration Rapture → Cretaceous Vespers — the three genres this change names, as one path https://stellate.app/?genre=neoclassical&seed=1750&path=859.2784,1405.21491,289.13893&xdur=0.04\n\n94afcb0 https://github.com/aboard-io/stellate/commit/94afcb0ed68f80b069b0e27099344d2809477fec",
   "date_published": "2026-07-04T03:55:58.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "neoclassical",
    "acidhouse",
    "dinosynth",
    "sampler"
   ]
  },
  {
   "id": "9f31b02d363d190f2e4f5950cd0619cbe24fbb0e",
   "url": "https://stellate.app/?genre=vaporwave&seed=3709&path=1679.4415,289.13893,1336.7630&xdur=0.078",
   "external_url": "https://github.com/aboard-io/stellate/commit/9f31b02d363d190f2e4f5950cd0619cbe24fbb0e",
   "title": "Reverb COLOR as a genre dimension + crate-dig clips into the pools",
   "summary": "Faust wings stage 1: four reverb characters, each a precompiled 2-in/ 2-out module — dattorro plate (citypop/house), greyhole smear (witchhouse/dinosynth), dry freeverb FDN room (tango/blues/prelude), hand-rolled spring tank with dispersive allpass boing (surfrock, its identity).",
   "content_html": "<p>Faust wings stage 1: four reverb characters, each a precompiled 2-in/ 2-out module — dattorro plate (citypop/house), greyhole smear (witchhouse/dinosynth), dry freeverb FDN room (tango/blues/prelude), hand-rolled spring tank with dispersive allpass boing (surfrock, its identity).</p>\n<ul><li>Byte-safety trap documented in VOICES.md: a full node build.js churns all 97 committed wasm files (compiler not byte-deterministic)</li><li>Also: the 16 crate-dig library clips (cmm_/im_/jm_/la_/mo_ — commit c70d20d) wired into GENRE_CLIPS across 24 genre pools per the cueing crew's frame-inspection affinities (Bell Labs CGI -&gt; vaporwave/…</li><li>Wings stages 2-4 (auto-tune, wah, scale-snap/multiband) deferred with architecture notes in NEXT.md — the found layer is native, so auto-tune needs the unified deterministic clip-snap, not a Faust drop-in.</li></ul>\n<p><em>Verified:</em> verify.sh PASS: matrix 63/63, validate, engine press smoke.</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=3709&amp;path=1679.4415,289.13893,1336.7630&amp;xdur=0.078\">▶ Play it: Food Court Eternity → Cretaceous Vespers → Sprite Metabolism — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/9f31b02d363d190f2e4f5950cd0619cbe24fbb0e\">9f31b02</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Faust wings stage 1: four reverb characters, each a precompiled 2-in/ 2-out module — dattorro plate (citypop/house), greyhole smear (witchhouse/dinosynth), dry freeverb FDN room (tango/blues/prelude), hand-rolled spring tank with dispersive allpass boing (surfrock, its identity).\n\n• Byte-safety trap documented in VOICES.md: a full node build.js churns all 97 committed wasm files (compiler not byte-deterministic)\n\n• Also: the 16 crate-dig library clips (cmm_/im_/jm_/la_/mo_ — commit c70d20d) wired into GENRE_CLIPS across 24 genre pools per the cueing crew's frame-inspection affinities (Bell Labs CGI -> vaporwave/…\n\n• Wings stages 2-4 (auto-tune, wah, scale-snap/multiband) deferred with architecture notes in NEXT.md — the found layer is native, so auto-tune needs the unified deterministic clip-snap, not a Faust drop-in.\n\nVerified: verify.sh PASS: matrix 63/63, validate, engine press smoke.\n\n▶ Play it: Food Court Eternity → Cretaceous Vespers → Sprite Metabolism — the three genres this change names, as one path https://stellate.app/?genre=vaporwave&seed=3709&path=1679.4415,289.13893,1336.7630&xdur=0.078\n\n9f31b02 https://github.com/aboard-io/stellate/commit/9f31b02d363d190f2e4f5950cd0619cbe24fbb0e",
   "date_published": "2026-07-04T03:26:53.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "dinosynth",
    "chiptune",
    "harmony"
   ]
  },
  {
   "id": "12a235daa42abe7d42a12be2da91824e4cc0b26e",
   "url": "https://stellate.app/?genre=transitwave&seed=6506&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/12a235daa42abe7d42a12be2da91824e4cc0b26e",
   "title": "Cue the crate-dig video library: cut-lib-clips.sh recipe + credits",
   "summary": "The ~525MB of orphaned reels in found/video/lib/ (no fetch recipe, no cue manifest, from the crew that died on credit exhaustion) are now cued: 16 silent 640px clips across 5 reels — Bell Labs early CGI incl.",
   "content_html": "<p>The ~525MB of orphaned reels in found/video/lib/ (no fetch recipe, no cue manifest, from the crew that died on credit exhaustion) are now cued: 16 silent 640px clips across 5 reels — Bell Labs early CGI incl.</p>\n<ul><li>anime_momotaro_umiwashi (1943) left UN-CUED: explicit air-raid propaganda + racial caricature, no usable windows — flagged in SOURCES.md for human review/deletion.</li><li>GENRE_CLIPS pool additions wait on the kernel file (wings crew holds it); the suggested per-genre list is in segments.json genre tags.</li></ul>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=6506&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/12a235daa42abe7d42a12be2da91824e4cc0b26e\">12a235d</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The ~525MB of orphaned reels in found/video/lib/ (no fetch recipe, no cue manifest, from the crew that died on credit exhaustion) are now cued: 16 silent 640px clips across 5 reels — Bell Labs early CGI incl.\n\n• anime_momotaro_umiwashi (1943) left UN-CUED: explicit air-raid propaganda + racial caricature, no usable windows — flagged in SOURCES.md for human review/deletion.\n\n• GENRE_CLIPS pool additions wait on the kernel file (wings crew holds it); the suggested per-genre list is in segments.json genre tags.\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=6506&path=749.12536,768.12569,730.12569&xdur=13.122\n\n12a235d https://github.com/aboard-io/stellate/commit/12a235daa42abe7d42a12be2da91824e4cc0b26e",
   "date_published": "2026-07-04T03:19:59.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "3c3de93c730358f35bf005c74055c5d7a5a8e573",
   "url": "https://stellate.app/?genre=citypop&seed=9364&path=1530.6221,586.10667,1376.19565&xdur=0.056",
   "external_url": "https://github.com/aboard-io/stellate/commit/3c3de93c730358f35bf005c74055c5d7a5a8e573",
   "title": "NEXT.md: fleet round landed; queue = wings, mellotron, verifier organs",
   "summary": "NEXT.md: fleet round landed; queue = wings, mellotron, verifier organs",
   "content_html": "<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=9364&amp;path=1530.6221,586.10667,1376.19565&amp;xdur=0.056\">▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/3c3de93c730358f35bf005c74055c5d7a5a8e573\">3c3de93</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix https://stellate.app/?genre=citypop&seed=9364&path=1530.6221,586.10667,1376.19565&xdur=0.056\n\n3c3de93 https://github.com/aboard-io/stellate/commit/3c3de93c730358f35bf005c74055c5d7a5a8e573",
   "date_published": "2026-07-04T02:47:36.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "downtempo",
    "dnb"
   ]
  },
  {
   "id": "38267fea1c85e1f5c92ebd0e0214b0f03b7b644b",
   "url": "https://stellate.app/?genre=italo&seed=9210&path=1784.4857,639.7941,1530.6221&xdur=0.227",
   "external_url": "https://github.com/aboard-io/stellate/commit/38267fea1c85e1f5c92ebd0e0214b0f03b7b644b",
   "title": "Integrate synth fleet: stereo voice path, live mono-legato, 303 accent/slide",
   "summary": "Wires the nine 5f8c11e voices into the engine and genre space; all gates green (verify.sh --no-cache: matrix 63/63, validate 5/1/0, engine PASS; live smoke RMS 60/60 nonzero, 0 console errors).",
   "content_html": "<p>Wires the nine 5f8c11e voices into the engine and genre space; all gates green (verify.sh --no-cache: matrix 63/63, validate 5/1/0, engine PASS; live smoke RMS 60/60 nonzero, 0 console errors).</p>\n<ul><li>manifest.json: full rebuild registers all nine (juno60/hammond/vp330 outputs:2); recompiled binaries reverted to committed bytes, diff is manifest-only</li><li>state-engine.js: pitchedUnit cases for all nine with recipe mappings per the builder contracts; disambiguated keys (chorusSpread, czWave, czDetune, syncDetune, obDetune, vpDetune) where shared names collide</li><li>STEREO voice path (first 2-out voices): press accumulates [0]/[1] into wide L/R dry buses (sends stay mono-sum); live splits dryBus through a ChannelSplitter into merger L/R, mono voices up-mix centered.</li><li><strong>LIVE MONO-LEGATO</strong> — pool forced to 1 when u.mono, all notes to node 0, params set before gate-on, gate HELD across legato groups (press parity). probe-modeld: nodes 3-&gt;1, re-attacks many-&gt;1, 19 glide runs.</li></ul>\n<p><a href=\"https://stellate.app/?genre=italo&amp;seed=9210&amp;path=1784.4857,639.7941,1530.6221&amp;xdur=0.227\">▶ Play it: Espresso Laser → Cosmodrome Lullaby → Neon Fiscal Year — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/38267fea1c85e1f5c92ebd0e0214b0f03b7b644b\">38267fe</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Wires the nine 5f8c11e voices into the engine and genre space; all gates green (verify.sh --no-cache: matrix 63/63, validate 5/1/0, engine PASS; live smoke RMS 60/60 nonzero, 0 console errors).\n\n• manifest.json: full rebuild registers all nine (juno60/hammond/vp330 outputs:2); recompiled binaries reverted to committed bytes, diff is manifest-only\n\n• state-engine.js: pitchedUnit cases for all nine with recipe mappings per the builder contracts; disambiguated keys (chorusSpread, czWave, czDetune, syncDetune, obDetune, vpDetune) where shared names collide\n\n• STEREO voice path (first 2-out voices): press accumulates [0]/[1] into wide L/R dry buses (sends stay mono-sum); live splits dryBus through a ChannelSplitter into merger L/R, mono voices up-mix centered.\n\nLIVE MONO-LEGATO — pool forced to 1 when u.mono, all notes to node 0, params set before gate-on, gate HELD across legato groups (press parity). probe-modeld: nodes 3->1, re-attacks many->1, 19 glide runs.\n\n▶ Play it: Espresso Laser → Cosmodrome Lullaby → Neon Fiscal Year — the three genres this change names, as one path https://stellate.app/?genre=italo&seed=9210&path=1784.4857,639.7941,1530.6221&xdur=0.227\n\n38267fe https://github.com/aboard-io/stellate/commit/38267fea1c85e1f5c92ebd0e0214b0f03b7b644b",
   "date_published": "2026-07-04T02:46:50.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "italo",
    "sovietwave",
    "citypop",
    "harmony"
   ]
  },
  {
   "id": "844f45b537067978cd04b49b0fee477e7339ba3c",
   "url": "https://stellate.app/?genre=hogcore&seed=1701&path=1670.17099,896.90,1101.20850&xdur=0.036",
   "external_url": "https://github.com/aboard-io/stellate/commit/844f45b537067978cd04b49b0fee477e7339ba3c",
   "title": "Synth fleet (9 voices) + genre-tool.js + hogcore/prelude commissions",
   "summary": "Nine classic-synth Faust voices, every one compiled clean and probe- verified on real offline renders (identity behaviors measured, not assumed): juno60 (BBD chorus widener, first stereo voice), tb303 (true accent/slide semantics",
   "content_html": "<p>Nine classic-synth Faust voices, every one compiled clean and probe- verified on real offline renders (identity behaviors measured, not assumed): juno60 (BBD chorus widener, first stereo voice), tb303 (true accent/slide semantics</p>\n<ul><li>hogcore (spec in genre-specs/): 24 espeak HP names as the hook — pitched-up chops + rotating station names + drop stabs over simple 150-164 hyperpop; self-score 100, nearest gabber 98 (keeps its diagonal)</li><li>prelude: Bach broken-chord 16ths, chordEvery:16 (v4 Phase 1's first real user), felt piano/bright grand, kit off, light rubato; self- score 100, nearest newage 96/neoclassical 95</li></ul>\n<p><em>Verified:</em> verify.sh PASS: matrix 63/63 diagonal-dominant, validate 5 pass/1 pre-existing wash-cluster warn, engine press smoke non-silent.</p>\n<p><a href=\"https://stellate.app/?genre=hogcore&amp;seed=1701&amp;path=1670.17099,896.90,1101.20850&amp;xdur=0.036\">▶ Play it: Perihelion Squeal → The Turning Stair → Congregation Furnace — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/844f45b537067978cd04b49b0fee477e7339ba3c\">844f45b</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Nine classic-synth Faust voices, every one compiled clean and probe- verified on real offline renders (identity behaviors measured, not assumed): juno60 (BBD chorus widener, first stereo voice), tb303 (true accent/slide semantics\n\n• hogcore (spec in genre-specs/): 24 espeak HP names as the hook — pitched-up chops + rotating station names + drop stabs over simple 150-164 hyperpop; self-score 100, nearest gabber 98 (keeps its diagonal)\n\n• prelude: Bach broken-chord 16ths, chordEvery:16 (v4 Phase 1's first real user), felt piano/bright grand, kit off, light rubato; self- score 100, nearest newage 96/neoclassical 95\n\nVerified: verify.sh PASS: matrix 63/63 diagonal-dominant, validate 5 pass/1 pre-existing wash-cluster warn, engine press smoke non-silent.\n\n▶ Play it: Perihelion Squeal → The Turning Stair → Congregation Furnace — the three genres this change names, as one path https://stellate.app/?genre=hogcore&seed=1701&path=1670.17099,896.90,1101.20850&xdur=0.036\n\n844f45b https://github.com/aboard-io/stellate/commit/844f45b537067978cd04b49b0fee477e7339ba3c",
   "date_published": "2026-07-04T02:00:33.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "hogcore",
    "prelude",
    "house",
    "voice"
   ]
  },
  {
   "id": "d4f7411a8cc351c943a06df2ae1923ab0f6121df",
   "url": "https://stellate.app/?genre=hogcore&seed=1850&path=1670.17099,859.9931,1784.4857&xdur=0.061",
   "external_url": "https://github.com/aboard-io/stellate/commit/d4f7411a8cc351c943a06df2ae1923ab0f6121df",
   "title": "Model D voice + live DX7 patch morphing; hogcore material; handoff",
   "summary": "Four crews died mid-task on credit exhaustion; this commits the coherent survivors (all pass verify.sh + live headless smoke):",
   "content_html": "<p>Four crews died mid-task on credit exhaustion; this commits the coherent survivors (all pass verify.sh + live headless smoke):</p>\n<ul><li>Model D voice (faust/dsp/modeld.dsp): 3-osc + ladder + filter-env + drive + portamento/glide, mono-legato pool; wired to synthwave/ darksynth/edm/krautrock/italo/disco/spacelounge; presses clean</li><li>Live DX7 patch morphing (explorer.html, faust/live.js): discrete voice-flips now deep-copy the dx7+sampler object; same-algorithm blends lerp the 144-dim param vector live</li><li>hogcore material: 24 espeak HP-name voices (found/, gitignored) + fetch recipe; genre-tool.js + anchor still TODO (crew died blocked)</li><li>NEXT.md: full state + queue for the next session</li></ul>\n<p><em>Verified:</em> verify.sh PASS (matrix 61/61, validate, engine); orphan crate-dig video (~525MB, gitignored, no manifest yet) noted in NEXT.md</p>\n<p><a href=\"https://stellate.app/?genre=hogcore&amp;seed=1850&amp;path=1670.17099,859.9931,1784.4857&amp;xdur=0.061\">▶ Play it: Perihelion Squeal → Highway Heat Death → Espresso Laser — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/d4f7411a8cc351c943a06df2ae1923ab0f6121df\">d4f7411</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Four crews died mid-task on credit exhaustion; this commits the coherent survivors (all pass verify.sh + live headless smoke):\n\n• Model D voice (faust/dsp/modeld.dsp): 3-osc + ladder + filter-env + drive + portamento/glide, mono-legato pool; wired to synthwave/ darksynth/edm/krautrock/italo/disco/spacelounge; presses clean\n\n• Live DX7 patch morphing (explorer.html, faust/live.js): discrete voice-flips now deep-copy the dx7+sampler object; same-algorithm blends lerp the 144-dim param vector live\n\n• hogcore material: 24 espeak HP-name voices (found/, gitignored) + fetch recipe; genre-tool.js + anchor still TODO (crew died blocked)\n\n• NEXT.md: full state + queue for the next session\n\nVerified: verify.sh PASS (matrix 61/61, validate, engine); orphan crate-dig video (~525MB, gitignored, no manifest yet) noted in NEXT.md\n\n▶ Play it: Perihelion Squeal → Highway Heat Death → Espresso Laser — the three genres this change names, as one path https://stellate.app/?genre=hogcore&seed=1850&path=1670.17099,859.9931,1784.4857&xdur=0.061\n\nd4f7411 https://github.com/aboard-io/stellate/commit/d4f7411a8cc351c943a06df2ae1923ab0f6121df",
   "date_published": "2026-07-04T01:25:40.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "hogcore",
    "synthwave",
    "italo",
    "voice"
   ]
  },
  {
   "id": "54e29de5ee0643f841dcf738713f98a031ff8917",
   "url": "https://stellate.app/?genre=citypop&seed=5701&path=1530.6221,586.10667,1376.19565&xdur=0.056",
   "external_url": "https://github.com/aboard-io/stellate/commit/54e29de5ee0643f841dcf738713f98a031ff8917",
   "title": "Zoom laws: pinch scales type, white-on-interact, chrome pixel-locked",
   "summary": "label font = 11px * clamp(k^0.85, 1, 3); badges/offsets scale with it",
   "content_html": "<p>label font = 11px * clamp(k^0.85, 1, 3); badges/offsets scale with it</p>\n<ul><li>anchors flash white during any map interaction, ease back over .45s</li><li>page-zoom leaks closed (viewport max-scale, body touch-action, ctrl+wheel and Safari gesture preventDefault) — chips/video/brand rects byte-identical under synthetic pinch; park-at-2.5x error 0</li></ul>\n<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=5701&amp;path=1530.6221,586.10667,1376.19565&amp;xdur=0.056\">▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/54e29de5ee0643f841dcf738713f98a031ff8917\">54e29de</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "label font = 11px * clamp(k^0.85, 1, 3); badges/offsets scale with it\n\n• anchors flash white during any map interaction, ease back over .45s\n\n• page-zoom leaks closed (viewport max-scale, body touch-action, ctrl+wheel and Safari gesture preventDefault) — chips/video/brand rects byte-identical under synthetic pinch; park-at-2.5x error 0\n\n▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix https://stellate.app/?genre=citypop&seed=5701&path=1530.6221,586.10667,1376.19565&xdur=0.056\n\n54e29de https://github.com/aboard-io/stellate/commit/54e29de5ee0643f841dcf738713f98a031ff8917",
   "date_published": "2026-07-04T00:44:33.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "downtempo",
    "dnb"
   ]
  },
  {
   "id": "ffb68873db974be6deb31572f1f5e7430ff98970",
   "url": "https://stellate.app/?genre=bigband&seed=6563&path=814.14134,833.14167,795.14167&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/ffb68873db974be6deb31572f1f5e7430ff98970",
   "title": "v4 Phase 1: pulse-set rhythm lanes; audio laws; census recovered",
   "summary": "18 procedural kits -> KITS data lanes + one interpreter; euclid is lane notation not an overlay; chordEvery dimension replaces the CHORD_BEATS=8 assumption (default 8, zero rng when absent)",
   "content_html": "<p>18 procedural kits -&gt; KITS data lanes + one interpreter; euclid is lane notation not an overlay; chordEvery dimension replaces the CHORD_BEATS=8 assumption (default 8, zero rng when absent)</p>\n<ul><li>fixtures.js harness: 1017/1017 hashes byte-stable across the refactor; buildEvents ~30% faster (2.1 -&gt; 1.4 ms/state)</li><li>audio laws (human-calibrated): crackle -6dB at the one realization point; noise sweeps -9dB with deep resonant cuts (riser 150-2200Hz res .72) — in-context riser contribution -18 -&gt; -35dB peak</li><li>lost transitions census reconstructed: micro lick 31.8% / kit fill 23.3% of auto picks, sweep 0%; 3-min rule firing 72/183 tracks; sampler 200/366; honky_tonk wired into blues comping</li><li>render-sample-video cut-lock math learns chordEvery</li></ul>\n<p><a href=\"https://stellate.app/?genre=bigband&amp;seed=6563&amp;path=814.14134,833.14167,795.14167&amp;xdur=13.122\">▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/ffb68873db974be6deb31572f1f5e7430ff98970\">ffb6887</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "18 procedural kits -> KITS data lanes + one interpreter; euclid is lane notation not an overlay; chordEvery dimension replaces the CHORD_BEATS=8 assumption (default 8, zero rng when absent)\n\n• fixtures.js harness: 1017/1017 hashes byte-stable across the refactor; buildEvents ~30% faster (2.1 -> 1.4 ms/state)\n\n• audio laws (human-calibrated): crackle -6dB at the one realization point; noise sweeps -9dB with deep resonant cuts (riser 150-2200Hz res .72) — in-context riser contribution -18 -> -35dB peak\n\n• lost transitions census reconstructed: micro lick 31.8% / kit fill 23.3% of auto picks, sweep 0%; 3-min rule firing 72/183 tracks; sampler 200/366; honky_tonk wired into blues comping\n\n• render-sample-video cut-lock math learns chordEvery\n\n▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments https://stellate.app/?genre=bigband&seed=6563&path=814.14134,833.14167,795.14167&xdur=13.122\n\nffb6887 https://github.com/aboard-io/stellate/commit/ffb68873db974be6deb31572f1f5e7430ff98970",
   "date_published": "2026-07-04T00:41:27.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bigband",
    "sampler"
   ]
  },
  {
   "id": "ae241f6248b0210b3400b7869f34e1ca66a6a694",
   "url": "https://stellate.app/?genre=neoclassical&seed=5914&path=859.2762,878.2795,840.2795&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/ae241f6248b0210b3400b7869f34e1ca66a6a694",
   "title": "Neoclassical deep pass + musical transitions round (merged)",
   "summary": "neoclassical: felt piano (2/3+ lead+bass), strings swell pads (organ purged), contrary-motion counterpoint, pedal thunks, RUBATO as a real time dimension (beat-warp in buildEvents, all layers sample-locked, 0.15ms skew); margins vs ambient/newage +0 -> +6/+7",
   "content_html": "<p>neoclassical: felt piano (2/3+ lead+bass), strings swell pads (organ purged), contrary-motion counterpoint, pedal thunks, RUBATO as a real time dimension (beat-warp in buildEvents, all layers sample-locked, 0.15ms skew); margins vs ambient/newage +0 -&gt; +6/+7</p>\n<ul><li>transitions round (report lost to API error, edits verified in-tree + verify.sh green): sampler micro-lick transitions, 3-min evolution rule, soundfont liberalization, sweep demotion</li></ul>\n<p><em>Verified:</em> verify.sh PASS 9.8s on merged tree</p>\n<p><a href=\"https://stellate.app/?genre=neoclassical&amp;seed=5914&amp;path=859.2762,878.2795,840.2795&amp;xdur=13.122\">▶ Play it: Requiem Appendix — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/ae241f6248b0210b3400b7869f34e1ca66a6a694\">ae241f6</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "neoclassical: felt piano (2/3+ lead+bass), strings swell pads (organ purged), contrary-motion counterpoint, pedal thunks, RUBATO as a real time dimension (beat-warp in buildEvents, all layers sample-locked, 0.15ms skew); margins vs ambient/newage +0 -> +6/+7\n\n• transitions round (report lost to API error, edits verified in-tree + verify.sh green): sampler micro-lick transitions, 3-min evolution rule, soundfont liberalization, sweep demotion\n\nVerified: verify.sh PASS 9.8s on merged tree\n\n▶ Play it: Requiem Appendix — parked on the genre this change names https://stellate.app/?genre=neoclassical&seed=5914&path=859.2762,878.2795,840.2795&xdur=13.122\n\nae241f6 https://github.com/aboard-io/stellate/commit/ae241f6248b0210b3400b7869f34e1ca66a6a694",
   "date_published": "2026-07-03T23:53:50.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "neoclassical",
    "sampler"
   ]
  },
  {
   "id": "4343fb27dce07c73203867fac6f630c655f50836",
   "url": "https://stellate.app/?genre=bigband&seed=1679&path=814.14134,833.14167,795.14167&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/4343fb27dce07c73203867fac6f630c655f50836",
   "title": "Blues deep pass (acoustic soul) + verification suite 5x-20x faster",
   "summary": "upright bass via sampler-for-bass (sub gone), sampled organ COMPING not wash, blue-note bends (playbackRate glides, live+press parity), shuffle kit on the true triplet grid, 2-bar call/response with the 1920s 78rpm singer answered by the guitar",
   "content_html": "<p>upright bass via sampler-for-bass (sub gone), sampled organ COMPING not wash, blue-note bends (playbackRate glides, live+press parity), shuffle kit on the true triplet grid, 2-bar call/response with the 1920s 78rpm singer answered by the guitar</p>\n<p><em>Verified:</em> verify: matrix per-cell rebuild hoisted (23s-&gt;1.2s), content-addressed cache (0.17s replays), sharding, concurrent press smoke, verify.sh gates: matrix 61/61 (blues 100 vs jazz 99), validate…</p>\n<p><a href=\"https://stellate.app/?genre=bigband&amp;seed=1679&amp;path=814.14134,833.14167,795.14167&amp;xdur=13.122\">▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/4343fb27dce07c73203867fac6f630c655f50836\">4343fb2</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "upright bass via sampler-for-bass (sub gone), sampled organ COMPING not wash, blue-note bends (playbackRate glides, live+press parity), shuffle kit on the true triplet grid, 2-bar call/response with the 1920s 78rpm singer answered by the guitar\n\nVerified: verify: matrix per-cell rebuild hoisted (23s->1.2s), content-addressed cache (0.17s replays), sharding, concurrent press smoke, verify.sh gates: matrix 61/61 (blues 100 vs jazz 99), validate…\n\n▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments https://stellate.app/?genre=bigband&seed=1679&path=814.14134,833.14167,795.14167&xdur=13.122\n\n4343fb2 https://github.com/aboard-io/stellate/commit/4343fb27dce07c73203867fac6f630c655f50836",
   "date_published": "2026-07-03T22:53:28.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bigband",
    "sampler"
   ]
  },
  {
   "id": "b239e8e563ffcff5e1b4342a27a15d79dc4084ba",
   "url": "https://stellate.app/?genre=citypop&seed=7621&path=1530.6199,1549.6232,1511.6232&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/b239e8e563ffcff5e1b4342a27a15d79dc4084ba",
   "title": "Variety round: 114 DX7 presets, SoundFont sampler, acoustic identities",
   "summary": "DX7 — 8 factory ROMs decoded/curated to 114 presets across 27 anchors; 24 algorithm modules; patch morphing in blends",
   "content_html": "<ul><li><strong>DX7</strong> — 8 factory ROMs decoded/curated to 114 presets across 27 anchors; 24 algorithm modules; patch morphing in blends</li><li>SoundFonts: sf2.js zone parser + sampler model (FluidR3 MIT) — sax, guitars, trumpet, flute, clarinet, vibes, strings, bandoneon; acoustic genres now LEAD with sampled voices (jazz sax 2/3, tango bandoneon 3/3)</li><li>tango rebuilt from evidence: frost purged, pad wall down (1/8 at .31), dry, habanera piano bass; ear-proxy gate: 3/3 minor vs citypop 3/3 major</li><li>bass patterns syncopated+pedal; arps rebalanced; cycle mutation 98.6%</li></ul>\n<p><em>Verified:</em> matrix 61/61, validate PASS, 10/10 loop sustains, load 0.98</p>\n<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=7621&amp;path=1530.6199,1549.6232,1511.6232&amp;xdur=13.122\">▶ Play it: Neon Fiscal Year — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/b239e8e563ffcff5e1b4342a27a15d79dc4084ba\">b239e8e</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "DX7 — 8 factory ROMs decoded/curated to 114 presets across 27 anchors; 24 algorithm modules; patch morphing in blends\n\n• SoundFonts: sf2.js zone parser + sampler model (FluidR3 MIT) — sax, guitars, trumpet, flute, clarinet, vibes, strings, bandoneon; acoustic genres now LEAD with sampled voices (jazz sax 2/3, tango bandoneon 3/3)\n\n• tango rebuilt from evidence: frost purged, pad wall down (1/8 at .31), dry, habanera piano bass; ear-proxy gate: 3/3 minor vs citypop 3/3 major\n\n• bass patterns syncopated+pedal; arps rebalanced; cycle mutation 98.6%\n\nVerified: matrix 61/61, validate PASS, 10/10 loop sustains, load 0.98\n\n▶ Play it: Neon Fiscal Year — parked on the genre this change names https://stellate.app/?genre=citypop&seed=7621&path=1530.6199,1549.6232,1511.6232&xdur=13.122\n\nb239e8e https://github.com/aboard-io/stellate/commit/b239e8e563ffcff5e1b4342a27a15d79dc4084ba",
   "date_published": "2026-07-03T22:02:29.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "sampler"
   ]
  },
  {
   "id": "954fe28a4aea46cf662376d6e42ca3eb5f1dd2fc",
   "url": "https://stellate.app/?genre=ragtime&seed=8522&path=753.14435,772.14468,734.14468&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/954fe28a4aea46cf662376d6e42ca3eb5f1dd2fc",
   "title": "Mixer, per-voice insert FX as vector dimensions, automated fills",
   "summary": "mixer modal: 10 layer taps/meters/faders/mute-solo; buried-vs-absent answered at a glance (not-in-this-section state)",
   "content_html": "<p>mixer modal: 10 layer taps/meters/faders/mute-solo; buried-vs-absent answered at a glance (not-in-this-section state)</p>\n<ul><li>insert FX dimension: distort/phaser/chorus/filtersweep pools on ~32 anchors, blended + constrained like every dimension; kernel emits instruments.*.inserts</li><li>fills: 100% of major section boundaries filled, seeded no-repeat, 3 new flavors (snare roll, stutter gate, dropout); genre-curated</li></ul>\n<p><em>Verified:</em> matrix 61/61, validate PASS, ab regression md5-identical, live load &gt;=0.97 with inserts + mixer</p>\n<p><a href=\"https://stellate.app/?genre=ragtime&amp;seed=8522&amp;path=753.14435,772.14468,734.14468&amp;xdur=13.122\">▶ Play it: Perforated Afterlife — the anchor authored from a measured corpus of real melodies</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/954fe28a4aea46cf662376d6e42ca3eb5f1dd2fc\">954fe28</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "mixer modal: 10 layer taps/meters/faders/mute-solo; buried-vs-absent answered at a glance (not-in-this-section state)\n\n• insert FX dimension: distort/phaser/chorus/filtersweep pools on ~32 anchors, blended + constrained like every dimension; kernel emits instruments.*.inserts\n\n• fills: 100% of major section boundaries filled, seeded no-repeat, 3 new flavors (snare roll, stutter gate, dropout); genre-curated\n\nVerified: matrix 61/61, validate PASS, ab regression md5-identical, live load >=0.97 with inserts + mixer\n\n▶ Play it: Perforated Afterlife — the anchor authored from a measured corpus of real melodies https://stellate.app/?genre=ragtime&seed=8522&path=753.14435,772.14468,734.14468&xdur=13.122\n\n954fe28 https://github.com/aboard-io/stellate/commit/954fe28a4aea46cf662376d6e42ca3eb5f1dd2fc",
   "date_published": "2026-07-03T20:54:06.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ragtime",
    "melody"
   ]
  },
  {
   "id": "efc2470961a29ad4abcc84b1fe14207e05e16ffd",
   "url": "https://stellate.app/?genre=synthwave&seed=9793&path=859.9909,878.9942,840.9942&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/efc2470961a29ad4abcc84b1fe14207e05e16ffd",
   "title": "Clean-sky modal chrome; audio survives background tabs",
   "summary": "sky shows brand + three chips (play/stop, chyron, controls); panel and lower-third are modals (backdrop/Esc/chip dismiss)",
   "content_html": "<p>sky shows brand + three chips (play/stop, chyron, controls); panel and lower-third are modals (backdrop/Esc/chip dismiss)</p>\n<ul><li>lookahead 4-&gt;6s vs background timer clamp; visibility/focus resume handlers; audited: nothing in the audio path depends on rAF</li></ul>\n<p><a href=\"https://stellate.app/?genre=synthwave&amp;seed=9793&amp;path=859.9909,878.9942,840.9942&amp;xdur=13.122\">▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/efc2470961a29ad4abcc84b1fe14207e05e16ffd\">efc2470</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "sky shows brand + three chips (play/stop, chyron, controls); panel and lower-third are modals (backdrop/Esc/chip dismiss)\n\n• lookahead 4->6s vs background timer clamp; visibility/focus resume handlers; audited: nothing in the audio path depends on rAF\n\n▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration https://stellate.app/?genre=synthwave&seed=9793&path=859.9909,878.9942,840.9942&xdur=13.122\n\nefc2470 https://github.com/aboard-io/stellate/commit/efc2470961a29ad4abcc84b1fe14207e05e16ffd",
   "date_published": "2026-07-03T20:09:30.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "synthwave",
    "synth"
   ]
  },
  {
   "id": "21542dc53cd2753e22fd730e1d477f4465b502fa",
   "url": "https://stellate.app/?genre=vaporwave&seed=4869&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/21542dc53cd2753e22fd730e1d477f4465b502fa",
   "title": "Live engine: instant stop, declicked, single-clock scheduler; one overlay; map pinch zoom",
   "summary": "stop: master mute ramp (60ms) + scheduler abort + found stopAll + ctx close — reverb tails and pre-scheduled grains no longer survive",
   "content_html": "<p>stop: master mute ramp (60ms) + scheduler abort + found stopAll + ctx close — reverb tails and pre-scheduled grains no longer survive</p>\n<ul><li>clicks: chop-sag step -&gt; ramp (csound parity), glide params via setTargetAtTime, voice-steal declick dip, looping grains (no mid-hann truncation)</li><li>tempo drift root cause: per-event ctx.currentTime re-sampling + awaits mid-bar gave layers different clocks; now all awaits precede time math, one now per bar, uniform late shift</li><li><strong>UI</strong> — playhead/chyron/status merged into one hideable lower-third; pinch / ctrl+wheel zoom on the star chart only (1-4x, exact inverse mapping verified while parked at 2x)</li></ul>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=4869&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — the brightest, most processed corner of the space</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/21542dc53cd2753e22fd730e1d477f4465b502fa\">21542dc</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "stop: master mute ramp (60ms) + scheduler abort + found stopAll + ctx close — reverb tails and pre-scheduled grains no longer survive\n\n• clicks: chop-sag step -> ramp (csound parity), glide params via setTargetAtTime, voice-steal declick dip, looping grains (no mid-hann truncation)\n\n• tempo drift root cause: per-event ctx.currentTime re-sampling + awaits mid-bar gave layers different clocks; now all awaits precede time math, one now per bar, uniform late shift\n\nUI — playhead/chyron/status merged into one hideable lower-third; pinch / ctrl+wheel zoom on the star chart only (1-4x, exact inverse mapping verified while parked at 2x)\n\n▶ Play it: Food Court Eternity — the brightest, most processed corner of the space https://stellate.app/?genre=vaporwave&seed=4869&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\n21542dc https://github.com/aboard-io/stellate/commit/21542dc53cd2753e22fd730e1d477f4465b502fa",
   "date_published": "2026-07-03T19:47:04.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "mix"
   ]
  },
  {
   "id": "e0bb94eb3aa07dc881ad95a7c24d7054de093829",
   "url": "https://stellate.app/?genre=spokenword&seed=2739&path=196.11743,1220.4964,1530.6221&xdur=0.108",
   "external_url": "https://github.com/aboard-io/stellate/commit/e0bb94eb3aa07dc881ad95a7c24d7054de093829",
   "title": "61 genres; MTV chyron; auto-journeys; spokenword fix; strudel+csound removed",
   "summary": "Round 3: 29 anchors (citypop shibuyakei bossanova idm electro miamibass phonk witchhouse mallsoft wintersynth gabber psytrance minimal deephouse coldwave ebm krautrock newjack breakcore acidhouse surfrock spacelounge arabpop tango afrobeat desertblues sludgemetal industrialmetal darksynth) with…",
   "content_html": "<p>Round 3: 29 anchors (citypop shibuyakei bossanova idm electro miamibass phonk witchhouse mallsoft wintersynth gabber psytrance minimal deephouse coldwave ebm krautrock newjack breakcore acidhouse surfrock spacelounge arabpop tango afrobeat desertblues sludgemetal industrialmetal darksynth) with…</p>\n<ul><li>spokenword root cause: archive recordings open with minutes of tape hiss; found-player now finds sustained active audio, refetches deeper, boost- normalizes speech (voice provably in the mix)</li><li>explorer: boots with a seeded 3-stop journey across distant anchors; MTV chyron via shared namebank.js (48 banks; deterministic band/album/label + per-instrument musicians that change on lineup flips)</li><li>simplification: strudel surface + csound removed from main (all preserved on legacy-csound); builder/play tombstoned; engine.test = faust smoke; scratch renders swept to scratch/</li></ul>\n<p><a href=\"https://stellate.app/?genre=spokenword&amp;seed=2739&amp;path=196.11743,1220.4964,1530.6221&amp;xdur=0.108\">▶ Play it: Dial Tone Prophet → Chrome Cotillion → Neon Fiscal Year — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/e0bb94eb3aa07dc881ad95a7c24d7054de093829\">e0bb94e</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Round 3: 29 anchors (citypop shibuyakei bossanova idm electro miamibass phonk witchhouse mallsoft wintersynth gabber psytrance minimal deephouse coldwave ebm krautrock newjack breakcore acidhouse surfrock spacelounge arabpop tango afrobeat desertblues sludgemetal industrialmetal darksynth) with…\n\n• spokenword root cause: archive recordings open with minutes of tape hiss; found-player now finds sustained active audio, refetches deeper, boost- normalizes speech (voice provably in the mix)\n\n• explorer: boots with a seeded 3-stop journey across distant anchors; MTV chyron via shared namebank.js (48 banks; deterministic band/album/label + per-instrument musicians that change on lineup flips)\n\n• simplification: strudel surface + csound removed from main (all preserved on legacy-csound); builder/play tombstoned; engine.test = faust smoke; scratch renders swept to scratch/\n\n▶ Play it: Dial Tone Prophet → Chrome Cotillion → Neon Fiscal Year — the three genres this change names, as one path https://stellate.app/?genre=spokenword&seed=2739&path=196.11743,1220.4964,1530.6221&xdur=0.108\n\ne0bb94e https://github.com/aboard-io/stellate/commit/e0bb94eb3aa07dc881ad95a7c24d7054de093829",
   "date_published": "2026-07-03T17:31:32.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "spokenword",
    "newjack",
    "citypop",
    "voice"
   ]
  },
  {
   "id": "9148ba33bd52544b64d1a4b45bd2fa02e2d031cf",
   "url": "https://stellate.app/?genre=vaporwave&seed=2579&path=1679.4415,263.9071,639.7941&xdur=0.154",
   "external_url": "https://github.com/aboard-io/stellate/commit/9148ba33bd52544b64d1a4b45bd2fa02e2d031cf",
   "title": "Composition algebra + DX7 patch space; Faust parity gaps closed",
   "summary": "buildEvents: euclidean rhythm dimension (5 anchors), per-cycle seeded transform pool, jux stereo divergence (per-event pan; legacy ignores)",
   "content_html": "<p>buildEvents: euclidean rhythm dimension (5 anchors), per-cycle seeded transform pool, jux stereo divergence (per-event pan; legacy ignores)</p>\n<ul><li>DX7 patch space: patches as 144-dim vectors; same-algorithm blends LERP the vectors (vaporwave x lofi -&gt; &quot;TUB BELLS~E.PIANO 1&quot;); pool options in lofi/vaporwave/newage/ambient/sovietwave/house</li><li>faust: snarePP routing, per-recipe release/fenv, hann live grains, per-note DX7 velocity, eco 3, on-demand algorithm compile</li></ul>\n<p><em>Verified:</em> matrix 32/32, validate-genres PASS, ab 40/0, engine.test 64/64</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=2579&amp;path=1679.4415,263.9071,639.7941&amp;xdur=0.154\">▶ Play it: Food Court Eternity → Dust Census → Cosmodrome Lullaby — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/9148ba33bd52544b64d1a4b45bd2fa02e2d031cf\">9148ba3</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "buildEvents: euclidean rhythm dimension (5 anchors), per-cycle seeded transform pool, jux stereo divergence (per-event pan; legacy ignores)\n\n• DX7 patch space: patches as 144-dim vectors; same-algorithm blends LERP the vectors (vaporwave x lofi -> \"TUB BELLS~E.PIANO 1\"); pool options in lofi/vaporwave/newage/ambient/sovietwave/house\n\n• faust: snarePP routing, per-recipe release/fenv, hann live grains, per-note DX7 velocity, eco 3, on-demand algorithm compile\n\nVerified: matrix 32/32, validate-genres PASS, ab 40/0, engine.test 64/64\n\n▶ Play it: Food Court Eternity → Dust Census → Cosmodrome Lullaby — the three genres this change names, as one path https://stellate.app/?genre=vaporwave&seed=2579&path=1679.4415,263.9071,639.7941&xdur=0.154\n\n9148ba3 https://github.com/aboard-io/stellate/commit/9148ba33bd52544b64d1a4b45bd2fa02e2d031cf",
   "date_published": "2026-07-03T15:41:12.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "lofi",
    "sovietwave",
    "mix"
   ]
  },
  {
   "id": "391fe4b0c1fdb8e21a0798f2b95e283427ab23fb",
   "url": "https://stellate.app/?genre=transitwave&seed=9472&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/391fe4b0c1fdb8e21a0798f2b95e283427ab23fb",
   "title": "Faust engine phases 1-3: sole backend, gated switchover",
   "summary": "42-model voice library, A/B-verified vs legacy csound (40 PASS / 2 deliberate substitutions); DX7 sysex pipeline; channel vocoder",
   "content_html": "<p>42-model voice library, A/B-verified vs legacy csound (40 PASS / 2 deliberate substitutions); DX7 sysex pipeline; channel vocoder</p>\n<ul><li>state-engine + native found-sound player + exploreLive-compatible live facade + press.js CLI (2-10x realtime offline renders)</li><li>CONSTELLATE defaults to Faust (?engine=csound = legacy escape hatch); journey press routed through press.js; rgain ceiling widened</li></ul>\n<p><em>Verified:</em> 6-genre full-length A/B within 3dB (BDJ soft-clip curve ported exactly), Discogs-EffNet rank parity, live glide 0.98x zero errors</p>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=9472&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/391fe4b0c1fdb8e21a0798f2b95e283427ab23fb\">391fe4b</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "42-model voice library, A/B-verified vs legacy csound (40 PASS / 2 deliberate substitutions); DX7 sysex pipeline; channel vocoder\n\n• state-engine + native found-sound player + exploreLive-compatible live facade + press.js CLI (2-10x realtime offline renders)\n\n• CONSTELLATE defaults to Faust (?engine=csound = legacy escape hatch); journey press routed through press.js; rgain ceiling widened\n\nVerified: 6-genre full-length A/B within 3dB (BDJ soft-clip curve ported exactly), Discogs-EffNet rank parity, live glide 0.98x zero errors\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=9472&path=749.12536,768.12569,730.12569&xdur=13.122\n\n391fe4b https://github.com/aboard-io/stellate/commit/391fe4b0c1fdb8e21a0798f2b95e283427ab23fb",
   "date_published": "2026-07-03T14:38:45.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "af523422b1863bd985e3057ef1a1e5285e3fe7f9",
   "url": "https://stellate.app/?genre=synthwave&seed=3098&path=859.9909,878.9942,840.9942&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/af523422b1863bd985e3057ef1a1e5285e3fe7f9",
   "title": "FAUST-PORT charter: Faust as sole backend; kernel unchanged; phased gates",
   "summary": "FAUST-PORT charter: Faust as sole backend; kernel unchanged; phased gates",
   "content_html": "<p><a href=\"https://stellate.app/?genre=synthwave&amp;seed=3098&amp;path=859.9909,878.9942,840.9942&amp;xdur=13.122\">▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/af523422b1863bd985e3057ef1a1e5285e3fe7f9\">af52342</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "▶ Play it: Highway Heat Death — where the synthesis is the identity, not the decoration https://stellate.app/?genre=synthwave&seed=3098&path=859.9909,878.9942,840.9942&xdur=13.122\n\naf52342 https://github.com/aboard-io/stellate/commit/af523422b1863bd985e3057ef1a1e5285e3fe7f9",
   "date_published": "2026-07-03T13:02:07.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "synthwave",
    "synth"
   ]
  },
  {
   "id": "410ca5ddb82b65b9847efce9f40b0307f3c51812",
   "url": "https://stellate.app/?genre=ragtime&seed=8933&path=753.14435,772.14468,734.14468&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/410ca5ddb82b65b9847efce9f40b0307f3c51812",
   "title": "Sung chorus toolchain (sing.py WORLD vocoder + render script); ignore venv/journey artifacts",
   "summary": "Sung chorus toolchain (sing.py WORLD vocoder + render script); ignore venv/journey artifacts",
   "content_html": "<p><a href=\"https://stellate.app/?genre=ragtime&amp;seed=8933&amp;path=753.14435,772.14468,734.14468&amp;xdur=13.122\">▶ Play it: Perforated Afterlife — the anchor authored from a measured corpus of real melodies</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/410ca5ddb82b65b9847efce9f40b0307f3c51812\">410ca5d</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "▶ Play it: Perforated Afterlife — the anchor authored from a measured corpus of real melodies https://stellate.app/?genre=ragtime&seed=8933&path=753.14435,772.14468,734.14468&xdur=13.122\n\n410ca5d https://github.com/aboard-io/stellate/commit/410ca5ddb82b65b9847efce9f40b0307f3c51812",
   "date_published": "2026-07-03T13:00:01.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ragtime",
    "melody"
   ]
  },
  {
   "id": "fe22b5e6874bb005d93c06e689f028b683af83ee",
   "url": "https://stellate.app/?genre=bigband&seed=1654&path=814.14134,833.14167,795.14167&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/fe22b5e6874bb005d93c06e689f028b683af83ee",
   "title": "Faust prototype: per-voice WASM engine, DX7 sysex pipeline, port map",
   "summary": "Benchmarked: recompile-free timbre (144-param DX7 patch swap in 0.43ms live), clean at 8x CPU throttle, offline node rendering 3x realtime. dx7.lib + sysex2params.js decode any cartridge bank (learnfm corpus compatible).",
   "content_html": "<p>Benchmarked: recompile-free timbre (144-param DX7 patch swap in 0.43ms live), clean at 8x CPU throttle, offline node rendering 3x realtime. dx7.lib + sysex2params.js decode any cartridge bank (learnfm corpus compatible).</p>\n<p><a href=\"https://stellate.app/?genre=bigband&amp;seed=1654&amp;path=814.14134,833.14167,795.14167&amp;xdur=13.122\">▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/fe22b5e6874bb005d93c06e689f028b683af83ee\">fe22b5e</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Benchmarked: recompile-free timbre (144-param DX7 patch swap in 0.43ms live), clean at 8x CPU throttle, offline node rendering 3x realtime. dx7.lib + sysex2params.js decode any cartridge bank (learnfm corpus compatible).\n\n▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments https://stellate.app/?genre=bigband&seed=1654&path=814.14134,833.14167,795.14167&xdur=13.122\n\nfe22b5e https://github.com/aboard-io/stellate/commit/fe22b5e6874bb005d93c06e689f028b683af83ee",
   "date_published": "2026-07-03T12:59:09.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bigband",
    "sampler"
   ]
  },
  {
   "id": "f49868eea70321fc50073536399b79a9145bfdc5",
   "url": "https://stellate.app/?genre=spokenword&seed=8038&path=196.11721,215.11754,177.11754&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/f49868eea70321fc50073536399b79a9145bfdc5",
   "title": "Crates: 23 voice sources, 118 video clips, socialist-wave material; docs",
   "summary": "fetch-found-voice.sh: Naropa poets, Conet numbers stations, LibriVox, OTR, FDR/D-Day, WWVH/Apollo/time ladies, East Is Red, Red Army choir, Lenin 1919-21, Radio Moscow (licenses flagged per item in SOURCES.md)",
   "content_html": "<p>fetch-found-voice.sh: Naropa poets, Conet numbers stations, LibriVox, OTR, FDR/D-Day, WWVH/Apollo/time ladies, East Is Red, Red Army choir, Lenin 1919-21, Radio Moscow (licenses flagged per item in SOURCES.md)</p>\n<ul><li>fetch-found-video.sh: +30 clips (Prelinger dream-Americana, Manhatta, Market Street 1906, Ballet Mecanique, molten steel, Apollo 16mm, Kodachrome Hawaii, soundies, coffee-house hootenanny)</li><li>docs: journey pipeline, genre-space updates</li></ul>\n<p><a href=\"https://stellate.app/?genre=spokenword&amp;seed=8038&amp;path=196.11721,215.11754,177.11754&amp;xdur=13.122\">▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/f49868eea70321fc50073536399b79a9145bfdc5\">f49868e</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "fetch-found-voice.sh: Naropa poets, Conet numbers stations, LibriVox, OTR, FDR/D-Day, WWVH/Apollo/time ladies, East Is Red, Red Army choir, Lenin 1919-21, Radio Moscow (licenses flagged per item in SOURCES.md)\n\n• fetch-found-video.sh: +30 clips (Prelinger dream-Americana, Manhatta, Market Street 1906, Ballet Mecanique, molten steel, Apollo 16mm, Kodachrome Hawaii, soundies, coffee-house hootenanny)\n\n• docs: journey pipeline, genre-space updates\n\n▶ Play it: Dial Tone Prophet — the genre built out of recorded and synthesized voices https://stellate.app/?genre=spokenword&seed=8038&path=196.11721,215.11754,177.11754&xdur=13.122\n\nf49868e https://github.com/aboard-io/stellate/commit/f49868eea70321fc50073536399b79a9145bfdc5",
   "date_published": "2026-07-03T12:59:09.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "spokenword",
    "voice"
   ]
  },
  {
   "id": "9c487dfa1fe66bd9f406c965935db74fc5822d5f",
   "url": "https://stellate.app/?genre=bebop&seed=9538&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/9c487dfa1fe66bd9f406c965935db74fc5822d5f",
   "title": "CONSTELLATE: star-map explorer, journey press, self-hosted Strudel remix",
   "summary": "explorer -> CONSTELLATE: full-bleed star map over genre-affine found video, path draw/import/export, pace slider, per-neighborhood keys, pre-LIVE cursor placement, now-playing chip, mobile profile",
   "content_html": "<p>explorer -&gt; CONSTELLATE: full-bleed star map over genre-affine found video, path draw/import/export, pace slider, per-neighborhood keys, pre-LIVE cursor placement, now-playing chip, mobile profile</p>\n<ul><li>wasm-audio: samples fix (samplePath fallback + full neededSources), live fidelity (toms/solos/sweeps/chop p-fields, voctab), perf surgery (coalesced recompiles, batched injection, channel diffing, LRU wav…</li><li>render-sample-video journey mode (genre-affine clips); mix page with embedded journey player, blends, strudel links; 18-genre name banks</li><li>strudel-export + vendored @strudel/repl (AGPL, unmodified) + remix.html: every state opens as live-editable pattern code, same-origin</li><li>serve.sh sends COOP/COEP (cross-origin isolation), matching production</li></ul>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=9538&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/9c487dfa1fe66bd9f406c965935db74fc5822d5f\">9c487df</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "explorer -> CONSTELLATE: full-bleed star map over genre-affine found video, path draw/import/export, pace slider, per-neighborhood keys, pre-LIVE cursor placement, now-playing chip, mobile profile\n\n• wasm-audio: samples fix (samplePath fallback + full neededSources), live fidelity (toms/solos/sweeps/chop p-fields, voctab), perf surgery (coalesced recompiles, batched injection, channel diffing, LRU wav…\n\n• render-sample-video journey mode (genre-affine clips); mix page with embedded journey player, blends, strudel links; 18-genre name banks\n\n• strudel-export + vendored @strudel/repl (AGPL, unmodified) + remix.html: every state opens as live-editable pattern code, same-origin\n\n• serve.sh sends COOP/COEP (cross-origin isolation), matching production\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=9538&path=694.13834,713.13867,675.13867&xdur=13.122\n\n9c487df https://github.com/aboard-io/stellate/commit/9c487dfa1fe66bd9f406c965935db74fc5822d5f",
   "date_published": "2026-07-03T12:59:09.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "daa034bcc3840b90369d69ac2fd2603caeaf11a9",
   "url": "https://stellate.app/?genre=jungle&seed=1348&path=1718.20526,1505.3720,1581.9806&xdur=0.045",
   "external_url": "https://github.com/aboard-io/stellate/commit/daa034bcc3840b90369d69ac2fd2603caeaf11a9",
   "title": "Kernel v3: 32 verified genres, vocoder instrument, validation framework",
   "summary": "14 new anchors (dub trance disco italo bigbeat garage doomdrone newage exotica industrial spokenword chiptune chinawave sovietwave), all diagonal-dominant; synth-vs-sample identity declared per anchor",
   "content_html": "<p>14 new anchors (dub trance disco italo bigbeat garage doomdrone newage exotica industrial spokenword chiptune chinawave sovietwave), all diagonal-dominant; synth-vs-sample identity declared per anchor</p>\n<ul><li>vocoder synthesis model (pvsvoc speech x carrier cross-synthesis)</li><li>journey(): playlists along drawn weight-vector paths; GENRE_CLIPS map</li><li>hits resolve from SAMPLES or SOURCES; per-dimension-group parent draws (fixes vox-genre x plain-genre crash); jungle breaks dominant; Chicago house rebuild; canawave triadic (kept its diagonal vs disco)</li><li>validate-genres.js: determinism / multi-seed dominance / margins / geometry / blend-monotonicity / vocabulary gates (see VALIDATION.md)</li></ul>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=1348&amp;path=1718.20526,1505.3720,1581.9806&amp;xdur=0.045\">▶ Play it: Barometric Stampede → Loon Referendum → Sunrise Protocol — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/daa034bcc3840b90369d69ac2fd2603caeaf11a9\">daa034b</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "14 new anchors (dub trance disco italo bigbeat garage doomdrone newage exotica industrial spokenword chiptune chinawave sovietwave), all diagonal-dominant; synth-vs-sample identity declared per anchor\n\n• vocoder synthesis model (pvsvoc speech x carrier cross-synthesis)\n\n• journey(): playlists along drawn weight-vector paths; GENRE_CLIPS map\n\n• hits resolve from SAMPLES or SOURCES; per-dimension-group parent draws (fixes vox-genre x plain-genre crash); jungle breaks dominant; Chicago house rebuild; canawave triadic (kept its diagonal vs disco)\n\n• validate-genres.js: determinism / multi-seed dominance / margins / geometry / blend-monotonicity / vocabulary gates (see VALIDATION.md)\n\n▶ Play it: Barometric Stampede → Loon Referendum → Sunrise Protocol — the three genres this change names, as one path https://stellate.app/?genre=jungle&seed=1348&path=1718.20526,1505.3720,1581.9806&xdur=0.045\n\ndaa034b https://github.com/aboard-io/stellate/commit/daa034bcc3840b90369d69ac2fd2603caeaf11a9",
   "date_published": "2026-07-03T12:58:40.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "canawave",
    "trance",
    "voice"
   ]
  },
  {
   "id": "75acacafb6169696ffc52aea2b173315f5a36326",
   "url": "https://stellate.app/?genre=citypop&seed=2671&path=1530.6221,586.10667,1376.19565&xdur=0.056",
   "external_url": "https://github.com/aboard-io/stellate/commit/75acacafb6169696ffc52aea2b173315f5a36326",
   "title": "Fade the rendered mp3 out instead of stopping abruptly",
   "summary": "renderState now applies an ffmpeg afade over the last min(4s, 10% of length) so CLI renders end with a fade to silence rather than a hard stop. (The video graft already fades; this brings the standalone audio in line.)",
   "content_html": "<p>renderState now applies an ffmpeg afade over the last min(4s, 10% of length) so CLI renders end with a fade to silence rather than a hard stop. (The video graft already fades; this brings the standalone audio in line.)</p>\n<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=2671&amp;path=1530.6221,586.10667,1376.19565&amp;xdur=0.056\">▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/75acacafb6169696ffc52aea2b173315f5a36326\">75acaca</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "renderState now applies an ffmpeg afade over the last min(4s, 10% of length) so CLI renders end with a fade to silence rather than a hard stop. (The video graft already fades; this brings the standalone audio in line.)\n\n▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix https://stellate.app/?genre=citypop&seed=2671&path=1530.6221,586.10667,1376.19565&xdur=0.056\n\n75acaca https://github.com/aboard-io/stellate/commit/75acacafb6169696ffc52aea2b173315f5a36326",
   "date_published": "2026-06-28T13:49:08.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "downtempo",
    "dnb"
   ]
  },
  {
   "id": "fd766035537b2999e22d7c3249ef1d0cdd7058eb",
   "url": "https://stellate.app/?genre=canawave&seed=2525&path=1505.3698,1524.3731,1486.3731&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/fd766035537b2999e22d7c3249ef1d0cdd7058eb",
   "title": "canawave mix/arrangement overhaul + shared-voice synthesis fixes",
   "summary": "Arrangement:",
   "content_html": "<p>Arrangement:</p>\n<ul><li>lead is now THE Edge guitar: a 16th-note arpeggio tracing a melodic motif (octave-lower, octave-doubled), through chorus + 1/4-triplet delay + an evolving phaser/flanger (continuous across the arp via absolute…</li><li>proper diatonic walking bassline all through (was one-note-per-bar), pulled far down in the mix</li><li>bridge is an exposed GRAND BRASS SWELL that builds: drums/narration drop out, bass drone + swelling pads + crescendo brass climb ~15 dB and peak above the choruses, then a Peart tom fill crashes the band back…</li><li>simplified FX + per-voice level rebalance for a cleaner mix</li></ul>\n<p><a href=\"https://stellate.app/?genre=canawave&amp;seed=2525&amp;path=1505.3698,1524.3731,1486.3731&amp;xdur=13.122\">▶ Play it: Loon Referendum — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/fd766035537b2999e22d7c3249ef1d0cdd7058eb\">fd76603</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Arrangement:\n\n• lead is now THE Edge guitar: a 16th-note arpeggio tracing a melodic motif (octave-lower, octave-doubled), through chorus + 1/4-triplet delay + an evolving phaser/flanger (continuous across the arp via absolute…\n\n• proper diatonic walking bassline all through (was one-note-per-bar), pulled far down in the mix\n\n• bridge is an exposed GRAND BRASS SWELL that builds: drums/narration drop out, bass drone + swelling pads + crescendo brass climb ~15 dB and peak above the choruses, then a Peart tom fill crashes the band back…\n\n• simplified FX + per-voice level rebalance for a cleaner mix\n\n▶ Play it: Loon Referendum — parked on the genre this change names https://stellate.app/?genre=canawave&seed=2525&path=1505.3698,1524.3731,1486.3731&xdur=13.122\n\nfd76603 https://github.com/aboard-io/stellate/commit/fd766035537b2999e22d7c3249ef1d0cdd7058eb",
   "date_published": "2026-06-28T13:41:51.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "canawave",
    "sampler"
   ]
  },
  {
   "id": "9c74333adca719add85515fa2bd12a0cd77b314c",
   "url": "https://stellate.app/?genre=canawave&seed=2986&path=1505.3698,1524.3731,1486.3731&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/9c74333adca719add85515fa2bd12a0cd77b314c",
   "title": "canawave: U2-style 16th-note arp guitar (1/4T delay) + grand brass swell",
   "summary": "engine: add `arp16` 16th-note arpeggio melody pattern",
   "content_html": "<p>engine: add `arp16` 16th-note arpeggio melody pattern</p>\n<ul><li>canawave delay → quarter-note-triplet (0.667 beat) with cascading feedback; the guitar arp (kpluck, low drive, high delay send) chimes through it = U2/Edge</li><li>guitar arp now runs the band sections (verse/chorus/verse2/chorus2)</li><li>bridge is now a big grand triumphant brass swell at the midpoint (loud brass on the anthem theme, sweep open, tom fill) — the brass finally speaks</li><li>structure/length unchanged, so the audio grafts onto the existing video</li></ul>\n<p><em>Verified:</em> matrix 17/17; existing genres render unchanged.</p>\n<p><a href=\"https://stellate.app/?genre=canawave&amp;seed=2986&amp;path=1505.3698,1524.3731,1486.3731&amp;xdur=13.122\">▶ Play it: Loon Referendum — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/9c74333adca719add85515fa2bd12a0cd77b314c\">9c74333</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "engine: add `arp16` 16th-note arpeggio melody pattern\n\n• canawave delay → quarter-note-triplet (0.667 beat) with cascading feedback; the guitar arp (kpluck, low drive, high delay send) chimes through it = U2/Edge\n\n• guitar arp now runs the band sections (verse/chorus/verse2/chorus2)\n\n• bridge is now a big grand triumphant brass swell at the midpoint (loud brass on the anthem theme, sweep open, tom fill) — the brass finally speaks\n\n• structure/length unchanged, so the audio grafts onto the existing video\n\nVerified: matrix 17/17; existing genres render unchanged.\n\n▶ Play it: Loon Referendum — parked on the genre this change names https://stellate.app/?genre=canawave&seed=2986&path=1505.3698,1524.3731,1486.3731&xdur=13.122\n\n9c74333 https://github.com/aboard-io/stellate/commit/9c74333adca719add85515fa2bd12a0cd77b314c",
   "date_published": "2026-06-28T12:13:15.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "canawave",
    "melody"
   ]
  },
  {
   "id": "5e10e9320bcf10a37004fe6a117b34780f5b1ae3",
   "url": "https://stellate.app/?genre=canawave&seed=8578&path=1505.3698,1524.3731,1486.3731&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/5e10e9320bcf10a37004fe6a117b34780f5b1ae3",
   "title": "Add canawave genre: proud Canadiana pop with engine additions",
   "summary": "A bright major-key Canadian pop anchor — arpeggiated/distorted guitar, toms + hi-hats, loon calls, the national news, and a Stephen Leacock narration bed — plus the engine vocabulary it needed.",
   "content_html": "<p>A bright major-key Canadian pop anchor — arpeggiated/distorted guitar, toms + hi-hats, loon calls, the national news, and a Stephen Leacock narration bed — plus the engine vocabulary it needed.</p>\n<ul><li>real tom instrument (instr 13) + descending tom-roll &quot;tom fill&quot; (was a snare roll)</li><li>real sampled hi-hats via GM soundfont sfplay (state.realHats); rhodes + organ pad voices; `kpluck` Karplus-Strong guitar (octave-down, body resonance, pick attack, distortion, chorus, octave doubling) and an…</li><li>countermelody layer (sec.counter) so a brass section / arpeggiated guitar can play over the lead</li><li>per-sample reverb/delay/fade sends on instr 5 (distant horn &quot;across the lake&quot;, glitched faded loon, glitched-but-coherent voiceover that no longer 2x-loops)</li></ul>\n<p><a href=\"https://stellate.app/?genre=canawave&amp;seed=8578&amp;path=1505.3698,1524.3731,1486.3731&amp;xdur=13.122\">▶ Play it: Loon Referendum — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/5e10e9320bcf10a37004fe6a117b34780f5b1ae3\">5e10e93</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "A bright major-key Canadian pop anchor — arpeggiated/distorted guitar, toms + hi-hats, loon calls, the national news, and a Stephen Leacock narration bed — plus the engine vocabulary it needed.\n\n• real tom instrument (instr 13) + descending tom-roll \"tom fill\" (was a snare roll)\n\n• real sampled hi-hats via GM soundfont sfplay (state.realHats); rhodes + organ pad voices; `kpluck` Karplus-Strong guitar (octave-down, body resonance, pick attack, distortion, chorus, octave doubling) and an…\n\n• countermelody layer (sec.counter) so a brass section / arpeggiated guitar can play over the lead\n\n• per-sample reverb/delay/fade sends on instr 5 (distant horn \"across the lake\", glitched faded loon, glitched-but-coherent voiceover that no longer 2x-loops)\n\n▶ Play it: Loon Referendum — parked on the genre this change names https://stellate.app/?genre=canawave&seed=8578&path=1505.3698,1524.3731,1486.3731&xdur=13.122\n\n5e10e93 https://github.com/aboard-io/stellate/commit/5e10e9320bcf10a37004fe6a117b34780f5b1ae3",
   "date_published": "2026-06-28T11:57:12.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "canawave",
    "voice"
   ]
  },
  {
   "id": "27d5780e0b4b0b8e019320edc8df02271bfadd08",
   "url": "https://stellate.app/?genre=dinosynth&seed=7326&path=289.13871,308.13904,270.13904&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/27d5780e0b4b0b8e019320edc8df02271bfadd08",
   "title": "Add dino-synth genre: tribal kit, creature solos, glitched paleo VO, Lost World video",
   "summary": "A dinosaur-themed dungeon-synth anchor, built end-to-end through the generator → verifier loop and a planetarium-style video.",
   "content_html": "<p>A dinosaur-themed dungeon-synth anchor, built end-to-end through the generator → verifier loop and a planetarium-style video.</p>\n<ul><li>`tribal` kit — full ritual percussion (galloping kicks, busy hand-hats + open-hat swells, quiet tom accents, no snare-roll)</li><li>`fuzz` distorted lead voice + `roar` melody pattern + `primeval` progression</li><li>per-section solo voices: any section with a `solo` recipe gets its own melody instrument (instr 7+), so different &quot;dinosaurs&quot; and a fuzz guitar each solo</li><li>glitched voiceover handler: a speech phrase plays clean, then stutter/ pitch-jumps (slow-down only) with delay swelling in/out (instr 5 gains a per-event delay-send p-field; default preserved)</li></ul>\n<p><a href=\"https://stellate.app/?genre=dinosynth&amp;seed=7326&amp;path=289.13871,308.13904,270.13904&amp;xdur=13.122\">▶ Play it: Cretaceous Vespers — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/27d5780e0b4b0b8e019320edc8df02271bfadd08\">27d5780</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "A dinosaur-themed dungeon-synth anchor, built end-to-end through the generator → verifier loop and a planetarium-style video.\n\n• `tribal` kit — full ritual percussion (galloping kicks, busy hand-hats + open-hat swells, quiet tom accents, no snare-roll)\n\n• `fuzz` distorted lead voice + `roar` melody pattern + `primeval` progression\n\n• per-section solo voices: any section with a `solo` recipe gets its own melody instrument (instr 7+), so different \"dinosaurs\" and a fuzz guitar each solo\n\n• glitched voiceover handler: a speech phrase plays clean, then stutter/ pitch-jumps (slow-down only) with delay swelling in/out (instr 5 gains a per-event delay-send p-field; default preserved)\n\n▶ Play it: Cretaceous Vespers — parked on the genre this change names https://stellate.app/?genre=dinosynth&seed=7326&path=289.13871,308.13904,270.13904&xdur=13.122\n\n27d5780 https://github.com/aboard-io/stellate/commit/27d5780e0b4b0b8e019320edc8df02271bfadd08",
   "date_published": "2026-06-28T02:30:53.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "dinosynth",
    "voice"
   ]
  },
  {
   "id": "a50cd71a695a9e28cd222993bc7aa6feb800f1fe",
   "url": "https://stellate.app/?genre=vaporwave&seed=8138&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/a50cd71a695a9e28cd222993bc7aa6feb800f1fe",
   "title": "Tidy: drop scratch genre-kernel state files, ignore future ones",
   "summary": "Remove six unreferenced root *.state.json files left over from `genre-kernel.js track <genre>` runs (the intentional demo sets live in playlist/ and mix/). Add `/*.state.json` so future scratch runs don't get re-committed; the leading slash keeps playlist/ and mix/ states tracked.",
   "content_html": "<p>Remove six unreferenced root *.state.json files left over from `genre-kernel.js track &lt;genre&gt;` runs (the intentional demo sets live in playlist/ and mix/). Add `/*.state.json` so future scratch runs don't get re-committed; the leading slash keeps playlist/ and mix/ states tracked.</p>\n<ul><li>Also removed ~88MB of loose regenerable renders from the working tree (already gitignored, not committed).</li></ul>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=8138&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — the brightest, most processed corner of the space</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/a50cd71a695a9e28cd222993bc7aa6feb800f1fe\">a50cd71</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Remove six unreferenced root *.state.json files left over from `genre-kernel.js track <genre>` runs (the intentional demo sets live in playlist/ and mix/). Add `/*.state.json` so future scratch runs don't get re-committed; the leading slash keeps playlist/ and mix/ states tracked.\n\n• Also removed ~88MB of loose regenerable renders from the working tree (already gitignored, not committed).\n\n▶ Play it: Food Court Eternity — the brightest, most processed corner of the space https://stellate.app/?genre=vaporwave&seed=8138&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\na50cd71 https://github.com/aboard-io/stellate/commit/a50cd71a695a9e28cd222993bc7aa6feb800f1fe",
   "date_published": "2026-06-26T03:46:53.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "mix"
   ]
  },
  {
   "id": "b66397f0051de8c1187890146c921d324cb8eb82",
   "url": "https://stellate.app/?genre=triphop&seed=8272&path=388.8037,1679.4415,1829.2992&xdur=0.143",
   "external_url": "https://github.com/aboard-io/stellate/commit/b66397f0051de8c1187890146c921d324cb8eb82",
   "title": "Deep pass: live song structure, glitch fix, sonic fingerprints, EVALUATION",
   "summary": "Glitch/static fix: live engine recompiled instruments EVERY bar (glided numerics changed the signature) — now recompiles only on model swaps or an 8-bar numeric refresh; lookahead 2.2s -> 4.5s.",
   "content_html": "<p>Glitch/static fix: live engine recompiled instruments EVERY bar (glided numerics changed the signature) — now recompiles only on model swaps or an 8-bar numeric refresh; lookahead 2.2s -&gt; 4.5s.</p>\n<ul><li>Song structure LIVE: exploreLive walks the form's real sections (cycles, fills on final cycle, sweeps on entry/exit) instead of looping one groove</li><li>Sonic fingerprints: brass + strings models (pad/lead), master grit drive (per-genre + live channel + slider), generative &quot;melodic&quot; bass (walks chord tones with approach notes, never repeats a bar), bass…</li><li>Samples: 78rpm shellac via George Blood collection (Armstrong horns, After You've Gone) wired into blues/jazz/triphop hits; recipe url-encodes and is fault-tolerant.</li><li>EVALUATION.md: honest model assessment vs the actual purpose + roadmap (scale-aware melodies, perc lanes, fill intelligence, form-quantized journeys, audio-verifier in the generation loop).</li></ul>\n<p><a href=\"https://stellate.app/?genre=triphop&amp;seed=8272&amp;path=388.8037,1679.4415,1829.2992&amp;xdur=0.143\">▶ Play it: Inclement Surveillance → Food Court Eternity → Confetti Escape Velocity — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/b66397f0051de8c1187890146c921d324cb8eb82\">b66397f</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Glitch/static fix: live engine recompiled instruments EVERY bar (glided numerics changed the signature) — now recompiles only on model swaps or an 8-bar numeric refresh; lookahead 2.2s -> 4.5s.\n\n• Song structure LIVE: exploreLive walks the form's real sections (cycles, fills on final cycle, sweeps on entry/exit) instead of looping one groove\n\n• Sonic fingerprints: brass + strings models (pad/lead), master grit drive (per-genre + live channel + slider), generative \"melodic\" bass (walks chord tones with approach notes, never repeats a bar), bass…\n\n• Samples: 78rpm shellac via George Blood collection (Armstrong horns, After You've Gone) wired into blues/jazz/triphop hits; recipe url-encodes and is fault-tolerant.\n\n• EVALUATION.md: honest model assessment vs the actual purpose + roadmap (scale-aware melodies, perc lanes, fill intelligence, form-quantized journeys, audio-verifier in the generation loop).\n\n▶ Play it: Inclement Surveillance → Food Court Eternity → Confetti Escape Velocity — the three genres this change names, as one path https://stellate.app/?genre=triphop&seed=8272&path=388.8037,1679.4415,1829.2992&xdur=0.143\n\nb66397f https://github.com/aboard-io/stellate/commit/b66397f0051de8c1187890146c921d324cb8eb82",
   "date_published": "2026-06-11T17:48:13.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "triphop",
    "vaporwave",
    "dancepop",
    "harmony"
   ]
  },
  {
   "id": "e84c41531ae0e6dced2dec7a122a25c689e9f7cf",
   "url": "https://stellate.app/?genre=vaporwave&seed=6571&path=1679.4415,292.16891,1718.20526&xdur=0.046",
   "external_url": "https://github.com/aboard-io/stellate/commit/e84c41531ae0e6dced2dec7a122a25c689e9f7cf",
   "title": "Fix waypoint double-click: pointerdown preventDefault was suppressing dblclick; manual double-tap detection (works on touch too)",
   "summary": "Fix waypoint double-click: pointerdown preventDefault was suppressing dblclick; manual double-tap detection (works on touch too)",
   "content_html": "<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=6571&amp;path=1679.4415,292.16891,1718.20526&amp;xdur=0.046\">▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/e84c41531ae0e6dced2dec7a122a25c689e9f7cf\">e84c415</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix https://stellate.app/?genre=vaporwave&seed=6571&path=1679.4415,292.16891,1718.20526&xdur=0.046\n\ne84c415 https://github.com/aboard-io/stellate/commit/e84c41531ae0e6dced2dec7a122a25c689e9f7cf",
   "date_published": "2026-06-11T17:11:41.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "jazz",
    "jungle",
    "travel"
   ]
  },
  {
   "id": "42b6910a9bd6fb3520c3cb4d083b31d15f5c32e6",
   "url": "https://stellate.app/?genre=triphop&seed=3938&path=388.8037,586.10667&xdur=0.284",
   "external_url": "https://github.com/aboard-io/stellate/commit/42b6910a9bd6fb3520c3cb4d083b31d15f5c32e6",
   "title": "Explorer: Preact+htm (no build step), mix paths, mode/scale dimension",
   "summary": "UI rewritten as Preact + htm via esm.sh — declarative components, one store with pub/sub, zero build step (still view-source static files). The map stays imperative SVG so 60Hz drags never touch the diff.",
   "content_html": "<p>UI rewritten as Preact + htm via esm.sh — declarative components, one store with pub/sub, zero build step (still view-source static files). The map stays imperative SVG so 60Hz drags never touch the diff.</p>\n<ul><li>Mix paths: double-click drops waypoints, lines connect them, a traveler walks the path (16 bars per segment, looping) and IS the live destination — the song morphs through every genre the line crosses.</li><li>Mode/scale is a dimension: modal progressions in the engine (dorian i7-IV7, phrygian i-bII, lydian IΔ-II, mixolydian I7-bVII) woven into jazz/triphop/ambient/downtempo anchor pools, plus a mode lock dropdown…</li></ul>\n<p><a href=\"https://stellate.app/?genre=triphop&amp;seed=3938&amp;path=388.8037,586.10667&amp;xdur=0.284\">▶ Play it: Inclement Surveillance → Benthic Patience — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/42b6910a9bd6fb3520c3cb4d083b31d15f5c32e6\">42b6910</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "UI rewritten as Preact + htm via esm.sh — declarative components, one store with pub/sub, zero build step (still view-source static files). The map stays imperative SVG so 60Hz drags never touch the diff.\n\n• Mix paths: double-click drops waypoints, lines connect them, a traveler walks the path (16 bars per segment, looping) and IS the live destination — the song morphs through every genre the line crosses.\n\n• Mode/scale is a dimension: modal progressions in the engine (dorian i7-IV7, phrygian i-bII, lydian IΔ-II, mixolydian I7-bVII) woven into jazz/triphop/ambient/downtempo anchor pools, plus a mode lock dropdown…\n\n▶ Play it: Inclement Surveillance → Benthic Patience — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=triphop&seed=3938&path=388.8037,586.10667&xdur=0.284\n\n42b6910 https://github.com/aboard-io/stellate/commit/42b6910a9bd6fb3520c3cb4d083b31d15f5c32e6",
   "date_published": "2026-06-11T17:09:33.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "triphop",
    "downtempo",
    "harmony"
   ]
  },
  {
   "id": "15a975543fecc7d19d85086a81751637265c33e9",
   "url": "https://stellate.app/?genre=vaporwave&seed=8156&path=1679.4415,859.2784,1829.2992&xdur=0.353",
   "external_url": "https://github.com/aboard-io/stellate/commit/15a975543fecc7d19d85086a81751637265c33e9",
   "title": "Live genre journeys: N-way space, 15 anchors, glide engine, playhead",
   "summary": "The explorer is now an instrument. csound boots once as a persistent synth (orchestra split into header + hot-recompilable instrument block",
   "content_html": "<p>The explorer is now an instrument. csound boots once as a persistent synth (orchestra split into header + hot-recompilable instrument block</p>\n<ul><li><strong>NO JUMPS</strong> — the cursor sets a destination. The playing state journeys there — tempo max 3bpm/bar, scalars ease ~16 bars, and the composition (synth models, kit, kick/snare/hat, bassline, lead line, harmony, samples, form)…</li><li>Space: 15 anchors (+neoclassical, dancepop, edm, dubstep, blues, jazz) and true N-way mixing (resolveMulti: weighted scalars, per-dimension parent draws; missing-key renormalization</li></ul>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=8156&amp;path=1679.4415,859.2784,1829.2992&amp;xdur=0.353\">▶ Play it: Food Court Eternity → Requiem Appendix → Confetti Escape Velocity — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/15a975543fecc7d19d85086a81751637265c33e9\">15a9755</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The explorer is now an instrument. csound boots once as a persistent synth (orchestra split into header + hot-recompilable instrument block\n\nNO JUMPS — the cursor sets a destination. The playing state journeys there — tempo max 3bpm/bar, scalars ease ~16 bars, and the composition (synth models, kit, kick/snare/hat, bassline, lead line, harmony, samples, form)…\n\n• Space: 15 anchors (+neoclassical, dancepop, edm, dubstep, blues, jazz) and true N-way mixing (resolveMulti: weighted scalars, per-dimension parent draws; missing-key renormalization\n\n▶ Play it: Food Court Eternity → Requiem Appendix → Confetti Escape Velocity — the three genres this change names, as one path https://stellate.app/?genre=vaporwave&seed=8156&path=1679.4415,859.2784,1829.2992&xdur=0.353\n\n15a9755 https://github.com/aboard-io/stellate/commit/15a975543fecc7d19d85086a81751637265c33e9",
   "date_published": "2026-06-11T17:03:16.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "neoclassical",
    "dancepop",
    "harmony"
   ]
  },
  {
   "id": "0216e6f96776292058c041f4c586c97a2ead243f",
   "url": "https://stellate.app/?genre=jungle&seed=1353&path=1718.20526,1679.4415,388.8037&xdur=0.046",
   "external_url": "https://github.com/aboard-io/stellate/commit/0216e6f96776292058c041f4c586c97a2ead243f",
   "title": "Audio verifier, filter sweeps, speech instrument, 30-min mix, genre explorer",
   "summary": "audio-verifier.py — the empirical gate: Essentia Discogs-EffNet (400 real Discogs styles) scores rendered audio, styles mapped to our 9 anchors. Jungle ranks #1 (DnB .36/Jungle .29); techno family reads electro-adjacent; vaporwave/triphop read ambient/experimental to it",
   "content_html": "<p>audio-verifier.py — the empirical gate: Essentia Discogs-EffNet (400 real Discogs styles) scores rendered audio, styles mapped to our 9 anchors. Jungle ranks #1 (DnB .36/Jungle .29); techno family reads electro-adjacent; vaporwave/triphop read ambient/experimental to it</p>\n<ul><li>Filter sweeps (THE missing move): gkCut master filter bus + instr 96 exponential glides. sec.sweep &quot;open&quot; blooms across a section landing on the next downbeat; &quot;close&quot; sinks then SNAPS open at the drop.</li><li>Speech synthesis as an instrument: espeak-ng phrases (10, per-genre pools — &quot;welcome to the digital plaza&quot; for vaporwave, &quot;rewind.</li><li>mix/ + make-mix-page.js: 31:33 six-track generated mix walking techno→vaporwave→synthwave→jungle, page with per-track kernel coordinates + mix.m3u (nginx serves audio/x-mpegurl</li><li>explorer.html: the genre space as a draggable 2D map. Every position blends the two nearest anchors through the kernel IN THE BROWSER</li></ul>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=1353&amp;path=1718.20526,1679.4415,388.8037&amp;xdur=0.046\">▶ Play it: Barometric Stampede → Food Court Eternity → Inclement Surveillance — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/0216e6f96776292058c041f4c586c97a2ead243f\">0216e6f</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "audio-verifier.py — the empirical gate: Essentia Discogs-EffNet (400 real Discogs styles) scores rendered audio, styles mapped to our 9 anchors. Jungle ranks #1 (DnB .36/Jungle .29); techno family reads electro-adjacent; vaporwave/triphop read ambient/experimental to it\n\n• Filter sweeps (THE missing move): gkCut master filter bus + instr 96 exponential glides. sec.sweep \"open\" blooms across a section landing on the next downbeat; \"close\" sinks then SNAPS open at the drop.\n\n• Speech synthesis as an instrument: espeak-ng phrases (10, per-genre pools — \"welcome to the digital plaza\" for vaporwave, \"rewind.\n\n• mix/ + make-mix-page.js: 31:33 six-track generated mix walking techno→vaporwave→synthwave→jungle, page with per-track kernel coordinates + mix.m3u (nginx serves audio/x-mpegurl\n\n• explorer.html: the genre space as a draggable 2D map. Every position blends the two nearest anchors through the kernel IN THE BROWSER\n\n▶ Play it: Barometric Stampede → Food Court Eternity → Inclement Surveillance — the three genres this change names, as one path https://stellate.app/?genre=jungle&seed=1353&path=1718.20526,1679.4415,388.8037&xdur=0.046\n\n0216e6f https://github.com/aboard-io/stellate/commit/0216e6f96776292058c041f4c586c97a2ead243f",
   "date_published": "2026-06-11T16:15:12.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "vaporwave",
    "triphop",
    "voice"
   ]
  },
  {
   "id": "915f8060a1096314f9b1f9dad403a9447fe519c6",
   "url": "https://stellate.app/?genre=jungle&seed=1104&path=1718.20526,1679.4415&xdur=0.047",
   "external_url": "https://github.com/aboard-io/stellate/commit/915f8060a1096314f9b1f9dad403a9447fe519c6",
   "title": "Kernel v2: timbre/mixing/sampling as dimensions + genre verifier loop",
   "summary": "From listening feedback (jungle = white-noise wall under vaporwave reverb, snare dominating, 1-bar loops, no effects identity):",
   "content_html": "<p>From listening feedback (jungle = white-noise wall under vaporwave reverb, snare dominating, 1-bar loops, no effects identity):</p>\n<ul><li>Engine — synthesis MODELS per voice, codegen'd per state: pad saw/organ/fm, bass saw/sub/acid/reese, lead stack/pluck/fm, kick boom/808/909, snare noise/crack/clap, hat noise/metal.</li><li>fetch-found-samples.sh — Amen pack variants (165-175bpm), silence-split rave one-shots from a 1990s sample CD, PD Apollo 11 radio voice clips, auto-manifest.</li><li>genre-verifier.js — symbolic features (syncopation, HEARD snare/kick balance incl kit levels, hat density, motion, seventh color, wash, sub, break usage, swing, variation ratio) scored against per-genre target…</li></ul>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=1104&amp;path=1718.20526,1679.4415&amp;xdur=0.047\">▶ Play it: Barometric Stampede → Food Court Eternity — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/915f8060a1096314f9b1f9dad403a9447fe519c6\">915f806</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "From listening feedback (jungle = white-noise wall under vaporwave reverb, snare dominating, 1-bar loops, no effects identity):\n\n• Engine — synthesis MODELS per voice, codegen'd per state: pad saw/organ/fm, bass saw/sub/acid/reese, lead stack/pluck/fm, kick boom/808/909, snare noise/crack/clap, hat noise/metal.\n\n• fetch-found-samples.sh — Amen pack variants (165-175bpm), silence-split rave one-shots from a 1990s sample CD, PD Apollo 11 radio voice clips, auto-manifest.\n\n• genre-verifier.js — symbolic features (syncopation, HEARD snare/kick balance incl kit levels, hat density, motion, seventh color, wash, sub, break usage, swing, variation ratio) scored against per-genre target…\n\n▶ Play it: Barometric Stampede → Food Court Eternity — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=jungle&seed=1104&path=1718.20526,1679.4415&xdur=0.047\n\n915f806 https://github.com/aboard-io/stellate/commit/915f8060a1096314f9b1f9dad403a9447fe519c6",
   "date_published": "2026-06-11T15:21:04.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "vaporwave",
    "harmony"
   ]
  },
  {
   "id": "3d2019a9a7fd66472590cc429d61c4dc77486089",
   "url": "https://stellate.app/?genre=vaporwave&seed=9897&path=1679.4415,1718.20526,859.9931&xdur=0.046",
   "external_url": "https://github.com/aboard-io/stellate/commit/3d2019a9a7fd66472590cc429d61c4dc77486089",
   "title": "Genre kernel: genre as a multidimensional space, playlists as paths",
   "summary": "GENRE-SPACE.md + genre-kernel.js: a genre is a point in a 14-dimension typed space (tempo, rhythm pools, harmonic motion vs color, bass/lead/pad recipes, production scalars, found-sound role+sources, form); a song is a seeded sample near a point; a playlist is a path.",
   "content_html": "<p>GENRE-SPACE.md + genre-kernel.js: a genre is a point in a 14-dimension typed space (tempo, rhythm pools, harmonic motion vs color, bass/lead/pad recipes, production scalars, found-sound role+sources, form); a song is a seeded sample near a point; a playlist is a path.</p>\n<ul><li>Blending is combinatorial, not averaging: scalars lerp, discrete dimensions draw independently from either parent (house drums under vaporwave harmony), constraints keep midpoints musical.</li><li>Engine vocabulary to escape the vaporwave gravity well (defaults unchanged, 56 test renders ALL PASS): kits techno/house/breaks/jungle (mutate per chord + seed), bass rolling/sub/stab…</li><li>playlist/: techno→vaporwave→synthwave→jungle, 30 tracks, 6.02h, every track's resolved coordinates in playlist.json (the genre-learning artifact).</li></ul>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=9897&amp;path=1679.4415,1718.20526,859.9931&amp;xdur=0.046\">▶ Play it: Food Court Eternity → Barometric Stampede → Highway Heat Death — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/3d2019a9a7fd66472590cc429d61c4dc77486089\">3d2019a</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "GENRE-SPACE.md + genre-kernel.js: a genre is a point in a 14-dimension typed space (tempo, rhythm pools, harmonic motion vs color, bass/lead/pad recipes, production scalars, found-sound role+sources, form); a song is a seeded sample near a point; a playlist is a path.\n\n• Blending is combinatorial, not averaging: scalars lerp, discrete dimensions draw independently from either parent (house drums under vaporwave harmony), constraints keep midpoints musical.\n\n• Engine vocabulary to escape the vaporwave gravity well (defaults unchanged, 56 test renders ALL PASS): kits techno/house/breaks/jungle (mutate per chord + seed), bass rolling/sub/stab…\n\n• playlist/: techno→vaporwave→synthwave→jungle, 30 tracks, 6.02h, every track's resolved coordinates in playlist.json (the genre-learning artifact).\n\n▶ Play it: Food Court Eternity → Barometric Stampede → Highway Heat Death — the three genres this change names, as one path https://stellate.app/?genre=vaporwave&seed=9897&path=1679.4415,1718.20526,859.9931&xdur=0.046\n\n3d2019a https://github.com/aboard-io/stellate/commit/3d2019a9a7fd66472590cc429d61c4dc77486089",
   "date_published": "2026-06-11T14:32:08.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "jungle",
    "synthwave",
    "found"
   ]
  },
  {
   "id": "b83863897ee51f36dac7620577a93e80ce286884",
   "url": "https://stellate.app/?genre=bigband&seed=5241&path=814.14134,833.14167,795.14167&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/b83863897ee51f36dac7620577a93e80ce286884",
   "title": "Supersaw lead + pulse kit + humanized fills",
   "summary": "Engine (all defaults preserve existing renders byte-for-byte paths):",
   "content_html": "<p>Engine (all defaults preserve existing renders byte-for-byte paths):</p>\n<ul><li>melody voices/spread params: 3+ voices generates a detuned unison stack (supersaw); &lt;=2 emits the original two-osc code.</li><li>melody pattern &quot;hero&quot;: 16th runs, syncopation, octave leaps, A/B phrase variants alternating per chord</li><li>drum kit &quot;pulse&quot;: four-on-floor + per-chord wandering ghost snares, alternating push-kick, accented 16th hats</li><li>tom fill takes the song rng: flams, optional extra 8th, final roll resolves straight-16ths or triplet — every fill in a song differs</li></ul>\n<p><a href=\"https://stellate.app/?genre=bigband&amp;seed=5241&amp;path=814.14134,833.14167,795.14167&amp;xdur=13.122\">▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/b83863897ee51f36dac7620577a93e80ce286884\">b838638</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Engine (all defaults preserve existing renders byte-for-byte paths):\n\n• melody voices/spread params: 3+ voices generates a detuned unison stack (supersaw); <=2 emits the original two-osc code.\n\n• melody pattern \"hero\": 16th runs, syncopation, octave leaps, A/B phrase variants alternating per chord\n\n• drum kit \"pulse\": four-on-floor + per-chord wandering ghost snares, alternating push-kick, accented 16th hats\n\n• tom fill takes the song rng: flams, optional extra 8th, final roll resolves straight-16ths or triplet — every fill in a song differs\n\n▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments https://stellate.app/?genre=bigband&seed=5241&path=814.14134,833.14167,795.14167&xdur=13.122\n\nb838638 https://github.com/aboard-io/stellate/commit/b83863897ee51f36dac7620577a93e80ce286884",
   "date_published": "2026-06-11T07:29:45.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bigband",
    "sampler"
   ]
  },
  {
   "id": "9286c27bf56bae1a48f98a65090b5b677e1e41bb",
   "url": "https://stellate.app/?genre=synthwave&seed=1147&path=859.9909,878.9942,840.9942&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/9286c27bf56bae1a48f98a65090b5b677e1e41bb",
   "title": "Night Drive v2: pure synthesis, washed Collins drums, drive pulse, POV footage",
   "summary": "Engine additions (all surfaced in the builder, all render-tested):",
   "content_html": "<p>Engine additions (all surfaced in the builder, all render-tested):</p>\n<ul><li>bass pattern &quot;drive&quot;: straight 8ths on the root — the pulse that never lifts</li><li>transition &quot;tom fill&quot;: four-beat halves-&gt;quarters-&gt;crescendo roll</li><li>instruments.drums.send: drum reverb send (snare full, kick/hat scaled); default 0.18 preserves every existing render</li><li>Synthwave preset rework from feedback (less reedy / bigger reverbed drums / more driving / big fills / more night drives): saw lead instead of square, bigger detuned saw pads, found-sound bed pulled to 0.12…</li></ul>\n<p><a href=\"https://stellate.app/?genre=synthwave&amp;seed=1147&amp;path=859.9909,878.9942,840.9942&amp;xdur=13.122\">▶ Play it: Highway Heat Death — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/9286c27bf56bae1a48f98a65090b5b677e1e41bb\">9286c27</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Engine additions (all surfaced in the builder, all render-tested):\n\n• bass pattern \"drive\": straight 8ths on the root — the pulse that never lifts\n\n• transition \"tom fill\": four-beat halves->quarters->crescendo roll\n\n• instruments.drums.send: drum reverb send (snare full, kick/hat scaled); default 0.18 preserves every existing render\n\n• Synthwave preset rework from feedback (less reedy / bigger reverbed drums / more driving / big fills / more night drives): saw lead instead of square, bigger detuned saw pads, found-sound bed pulled to 0.12…\n\n▶ Play it: Highway Heat Death — parked on the genre this change names https://stellate.app/?genre=synthwave&seed=1147&path=859.9909,878.9942,840.9942&xdur=13.122\n\n9286c27 https://github.com/aboard-io/stellate/commit/9286c27bf56bae1a48f98a65090b5b677e1e41bb",
   "date_published": "2026-06-11T06:57:57.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "synthwave",
    "found"
   ]
  },
  {
   "id": "2b0c155e39411d041975fceb12cac599c472b792",
   "url": "https://stellate.app/?genre=synthwave&seed=8190&path=859.9931,1679.4415&xdur=0.134",
   "external_url": "https://github.com/aboard-io/stellate/commit/2b0c155e39411d041975fceb12cac599c472b792",
   "title": "Night Drive: Kavinsky-esque synthwave preset + gradual smear glitches",
   "summary": "Glitches are now smears, not jumps: the render script ramps chromashift on a sine envelope via stepped sendcmd (one smear spanning every section fade, slow random tape damage between); the browser layer eases filter/transform over ~1-1.7s with a drifting tear band.",
   "content_html": "<p>Glitches are now smears, not jumps: the render script ramps chromashift on a sine envelope via stepped sendcmd (one smear spanning every section fade, slow random tape damage between); the browser layer eases filter/transform over ~1-1.7s with a drifting tear band.</p>\n<ul><li>render-sample-video.js refactored into presets (argv picks one): vaporwave -&gt; sample.mp4 (unchanged song/footage) synthwave -&gt; synthwave.mp4 (new, moody)</li><li>The synthwave song: 92bpm B minor i-VI-III-VII, octave-pulse saw bass that never changes gear, halftime verses into four-on-floor choruses, sparse square lead (updown in choruses), dark low-cutoff pads…</li></ul>\n<p><a href=\"https://stellate.app/?genre=synthwave&amp;seed=8190&amp;path=859.9931,1679.4415&amp;xdur=0.134\">▶ Play it: Highway Heat Death → Food Court Eternity — a shuttle between the two genres this change names — the blend is the point</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/2b0c155e39411d041975fceb12cac599c472b792\">2b0c155</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Glitches are now smears, not jumps: the render script ramps chromashift on a sine envelope via stepped sendcmd (one smear spanning every section fade, slow random tape damage between); the browser layer eases filter/transform over ~1-1.7s with a drifting tear band.\n\n• render-sample-video.js refactored into presets (argv picks one): vaporwave -> sample.mp4 (unchanged song/footage) synthwave -> synthwave.mp4 (new, moody)\n\n• The synthwave song: 92bpm B minor i-VI-III-VII, octave-pulse saw bass that never changes gear, halftime verses into four-on-floor choruses, sparse square lead (updown in choruses), dark low-cutoff pads…\n\n▶ Play it: Highway Heat Death → Food Court Eternity — a shuttle between the two genres this change names — the blend is the point https://stellate.app/?genre=synthwave&seed=8190&path=859.9931,1679.4415&xdur=0.134\n\n2b0c155 https://github.com/aboard-io/stellate/commit/2b0c155e39411d041975fceb12cac599c472b792",
   "date_published": "2026-06-11T06:32:15.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "synthwave",
    "vaporwave",
    "found"
   ]
  },
  {
   "id": "e8548b757b8e9092a91d59cc1ae6e933a4d570ff",
   "url": "https://stellate.app/?genre=transitwave&seed=9837&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/e8548b757b8e9092a91d59cc1ae6e933a4d570ff",
   "title": "Found-video layer: curated laserdisc clips, VHS/deep-fry, structure-locked sample",
   "summary": "Stabilization: fix undefined --yellow CSS var in the verifier score, validate preset imports against defaults, fast offline export in play.html (capture is now the fallback), section-play highlight/status clear themselves, drop dead move().",
   "content_html": "<p>Stabilization: fix undefined --yellow CSS var in the verifier score, validate preset imports against defaults, fast offline export in play.html (capture is now the fallback), section-play highlight/status clear themselves, drop dead move().</p>\n<ul><li>Found video, same thesis as found sound — the recipe is committed, the media is derived: fetch-found-video.sh range-seeks five laserdisc rips on the Internet Archive (LaserVision '86, Pioneer Laser Optics II…</li><li>video-layer.js: dual &lt;video&gt; crossfade behind the UI — switches per song section while playing (builder playhead leads by the 1.6s fade so the fade RESOLVES on the downbeat), ambient cycling while idle, 0.5x…</li><li>render-sample-video.js: sample.mp4 from the SAME buildEvents state as the audio — csound renders the score, every xfade ends exactly on a section downbeat, sections map to clips by name.</li></ul>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=9837&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/e8548b757b8e9092a91d59cc1ae6e933a4d570ff\">e8548b7</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Stabilization: fix undefined --yellow CSS var in the verifier score, validate preset imports against defaults, fast offline export in play.html (capture is now the fallback), section-play highlight/status clear themselves, drop dead move().\n\n• Found video, same thesis as found sound — the recipe is committed, the media is derived: fetch-found-video.sh range-seeks five laserdisc rips on the Internet Archive (LaserVision '86, Pioneer Laser Optics II…\n\n• video-layer.js: dual <video> crossfade behind the UI — switches per song section while playing (builder playhead leads by the 1.6s fade so the fade RESOLVES on the downbeat), ambient cycling while idle, 0.5x…\n\n• render-sample-video.js: sample.mp4 from the SAME buildEvents state as the audio — csound renders the score, every xfade ends exactly on a section downbeat, sections map to clips by name.\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=9837&path=749.12536,768.12569,730.12569&xdur=13.122\n\ne8548b7 https://github.com/aboard-io/stellate/commit/e8548b757b8e9092a91d59cc1ae6e933a4d570ff",
   "date_published": "2026-06-11T06:19:49.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "c68c9f54278ddcc4ddd1a4b365062daa1a8a6d9d",
   "url": "https://stellate.app/?genre=vaporwave&seed=7596&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/c68c9f54278ddcc4ddd1a4b365062daa1a8a6d9d",
   "title": "Stand alone: vendor verifier-catalog as a submodule, consume it via MCP",
   "summary": "Extracted from ftrain/verifier-catalog (music/vaporwave) via subtree split, history preserved. The catalog rides along as a submodule (relative URL, so it resolves locally and on GitHub) and .mcp.json points Claude Code at its methods-catalog MCP server.",
   "content_html": "<p>Extracted from ftrain/verifier-catalog (music/vaporwave) via subtree split, history preserved. The catalog rides along as a submodule (relative URL, so it resolves locally and on GitHub) and .mcp.json points Claude Code at its methods-catalog MCP server.</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=7596&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/c68c9f54278ddcc4ddd1a4b365062daa1a8a6d9d\">c68c9f5</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Extracted from ftrain/verifier-catalog (music/vaporwave) via subtree split, history preserved. The catalog rides along as a submodule (relative URL, so it resolves locally and on GitHub) and .mcp.json points Claude Code at its methods-catalog MCP server.\n\n▶ Play it: Food Court Eternity — parked on the genre this change names https://stellate.app/?genre=vaporwave&seed=7596&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\nc68c9f5 https://github.com/aboard-io/stellate/commit/c68c9f54278ddcc4ddd1a4b365062daa1a8a6d9d",
   "date_published": "2026-06-11T01:48:49.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "mix"
   ]
  },
  {
   "id": "e9b6f7a20e19a88d58ccce41eace746f3f911a42",
   "url": "https://stellate.app/?genre=citypop&seed=8274&path=1530.6221,586.10667,1376.19565&xdur=0.056",
   "external_url": "https://github.com/aboard-io/stellate/commit/e9b6f7a20e19a88d58ccce41eace746f3f911a42",
   "title": "Fast offline export via OfflineAudioContext (render to WAV, not realtime capture)",
   "summary": "You were right that Csound should render to a file fast. @csound/browser ties performance to the audio clock (1x), but an OfflineAudioContext renders an AudioWorklet graph faster than realtime and silently.",
   "content_html": "<p>You were right that Csound should render to a file fast. @csound/browser ties performance to the audio clock (1x), but an OfflineAudioContext renders an AudioWorklet graph faster than realtime and silently.</p>\n<p><em>Verified:</em> 16s song renders in ~10.8s (faster than realtime), silent, real audio -&gt; 3MB WAV / 342KB MP3.</p>\n<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=8274&amp;path=1530.6221,586.10667,1376.19565&amp;xdur=0.056\">▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/e9b6f7a20e19a88d58ccce41eace746f3f911a42\">e9b6f7a</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "You were right that Csound should render to a file fast. @csound/browser ties performance to the audio clock (1x), but an OfflineAudioContext renders an AudioWorklet graph faster than realtime and silently.\n\nVerified: 16s song renders in ~10.8s (faster than realtime), silent, real audio -> 3MB WAV / 342KB MP3.\n\n▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix https://stellate.app/?genre=citypop&seed=8274&path=1530.6221,586.10667,1376.19565&xdur=0.056\n\ne9b6f7a https://github.com/aboard-io/stellate/commit/e9b6f7a20e19a88d58ccce41eace746f3f911a42",
   "date_published": "2026-06-07T03:42:57.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "downtempo",
    "dnb"
   ]
  },
  {
   "id": "3f107eb76ac37ec4adef6e81aae7c368501153fb",
   "url": "https://stellate.app/?genre=vaporwave&seed=6623&path=1679.4415,292.16891,1718.20526&xdur=0.046",
   "external_url": "https://github.com/aboard-io/stellate/commit/3f107eb76ac37ec4adef6e81aae7c368501153fb",
   "title": "Export via realtime capture (offline render is realtime here & looked frozen)",
   "summary": "@csound/browser's worklet only performs at real time (perform() without start() no-ops; with start() it conflicts/hangs) — so offline render of a long song ran for minutes with no feedback and read as frozen/stopped.",
   "content_html": "<p>@csound/browser's worklet only performs at real time (perform() without start() no-ops; with start() it conflicts/hangs) — so offline render of a long song ran for minutes with no feedback and read as frozen/stopped.</p>\n<ul><li>Replace export with captureExport(): play the song live (audible), tap the output losslessly via a ScriptProcessor, show a live &quot;recording N%&quot;, and build a stereo WAV from the captured PCM (then lamejs -&gt; MP3).</li></ul>\n<p><em>Verified:</em> 4s song -&gt; 1MB WAV / 117KB MP3, real audio.</p>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=6623&amp;path=1679.4415,292.16891,1718.20526&amp;xdur=0.046\">▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/3f107eb76ac37ec4adef6e81aae7c368501153fb\">3f107eb</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "@csound/browser's worklet only performs at real time (perform() without start() no-ops; with start() it conflicts/hangs) — so offline render of a long song ran for minutes with no feedback and read as frozen/stopped.\n\n• Replace export with captureExport(): play the song live (audible), tap the output losslessly via a ScriptProcessor, show a live \"recording N%\", and build a stereo WAV from the captured PCM (then lamejs -> MP3).\n\nVerified: 4s song -> 1MB WAV / 117KB MP3, real audio.\n\n▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix https://stellate.app/?genre=vaporwave&seed=6623&path=1679.4415,292.16891,1718.20526&xdur=0.046\n\n3f107eb https://github.com/aboard-io/stellate/commit/3f107eb76ac37ec4adef6e81aae7c368501153fb",
   "date_published": "2026-06-07T03:36:24.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "jazz",
    "jungle",
    "travel"
   ]
  },
  {
   "id": "015535fdc2b42cf6f99106c5af4759c096bf84a4",
   "url": "https://stellate.app/?genre=citypop&seed=6597&path=1530.6221,586.10667,1376.19565&xdur=0.056",
   "external_url": "https://github.com/aboard-io/stellate/commit/015535fdc2b42cf6f99106c5af4759c096bf84a4",
   "title": "Fix export hang on \"stop promise timed out\" + empty MP3",
   "summary": "csound stop()/destroy() can hang (the \"stop promise timed out\" warning); stopLive() and render()'s finalize now race the stop against a short timeout so export can't stall on teardown of the playing instance.",
   "content_html": "<p>csound stop()/destroy() can hang (the &quot;stop promise timed out&quot; warning); stopLive() and render()'s finalize now race the stop against a short timeout so export can't stall on teardown of the playing instance.</p>\n<ul><li>MP3 came out ~0 bytes because Csound leaves the WAV data-chunk size field unfinalized; parseWav now falls back to the actual remaining byte length.</li></ul>\n<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=6597&amp;path=1530.6221,586.10667,1376.19565&amp;xdur=0.056\">▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/015535fdc2b42cf6f99106c5af4759c096bf84a4\">015535f</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "csound stop()/destroy() can hang (the \"stop promise timed out\" warning); stopLive() and render()'s finalize now race the stop against a short timeout so export can't stall on teardown of the playing instance.\n\n• MP3 came out ~0 bytes because Csound leaves the WAV data-chunk size field unfinalized; parseWav now falls back to the actual remaining byte length.\n\n▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix https://stellate.app/?genre=citypop&seed=6597&path=1530.6221,586.10667,1376.19565&xdur=0.056\n\n015535f https://github.com/aboard-io/stellate/commit/015535fdc2b42cf6f99106c5af4759c096bf84a4",
   "date_published": "2026-06-07T03:24:53.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "downtempo",
    "dnb"
   ]
  },
  {
   "id": "f981d9366abde045411dc220e1c0a209331be84c",
   "url": "https://stellate.app/?genre=vaporwave&seed=2534&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/f981d9366abde045411dc220e1c0a209331be84c",
   "title": "Design cleanup + lighter MP3 export (lamejs instead of ffmpeg.wasm)",
   "summary": "Design: rebuilt the stylesheet around a calmer, cohesive system — one restrained vaporwave palette, consistent spacing/type scale, color reserved for the tiles (not glowing everywhere), tidy section blocks, a labeled sources table (column headers), cleaner popover/editor, verifier, and transport.",
   "content_html": "<p>Design: rebuilt the stylesheet around a calmer, cohesive system — one restrained vaporwave palette, consistent spacing/type scale, color reserved for the tiles (not glowing everywhere), tidy section blocks, a labeled sources table (column headers), cleaner popover/editor, verifier, and transport.</p>\n<ul><li><strong>MP3</strong> — replaced ffmpeg.wasm (~30MB core + worker + COOP/COEP) with lamejs, a pure-JS LAME encoder (~50KB). wavToMp3 parses the rendered WAV (16-bit, mono/stereo) and LAME-encodes it.</li></ul>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=2534&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/f981d9366abde045411dc220e1c0a209331be84c\">f981d93</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Design: rebuilt the stylesheet around a calmer, cohesive system — one restrained vaporwave palette, consistent spacing/type scale, color reserved for the tiles (not glowing everywhere), tidy section blocks, a labeled sources table (column headers), cleaner popover/editor, verifier, and transport.\n\nMP3 — replaced ffmpeg.wasm (~30MB core + worker + COOP/COEP) with lamejs, a pure-JS LAME encoder (~50KB). wavToMp3 parses the rendered WAV (16-bit, mono/stereo) and LAME-encodes it.\n\n▶ Play it: Food Court Eternity — parked on the genre this change names https://stellate.app/?genre=vaporwave&seed=2534&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\nf981d93 https://github.com/aboard-io/stellate/commit/f981d9366abde045411dc220e1c0a209331be84c",
   "date_published": "2026-06-07T03:19:57.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "mix"
   ]
  },
  {
   "id": "a8103615e2303988d17528ca558099e7959efba6",
   "url": "https://stellate.app/?genre=transitwave&seed=7709&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/a8103615e2303988d17528ca558099e7959efba6",
   "title": "Spinner tiles + flowing layout, per-section play, found vol/tone, reliable play",
   "summary": "UX overhaul from feedback:",
   "content_html": "<p>UX overhaul from feedback:</p>\n<ul><li>Grid is no longer a rigid table. Each section is a block whose cells FLOW as self-labeled tiles (6 across on desktop, 3x2 on mobile) — fixes mobile width, no horizontal scroll.</li><li>Every cell is a click-to-cycle SPINNER (right-click = back), incl. an &quot;off&quot; state. Dropdowns/popovers for options are gone</li><li>Per-section ▶ (play just one section); ⚙ on synth tiles opens the synth editor.</li><li>Found sound: per-source VOLUME + tone (lowpass) controls in the sources panel (instr 3 gains a cutoff p-field); role bed/solo dropped.</li></ul>\n<p><em>Verified:</em> native render clean; headless shows 48 tiles, spinner cycles, ⚙ on 4 synth tiles, mobile reflows to 3 cols with no overflow.</p>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=7709&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/a8103615e2303988d17528ca558099e7959efba6\">a810361</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "UX overhaul from feedback:\n\n• Grid is no longer a rigid table. Each section is a block whose cells FLOW as self-labeled tiles (6 across on desktop, 3x2 on mobile) — fixes mobile width, no horizontal scroll.\n\n• Every cell is a click-to-cycle SPINNER (right-click = back), incl. an \"off\" state. Dropdowns/popovers for options are gone\n\n• Per-section ▶ (play just one section); ⚙ on synth tiles opens the synth editor.\n\n• Found sound: per-source VOLUME + tone (lowpass) controls in the sources panel (instr 3 gains a cutoff p-field); role bed/solo dropped.\n\nVerified: native render clean; headless shows 48 tiles, spinner cycles, ⚙ on 4 synth tiles, mobile reflows to 3 cols with no overflow.\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=7709&path=749.12536,768.12569,730.12569&xdur=13.122\n\na810361 https://github.com/aboard-io/stellate/commit/a8103615e2303988d17528ca558099e7959efba6",
   "date_published": "2026-06-07T03:08:19.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "8404893323ee4538f634c801d233382211aca88b",
   "url": "https://stellate.app/?genre=ragtime&seed=8779&path=753.14435,772.14468,734.14468&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/8404893323ee4538f634c801d233382211aca88b",
   "title": "Builder: fall back on engine option lists to survive a stale cached engine",
   "summary": "A browser-cached older csd-engine.js lacking TRANSITIONS made E.TRANSITIONS undefined -> forEach threw in renderMatrix -> blank page. Add fallback constants for TRANSITIONS/BASS/MELODY/DRUM/WAVES so a version mismatch degrades gracefully.",
   "content_html": "<p>A browser-cached older csd-engine.js lacking TRANSITIONS made E.TRANSITIONS undefined -&gt; forEach threw in renderMatrix -&gt; blank page. Add fallback constants for TRANSITIONS/BASS/MELODY/DRUM/WAVES so a version mismatch degrades gracefully.</p>\n<p><a href=\"https://stellate.app/?genre=ragtime&amp;seed=8779&amp;path=753.14435,772.14468,734.14468&amp;xdur=13.122\">▶ Play it: Perforated Afterlife — the anchor authored from a measured corpus of real melodies</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/8404893323ee4538f634c801d233382211aca88b\">8404893</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "A browser-cached older csd-engine.js lacking TRANSITIONS made E.TRANSITIONS undefined -> forEach threw in renderMatrix -> blank page. Add fallback constants for TRANSITIONS/BASS/MELODY/DRUM/WAVES so a version mismatch degrades gracefully.\n\n▶ Play it: Perforated Afterlife — the anchor authored from a measured corpus of real melodies https://stellate.app/?genre=ragtime&seed=8779&path=753.14435,772.14468,734.14468&xdur=13.122\n\n8404893 https://github.com/aboard-io/stellate/commit/8404893323ee4538f634c801d233382211aca88b",
   "date_published": "2026-06-07T02:55:13.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ragtime",
    "melody"
   ]
  },
  {
   "id": "94948c3c299e99e91b0da878e5b1a3ef56125f64",
   "url": "https://stellate.app/?genre=transitwave&seed=7196&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/94948c3c299e99e91b0da878e5b1a3ef56125f64",
   "title": "Audible found sound, distinct melodies, alternating bass, ⚡ as dropdown",
   "summary": "Found sound was inaudible: instr 3 applied amplitude twice (syncgrain amp AND an envelope that peaked at the same amp -> level^2). Now syncgrain runs at unity and the envelope sets the level.",
   "content_html": "<p>Found sound was inaudible: instr 3 applied amplitude twice (syncgrain amp AND an envelope that peaked at the same amp -&gt; level^2). Now syncgrain runs at unity and the envelope sets the level.</p>\n<ul><li>Melody variety: replaced the mechanical chord-tone arps with distinct rhythmic/contour phrases per style (arpup/arpdown/updown/pentaup each its own shape, octave leaps), and wander is now a rhythmic random…</li><li>Alternating basslines across the song (verse simple, pre-chorus root, verse2/ chorus2 a busier variant) instead of one bass throughout.</li><li>⚡ transition is now a native &lt;select&gt; dropdown (off/drum fill/riser/sweep/ downlift/impact/reverse/noise) instead of a custom popover that read as a stuck &quot;transition&quot; window.</li></ul>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=7196&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/94948c3c299e99e91b0da878e5b1a3ef56125f64\">94948c3</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Found sound was inaudible: instr 3 applied amplitude twice (syncgrain amp AND an envelope that peaked at the same amp -> level^2). Now syncgrain runs at unity and the envelope sets the level.\n\n• Melody variety: replaced the mechanical chord-tone arps with distinct rhythmic/contour phrases per style (arpup/arpdown/updown/pentaup each its own shape, octave leaps), and wander is now a rhythmic random…\n\n• Alternating basslines across the song (verse simple, pre-chorus root, verse2/ chorus2 a busier variant) instead of one bass throughout.\n\n• ⚡ transition is now a native <select> dropdown (off/drum fill/riser/sweep/ downlift/impact/reverse/noise) instead of a custom popover that read as a stuck \"transition\" window.\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=7196&path=749.12536,768.12569,730.12569&xdur=13.122\n\n94948c3 https://github.com/aboard-io/stellate/commit/94948c3c299e99e91b0da878e5b1a3ef56125f64",
   "date_published": "2026-06-07T02:52:39.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "40bb15bcc5813389ed873b02da56f5413e649893",
   "url": "https://stellate.app/?genre=jungle&seed=9620&path=1718.20504,1737.20537,1699.20537&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/40bb15bcc5813389ed873b02da56f5413e649893",
   "title": "Fold SFX into the ⚡ transition control; drop the SFX column",
   "summary": "Per feedback, the lightning-bolt is now a per-section transition menu instead of a drum-fill toggle: off / drum fill / riser / sweep / downlift / impact / reverse / noise.",
   "content_html": "<p>Per feedback, the lightning-bolt is now a per-section transition menu instead of a drum-fill toggle: off / drum fill / riser / sweep / downlift / impact / reverse / noise.</p>\n<ul><li>Engine: sec.fill (string) drives the end-of-section transition — &quot;drum fill&quot; emits the snare roll; SFX types emit instr 20 (build-ups in the final bar, hits on the next downbeat).</li><li>Defaults: pre-chorus -&gt; riser, bridge -&gt; drum fill.</li><li>Verifier counts any transition; improve adds a riser into the drop.</li><li>Fix: ⚡ menu was self-closing (click bubbled to the popover's outside-click handler) — stopPropagation.</li></ul>\n<p><em>Verified:</em> engine renders clean; ⚡ menu lists all 8 transitions.</p>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=9620&amp;path=1718.20504,1737.20537,1699.20537&amp;xdur=13.122\">▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/40bb15bcc5813389ed873b02da56f5413e649893\">40bb15b</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Per feedback, the lightning-bolt is now a per-section transition menu instead of a drum-fill toggle: off / drum fill / riser / sweep / downlift / impact / reverse / noise.\n\n• Engine: sec.fill (string) drives the end-of-section transition — \"drum fill\" emits the snare roll; SFX types emit instr 20 (build-ups in the final bar, hits on the next downbeat).\n\n• Defaults: pre-chorus -> riser, bridge -> drum fill.\n\n• Verifier counts any transition; improve adds a riser into the drop.\n\n• Fix: ⚡ menu was self-closing (click bubbled to the popover's outside-click handler) — stopPropagation.\n\nVerified: engine renders clean; ⚡ menu lists all 8 transitions.\n\n▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide https://stellate.app/?genre=jungle&seed=9620&path=1718.20504,1737.20537,1699.20537&xdur=13.122\n\n40bb15b https://github.com/aboard-io/stellate/commit/40bb15bcc5813389ed873b02da56f5413e649893",
   "date_published": "2026-06-07T02:44:14.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "drums"
   ]
  },
  {
   "id": "4a8af4f7ddb10279797b32de26370440c35f8d4d",
   "url": "https://stellate.app/?genre=transitwave&seed=8663&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/4a8af4f7ddb10279797b32de26370440c35f8d4d",
   "title": "Fix audio breaking with console open; louder found; smarter SFX placement",
   "summary": "Silence Csound's per-note logging (-m0 -d on all boot paths). It was console.log-ing \"new alloc\"/\"rtevent\"/amp lines for every event; with DevTools open the browser rendered the flood and janked the main thread, killing audio (\"works again the moment I close the console\").",
   "content_html": "<p>Silence Csound's per-note logging (-m0 -d on all boot paths). It was console.log-ing &quot;new alloc&quot;/&quot;rtevent&quot;/amp lines for every event; with DevTools open the browser rendered the flood and janked the main thread, killing audio (&quot;works again the moment I close the console&quot;).</p>\n<ul><li>Found sound bed level 0.05 -&gt; 0.22 so it's actually audible mixed under the band (was inaudible). Solo 0.42 -&gt; 0.45.</li><li>SFX build-ups (riser/sweep/downlift/reverse) now play in the FINAL bar of a section, rising into the next, instead of at the section start (&quot;riser only makes sense as the final bar&quot;)</li></ul>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=8663&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/4a8af4f7ddb10279797b32de26370440c35f8d4d\">4a8af4f</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Silence Csound's per-note logging (-m0 -d on all boot paths). It was console.log-ing \"new alloc\"/\"rtevent\"/amp lines for every event; with DevTools open the browser rendered the flood and janked the main thread, killing audio (\"works again the moment I close the console\").\n\n• Found sound bed level 0.05 -> 0.22 so it's actually audible mixed under the band (was inaudible). Solo 0.42 -> 0.45.\n\n• SFX build-ups (riser/sweep/downlift/reverse) now play in the FINAL bar of a section, rising into the next, instead of at the section start (\"riser only makes sense as the final bar\")\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=8663&path=749.12536,768.12569,730.12569&xdur=13.122\n\n4a8af4f https://github.com/aboard-io/stellate/commit/4a8af4f7ddb10279797b32de26370440c35f8d4d",
   "date_published": "2026-06-07T02:39:34.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "c97295c45b34d244209284c70390645cacf5524f",
   "url": "https://stellate.app/?genre=bebop&seed=5860&path=694.13834,713.13867,675.13867&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/c97295c45b34d244209284c70390645cacf5524f",
   "title": "Fix live mode going silent after the intro",
   "summary": "csound inputMessage schedules p2 as a delay FROM the moment the message is received, not as absolute score time. The scheduler was sending absolute seconds, so section 1 (injected at t~0) played on time but every later section fired ~(its injection time) late, leaving silent gaps",
   "content_html": "<p>csound inputMessage schedules p2 as a delay FROM the moment the message is received, not as absolute score time. The scheduler was sending absolute seconds, so section 1 (injected at t~0) played on time but every later section fired ~(its injection time) late, leaving silent gaps</p>\n<ul><li>Fix: send p2 = eventAbsoluteSeconds - currentScoreTime(now). Verified with Puppeteer: audio now continuous across section boundaries (RMS 0.05-0.18, no gaps; was dropping to ~0.005 between sections).</li></ul>\n<p><a href=\"https://stellate.app/?genre=bebop&amp;seed=5860&amp;path=694.13834,713.13867,675.13867&amp;xdur=13.122\">▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/c97295c45b34d244209284c70390645cacf5524f\">c97295c</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "csound inputMessage schedules p2 as a delay FROM the moment the message is received, not as absolute score time. The scheduler was sending absolute seconds, so section 1 (injected at t~0) played on time but every later section fired ~(its injection time) late, leaving silent gaps\n\n• Fix: send p2 = eventAbsoluteSeconds - currentScoreTime(now). Verified with Puppeteer: audio now continuous across section boundaries (RMS 0.05-0.18, no gaps; was dropping to ~0.005 between sections).\n\n▶ Play it: Mercury Interrogation — where the harmony organ has the least anywhere to hide https://stellate.app/?genre=bebop&seed=5860&path=694.13834,713.13867,675.13867&xdur=13.122\n\nc97295c https://github.com/aboard-io/stellate/commit/c97295c45b34d244209284c70390645cacf5524f",
   "date_published": "2026-06-07T02:27:58.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bebop",
    "harmony"
   ]
  },
  {
   "id": "46eb52c399db98a5934233830faa51edac0d5e2d",
   "url": "https://stellate.app/?genre=transitwave&seed=1267&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/46eb52c399db98a5934233830faa51edac0d5e2d",
   "title": "Remove Paris Market found sound; default to Tokyo/Tsukiji/Asakusa",
   "summary": "Remove Paris Market found sound; default to Tokyo/Tsukiji/Asakusa",
   "content_html": "<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=1267&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/46eb52c399db98a5934233830faa51edac0d5e2d\">46eb52c</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=1267&path=749.12536,768.12569,730.12569&xdur=13.122\n\n46eb52c https://github.com/aboard-io/stellate/commit/46eb52c399db98a5934233830faa51edac0d5e2d",
   "date_published": "2026-06-07T02:23:52.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "c3adf86b956ce1b92b6d0f589e18b6bf3c98bc0b",
   "url": "https://stellate.app/?genre=jungle&seed=2443&path=1718.20504,1737.20537,1699.20537&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/c3adf86b956ce1b92b6d0f589e18b6bf3c98bc0b",
   "title": "Live edit-while-playing: just-in-time scheduler",
   "summary": "Play now uses playLive(): Csound runs with `f 0` keeping it alive; a JS lookahead scheduler injects each section's events ~1.5s before they play via inputMessage, reading the CURRENT state each tick (absolute score-time seconds, no t-tempo).",
   "content_html": "<p>Play now uses playLive(): Csound runs with `f 0` keeping it alive; a JS lookahead scheduler injects each section's events ~1.5s before they play via inputMessage, reading the CURRENT state each tick (absolute score-time seconds, no t-tempo).</p>\n<ul><li>Both deferred features now done (SFX channel + live editing).</li></ul>\n<p><em>Verified:</em> with Puppeteer: audio flows (RMS 0.19), 314 events injected, and a section toggled drums-off -&gt; open mid-playback emitted 81 drum events at its scheduled time (the live edit applied).</p>\n<p><a href=\"https://stellate.app/?genre=jungle&amp;seed=2443&amp;path=1718.20504,1737.20537,1699.20537&amp;xdur=13.122\">▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/c3adf86b956ce1b92b6d0f589e18b6bf3c98bc0b\">c3adf86</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Play now uses playLive(): Csound runs with `f 0` keeping it alive; a JS lookahead scheduler injects each section's events ~1.5s before they play via inputMessage, reading the CURRENT state each tick (absolute score-time seconds, no t-tempo).\n\n• Both deferred features now done (SFX channel + live editing).\n\nVerified: with Puppeteer: audio flows (RMS 0.19), 314 events injected, and a section toggled drums-off -> open mid-playback emitted 81 drum events at its scheduled time (the live edit applied).\n\n▶ Play it: Barometric Stampede — the genre that is mostly drums, so the kit has nowhere to hide https://stellate.app/?genre=jungle&seed=2443&path=1718.20504,1737.20537,1699.20537&xdur=13.122\n\nc3adf86 https://github.com/aboard-io/stellate/commit/c3adf86b956ce1b92b6d0f589e18b6bf3c98bc0b",
   "date_published": "2026-06-07T01:18:08.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "jungle",
    "drums"
   ]
  },
  {
   "id": "e19493446c6ce5d97a32bcbb52f790cfd96c5e9a",
   "url": "https://stellate.app/?genre=vaporwave&seed=3628&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/e19493446c6ce5d97a32bcbb52f790cfd96c5e9a",
   "title": "Add SFX transition channel (risers, sweeps, impacts, reverse, noise)",
   "summary": "New instr 20 with 6 transition types (riser / sweep / downlift / impact / reverse swell / noise hit), one per section as an entering transition: lead-in types end on the section downbeat, hits land on it.",
   "content_html": "<p>New instr 20 with 6 transition types (riser / sweep / downlift / impact / reverse swell / noise hit), one per section as an entering transition: lead-in types end on the section downbeat, hits land on it.</p>\n<ul><li>Engine verified: renders clean with SFX (peak 0.71, 0 errors). UI verified headless: 6 instrument columns / 48 cells, mobile no overflow, no errors.</li></ul>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=3628&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — the brightest, most processed corner of the space</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/e19493446c6ce5d97a32bcbb52f790cfd96c5e9a\">e194934</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "New instr 20 with 6 transition types (riser / sweep / downlift / impact / reverse swell / noise hit), one per section as an entering transition: lead-in types end on the section downbeat, hits land on it.\n\n• Engine verified: renders clean with SFX (peak 0.71, 0 errors). UI verified headless: 6 instrument columns / 48 cells, mobile no overflow, no errors.\n\n▶ Play it: Food Court Eternity — the brightest, most processed corner of the space https://stellate.app/?genre=vaporwave&seed=3628&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\ne194934 https://github.com/aboard-io/stellate/commit/e19493446c6ce5d97a32bcbb52f790cfd96c5e9a",
   "date_published": "2026-06-07T01:13:32.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "mix"
   ]
  },
  {
   "id": "726d06de8c18d59df6de174929c97889195796ee",
   "url": "https://stellate.app/?genre=synthwave&seed=3806&path=859.9931,1679.4415,263.9071&xdur=0.131",
   "external_url": "https://github.com/aboard-io/stellate/commit/726d06de8c18d59df6de174929c97889195796ee",
   "title": "Styles, delay, more progressions/drums, a song verifier, IDB cache, mobile",
   "summary": "Big musical + good-loop expansion (engine verified: ALL PASS, 30+ native renders).",
   "content_html": "<p>Big musical + good-loop expansion (engine verified: ALL PASS, 30+ native renders).</p>\n<ul><li>15 chord progressions (added pop/synthwave/andalusian/neosoul/lofi/canon/...).</li><li>4 STYLE presets — vaporwave / synthwave / downtempo / lo-fi — that recast the whole song (tempo, reverb, delay, instruments, progression, drum/bass/melody).</li><li>Delay bus (instr 98) routed per-instrument like reverb (delay send per synth; global delay time/feedback/cutoff).</li><li>8 drum kits (added four/boombap/halftime/trap) with a fill on the last bar of each cycle (4-bar development).</li></ul>\n<p><a href=\"https://stellate.app/?genre=synthwave&amp;seed=3806&amp;path=859.9931,1679.4415,263.9071&amp;xdur=0.131\">▶ Play it: Highway Heat Death → Food Court Eternity → Dust Census — the three genres this change names, as one path</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/726d06de8c18d59df6de174929c97889195796ee\">726d06d</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Big musical + good-loop expansion (engine verified: ALL PASS, 30+ native renders).\n\n• 15 chord progressions (added pop/synthwave/andalusian/neosoul/lofi/canon/...).\n\n• 4 STYLE presets — vaporwave / synthwave / downtempo / lo-fi — that recast the whole song (tempo, reverb, delay, instruments, progression, drum/bass/melody).\n\n• Delay bus (instr 98) routed per-instrument like reverb (delay send per synth; global delay time/feedback/cutoff).\n\n• 8 drum kits (added four/boombap/halftime/trap) with a fill on the last bar of each cycle (4-bar development).\n\n▶ Play it: Highway Heat Death → Food Court Eternity → Dust Census — the three genres this change names, as one path https://stellate.app/?genre=synthwave&seed=3806&path=859.9931,1679.4415,263.9071&xdur=0.131\n\n726d06d https://github.com/aboard-io/stellate/commit/726d06de8c18d59df6de174929c97889195796ee",
   "date_published": "2026-06-06T22:03:37.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "synthwave",
    "vaporwave",
    "lofi",
    "found"
   ]
  },
  {
   "id": "fee6cf8bd568ce26827b1502a6e057ff71aab17b",
   "url": "https://stellate.app/?genre=transitwave&seed=1275&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/fee6cf8bd568ce26827b1502a6e057ff71aab17b",
   "title": "Faster found-sound: range-fetch a chunk, trim, prewarm, dedupe cache",
   "summary": "First Play was ~50s because each found source downloaded + decoded in full. Now:",
   "content_html": "<p>First Play was ~50s because each found source downloaded + decoded in full. Now:</p>\n<ul><li>fetchAudioBytes() uses an HTTP Range request for the first ~1MB and only falls back to the whole file if the host ignores Range or the truncated stream won't decode.</li><li>trim the decoded audio to 45s before encoding (syncgrain only needs a window) — shrinks the WAV and the Csound ftgen table load ~4x.</li><li>builder prewarms the arrangement's sources in the background on load, so the first Play is instant.</li><li>decodeUrlToWav now caches the in-flight Promise, so prewarm + a Play click share one fetch instead of double-fetching.</li></ul>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=1275&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/fee6cf8bd568ce26827b1502a6e057ff71aab17b\">fee6cf8</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "First Play was ~50s because each found source downloaded + decoded in full. Now:\n\n• fetchAudioBytes() uses an HTTP Range request for the first ~1MB and only falls back to the whole file if the host ignores Range or the truncated stream won't decode.\n\n• trim the decoded audio to 45s before encoding (syncgrain only needs a window) — shrinks the WAV and the Csound ftgen table load ~4x.\n\n• builder prewarms the arrangement's sources in the background on load, so the first Play is instant.\n\n• decodeUrlToWav now caches the in-flight Promise, so prewarm + a Play click share one fetch instead of double-fetching.\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=1275&path=749.12536,768.12569,730.12569&xdur=13.122\n\nfee6cf8 https://github.com/aboard-io/stellate/commit/fee6cf8bd568ce26827b1502a6e057ff71aab17b",
   "date_published": "2026-06-06T21:35:31.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "e14a6d4534fbe2fb9d5c84bb20a1b3a53e2411ff",
   "url": "https://stellate.app/?genre=bigband&seed=4237&path=814.14134,833.14167,795.14167&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/e14a6d4534fbe2fb9d5c84bb20a1b3a53e2411ff",
   "title": "Fix silent playback: revert useSPN -> worklet, match sample rate",
   "summary": "Read the @csound/browser source: useSPN uses createScriptProcessor(0,...) (a deprecated node that was producing silence here) and CLOSES a provided AudioContext on teardown.",
   "content_html": "<p>Read the @csound/browser source: useSPN uses createScriptProcessor(0,...) (a deprecated node that was producing silence here) and CLOSES a provided AudioContext on teardown.</p>\n<ul><li>Drop useSPN; let Csound use the worklet with our provided, resumed context.</li><li>Create the AudioContext at sampleRate 44100 to match the CSD (was 48k default).</li><li>Recreate the context if it ever ends up closed.</li></ul>\n<p><em>Verified:</em> objectively with Puppeteer by splicing an AnalyserNode before the destination and reading levels: maxRMS 0.33 (was silent). ctx state &quot;running&quot;.</p>\n<p><a href=\"https://stellate.app/?genre=bigband&amp;seed=4237&amp;path=814.14134,833.14167,795.14167&amp;xdur=13.122\">▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/e14a6d4534fbe2fb9d5c84bb20a1b3a53e2411ff\">e14a6d4</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Read the @csound/browser source: useSPN uses createScriptProcessor(0,...) (a deprecated node that was producing silence here) and CLOSES a provided AudioContext on teardown.\n\n• Drop useSPN; let Csound use the worklet with our provided, resumed context.\n\n• Create the AudioContext at sampleRate 44100 to match the CSD (was 48k default).\n\n• Recreate the context if it ever ends up closed.\n\nVerified: objectively with Puppeteer by splicing an AnalyserNode before the destination and reading levels: maxRMS 0.33 (was silent). ctx state \"running\".\n\n▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments https://stellate.app/?genre=bigband&seed=4237&path=814.14134,833.14167,795.14167&xdur=13.122\n\ne14a6d4 https://github.com/aboard-io/stellate/commit/e14a6d4534fbe2fb9d5c84bb20a1b3a53e2411ff",
   "date_published": "2026-06-06T21:20:18.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bigband",
    "sampler"
   ]
  },
  {
   "id": "3eec0c829b231afeaf0ed4ecfc17c9e0330ea21a",
   "url": "https://stellate.app/?genre=vaporwave&seed=3090&path=1679.4415,292.16891,1718.20526&xdur=0.046",
   "external_url": "https://github.com/aboard-io/stellate/commit/3eec0c829b231afeaf0ed4ecfc17c9e0330ea21a",
   "title": "Fix MP3/WAV export crash + harden audio backend",
   "summary": "Reproduced with Puppeteer:",
   "content_html": "<p>Reproduced with Puppeteer:</p>\n<ul><li>Export crashed with &quot;memory access out of bounds&quot; at csoundSetOption, preceded by &quot;Csound Command ERROR: no outfilename&quot;.</li><li>renderEnded never fires and start() may not resolve at score end, so offline render now polls the output file until it stops growing, then stop()s to finalize the WAV header and reads it.</li><li>Playback hardening for plain HTTPS hosts (no COOP/COEP): use the ScriptProcessor backend (useSPN) with our resumed AudioContext</li></ul>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=3090&amp;path=1679.4415,292.16891,1718.20526&amp;xdur=0.046\">▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/3eec0c829b231afeaf0ed4ecfc17c9e0330ea21a\">3eec0c8</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Reproduced with Puppeteer:\n\n• Export crashed with \"memory access out of bounds\" at csoundSetOption, preceded by \"Csound Command ERROR: no outfilename\".\n\n• renderEnded never fires and start() may not resolve at score end, so offline render now polls the output file until it stops growing, then stop()s to finalize the WAV header and reads it.\n\n• Playback hardening for plain HTTPS hosts (no COOP/COEP): use the ScriptProcessor backend (useSPN) with our resumed AudioContext\n\n▶ Play it: Food Court Eternity → Smoke Arithmetic → Barometric Stampede — a constellation across three families — the path is the mix https://stellate.app/?genre=vaporwave&seed=3090&path=1679.4415,292.16891,1718.20526&xdur=0.046\n\n3eec0c8 https://github.com/aboard-io/stellate/commit/3eec0c829b231afeaf0ed4ecfc17c9e0330ea21a",
   "date_published": "2026-06-06T21:12:42.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "jazz",
    "jungle",
    "travel"
   ]
  },
  {
   "id": "8d336f9beec1e4ce81feea57637e58f47e0c4e8f",
   "url": "https://stellate.app/?genre=transitwave&seed=6363&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/8d336f9beec1e4ce81feea57637e58f47e0c4e8f",
   "title": "Fix: no audio out — resume AudioContext inside the click gesture",
   "summary": "Diagnosed with Puppeteer (real Chrome, default autoplay policy): Csound booted, decoded the found sound, compiled and performed — but the AudioContext stayed suspended, so nothing reached the speakers.",
   "content_html": "<p>Diagnosed with Puppeteer (real Chrome, default autoplay policy): Csound booted, decoded the found sound, compiled and performed — but the AudioContext stayed suspended, so nothing reached the speakers.</p>\n<ul><li>Fix: resume a shared AudioContext synchronously as the FIRST thing in play() (before any await), and hand that same context to Csound via Csound({audioContext}).</li></ul>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=6363&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/8d336f9beec1e4ce81feea57637e58f47e0c4e8f\">8d336f9</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Diagnosed with Puppeteer (real Chrome, default autoplay policy): Csound booted, decoded the found sound, compiled and performed — but the AudioContext stayed suspended, so nothing reached the speakers.\n\n• Fix: resume a shared AudioContext synchronously as the FIRST thing in play() (before any await), and hand that same context to Csound via Csound({audioContext}).\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=6363&path=749.12536,768.12569,730.12569&xdur=13.122\n\n8d336f9 https://github.com/aboard-io/stellate/commit/8d336f9beec1e4ce81feea57637e58f47e0c4e8f",
   "date_published": "2026-06-06T21:01:49.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "511545d57736fca96ac9db8c16a43c31a754308c",
   "url": "https://stellate.app/?genre=citypop&seed=8629&path=1530.6221,586.10667,1376.19565&xdur=0.056",
   "external_url": "https://github.com/aboard-io/stellate/commit/511545d57736fca96ac9db8c16a43c31a754308c",
   "title": "Builder: replace hand-rolled drag with SortableJS (fixes glitch/gap)",
   "summary": "The custom pointer-drag rebuilt the DOM on every midpoint crossing, which fought the cursor and left gaps. Swap in SortableJS (vanilla, CDN, ~40KB):",
   "content_html": "<p>The custom pointer-drag rebuilt the DOM on every midpoint crossing, which fought the cursor and left gaps. Swap in SortableJS (vanilla, CDN, ~40KB):</p>\n<ul><li>grip is the handle; smooth animated reordering with a real ghost placeholder (row-ghost) and a floating drag clone (row-drag, forceFallback+fallbackOnBody);</li><li>rows now live in a flex .rows list with uniform gap — removed the between-row .addgap strips that caused the gapping; insert (⊕) moved into the row header;</li><li>onEnd syncs state.sections and re-renders once (no mid-drag rebuilds).</li></ul>\n<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=8629&amp;path=1530.6221,586.10667,1376.19565&amp;xdur=0.056\">▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/511545d57736fca96ac9db8c16a43c31a754308c\">511545d</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The custom pointer-drag rebuilt the DOM on every midpoint crossing, which fought the cursor and left gaps. Swap in SortableJS (vanilla, CDN, ~40KB):\n\n• grip is the handle; smooth animated reordering with a real ghost placeholder (row-ghost) and a floating drag clone (row-drag, forceFallback+fallbackOnBody);\n\n• rows now live in a flex .rows list with uniform gap — removed the between-row .addgap strips that caused the gapping; insert (⊕) moved into the row header;\n\n• onEnd syncs state.sections and re-renders once (no mid-drag rebuilds).\n\n▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix https://stellate.app/?genre=citypop&seed=8629&path=1530.6221,586.10667,1376.19565&xdur=0.056\n\n511545d https://github.com/aboard-io/stellate/commit/511545d57736fca96ac9db8c16a43c31a754308c",
   "date_published": "2026-06-06T20:50:03.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "downtempo",
    "dnb"
   ]
  },
  {
   "id": "c3d4dad787532d01e911d2da15597e20ca8536e0",
   "url": "https://stellate.app/?genre=citypop&seed=3775&path=1530.6221,586.10667,1376.19565&xdur=0.056",
   "external_url": "https://github.com/aboard-io/stellate/commit/c3d4dad787532d01e911d2da15597e20ca8536e0",
   "title": "Builder: visible drag-and-drop reordering",
   "summary": "HTML5 drag gave no feedback (drop worked, but nothing moved on screen). Replace with a pointer-based sortable on the ⠿ grip:",
   "content_html": "<p>HTML5 drag gave no feedback (drop worked, but nothing moved on screen). Replace with a pointer-based sortable on the ⠿ grip:</p>\n<ul><li>a neon chip follows the cursor,</li><li>the dragged row dims (.dragging),</li><li>rows shuffle LIVE as you move past their midpoints (array reorder + re-render each crossing), so you see the arrangement rearranging in real time.</li></ul>\n<p><a href=\"https://stellate.app/?genre=citypop&amp;seed=3775&amp;path=1530.6221,586.10667,1376.19565&amp;xdur=0.056\">▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/c3d4dad787532d01e911d2da15597e20ca8536e0\">c3d4dad</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "HTML5 drag gave no feedback (drop worked, but nothing moved on screen). Replace with a pointer-based sortable on the ⠿ grip:\n\n• a neon chip follows the cursor,\n\n• the dragged row dims (.dragging),\n\n• rows shuffle LIVE as you move past their midpoints (array reorder + re-render each crossing), so you see the arrangement rearranging in real time.\n\n▶ Play it: Neon Fiscal Year → Benthic Patience → Silken Reentry — a constellation across three families — the path is the mix https://stellate.app/?genre=citypop&seed=3775&path=1530.6221,586.10667,1376.19565&xdur=0.056\n\nc3d4dad https://github.com/aboard-io/stellate/commit/c3d4dad787532d01e911d2da15597e20ca8536e0",
   "date_published": "2026-06-06T20:44:42.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "citypop",
    "downtempo",
    "dnb"
   ]
  },
  {
   "id": "848cad58ff51dda92248f3874ec5c5bba59a9b6c",
   "url": "https://stellate.app/?genre=vaporwave&seed=2928&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/848cad58ff51dda92248f3874ec5c5bba59a9b6c",
   "title": "Builder overhaul: fix silent drums, per-instrument synths, swing/humanize, vaporwave UI",
   "summary": "Major fix:",
   "content_html": "<p>Major fix:</p>\n<ul><li>DRUMS WERE SILENT — instr 10/11/12 read amp from p5 but the score passes it in p4. Fixed in both csd-engine.js and royal-road.csd (drums-only render now peaks 0.71 vs 0.00; royal-road.csd peak 0.31 -&gt; 0.67).</li><li>Removed the solo/chords section type; every section is uniform, found sound is just another (off-by-default) layer instead of forced on every row.</li><li>Compacted rows; drag ⠿ to reorder sections.</li><li>Per-instrument synth editors (click an instrument header): waveform (sine/saw/square/pulse), cutoff, resonance, detune, attack, vibrato, level, reverb send — all wired into a parameterized orchestra.</li></ul>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=2928&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/848cad58ff51dda92248f3874ec5c5bba59a9b6c\">848cad5</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Major fix:\n\n• DRUMS WERE SILENT — instr 10/11/12 read amp from p5 but the score passes it in p4. Fixed in both csd-engine.js and royal-road.csd (drums-only render now peaks 0.71 vs 0.00; royal-road.csd peak 0.31 -> 0.67).\n\n• Removed the solo/chords section type; every section is uniform, found sound is just another (off-by-default) layer instead of forced on every row.\n\n• Compacted rows; drag ⠿ to reorder sections.\n\n• Per-instrument synth editors (click an instrument header): waveform (sine/saw/square/pulse), cutoff, resonance, detune, attack, vibrato, level, reverb send — all wired into a parameterized orchestra.\n\n▶ Play it: Food Court Eternity — parked on the genre this change names https://stellate.app/?genre=vaporwave&seed=2928&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\n848cad5 https://github.com/aboard-io/stellate/commit/848cad58ff51dda92248f3874ec5c5bba59a9b6c",
   "date_published": "2026-06-06T20:41:47.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "found"
   ]
  },
  {
   "id": "43f063d579618959579e7fac6dc037635a388951",
   "url": "https://stellate.app/?genre=transitwave&seed=5669&path=749.12536,768.12569,730.12569&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/43f063d579618959579e7fac6dc037635a388951",
   "title": "Builder: rotate to clip matrix, MIDI export, reseed/preview/playhead",
   "summary": "Address UX feedback:",
   "content_html": "<p>Address UX feedback:</p>\n<ul><li>Rotate the grid: sections are rows (time ↓), instruments are columns (Pads/Bass/Drums/Melody/Found), each color-coded.</li><li>Remove the on-page Csound source viewer entirely.</li><li>Playhead: highlights the currently-playing section row during playback (performance.now → beat → section), Ableton-style.</li><li>Per-cell ▶ to audition just that layer/section.</li></ul>\n<p><a href=\"https://stellate.app/?genre=transitwave&amp;seed=5669&amp;path=749.12536,768.12569,730.12569&amp;xdur=13.122\">▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/43f063d579618959579e7fac6dc037635a388951\">43f063d</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Address UX feedback:\n\n• Rotate the grid: sections are rows (time ↓), instruments are columns (Pads/Bass/Drums/Melody/Found), each color-coded.\n\n• Remove the on-page Csound source viewer entirely.\n\n• Playhead: highlights the currently-playing section row during playback (performance.now → beat → section), Ableton-style.\n\n• Per-cell ▶ to audition just that layer/section.\n\n▶ Play it: Rail Replacement Rapture — a bed-heavy genre where the found-sound layer carries the room https://stellate.app/?genre=transitwave&seed=5669&path=749.12536,768.12569,730.12569&xdur=13.122\n\n43f063d https://github.com/aboard-io/stellate/commit/43f063d579618959579e7fac6dc037635a388951",
   "date_published": "2026-06-06T20:03:26.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "transitwave",
    "found"
   ]
  },
  {
   "id": "619428ca30b9b064fa05d5c6c9cf9ba49d3559c2",
   "url": "https://stellate.app/?genre=ragtime&seed=9722&path=753.14435,772.14468,734.14468&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/619428ca30b9b064fa05d5c6c9cf9ba49d3559c2",
   "title": "Redesign builder UI: Pico.css + Ableton-style arrangement matrix",
   "summary": "Fixes the unreadable white-bar controls and the weak card-list UX.",
   "content_html": "<p>Fixes the unreadable white-bar controls and the weak card-list UX.</p>\n<ul><li>Adopt Pico.css (CDN) for accessible, high-contrast chrome; set color-scheme:dark so native selects/range/number controls stop rendering as white bars with light text.</li><li>Replace the vertical section cards with a clip matrix: layers (Pads/Bass/ Drums/Melody/Found) as color-coded rows, sections as time columns scaled by cycle count.</li><li>Transition gutters between columns: ⚡ toggles &quot;fill into next&quot;, ＋ inserts a section; per-section name / type / cycles / reorder / delete in the header.</li><li>Color used as meaning (one hue per layer), with a legend.</li></ul>\n<p><a href=\"https://stellate.app/?genre=ragtime&amp;seed=9722&amp;path=753.14435,772.14468,734.14468&amp;xdur=13.122\">▶ Play it: Perforated Afterlife — the anchor authored from a measured corpus of real melodies</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/619428ca30b9b064fa05d5c6c9cf9ba49d3559c2\">619428c</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Fixes the unreadable white-bar controls and the weak card-list UX.\n\n• Adopt Pico.css (CDN) for accessible, high-contrast chrome; set color-scheme:dark so native selects/range/number controls stop rendering as white bars with light text.\n\n• Replace the vertical section cards with a clip matrix: layers (Pads/Bass/ Drums/Melody/Found) as color-coded rows, sections as time columns scaled by cycle count.\n\n• Transition gutters between columns: ⚡ toggles \"fill into next\", ＋ inserts a section; per-section name / type / cycles / reorder / delete in the header.\n\n• Color used as meaning (one hue per layer), with a legend.\n\n▶ Play it: Perforated Afterlife — the anchor authored from a measured corpus of real melodies https://stellate.app/?genre=ragtime&seed=9722&path=753.14435,772.14468,734.14468&xdur=13.122\n\n619428c https://github.com/aboard-io/stellate/commit/619428ca30b9b064fa05d5c6c9cf9ba49d3559c2",
   "date_published": "2026-06-06T19:45:55.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ragtime",
    "melody"
   ]
  },
  {
   "id": "0ce7a7a9a102bd0ac4c83a6d45e0933c6fa1f2d5",
   "url": "https://stellate.app/?genre=bigband&seed=5329&path=814.14134,833.14167,795.14167&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/0ce7a7a9a102bd0ac4c83a6d45e0933c6fa1f2d5",
   "title": "Add browser (Csound WASM) player + interactive song builder, with MP3 export",
   "summary": "Run the capability in a browser tab — no Csound install:",
   "content_html": "<p>Run the capability in a browser tab — no Csound install:</p>\n<ul><li>csd-engine.js — pure buildCsd(state) -&gt; Csound text. Same engine as royal-road.csd, but the score is data-driven so a UI can rearrange it.</li><li>wasm-audio.js — boots @csound/browser; decodes ANY audio URL via Web Audio into a WAV that ftgen can granulate (mp3/ogg/wav/m4a); realtime play + offline WAV render.</li><li>wasm-ffmpeg.js — MP3 export via ffmpeg.wasm (single-thread core; no SharedArrayBuffer / COOP-COEP needed, runs on plain localhost).</li><li>builder.html — full song builder: every knob, add audio by URL, export WAV / MP3 / .csd / preset JSON.</li></ul>\n<p><em>Verified:</em> the generator emits valid Csound (13 native renders pass) and the builder UI initializes + generates CSD in a real (headless) browser.</p>\n<p><a href=\"https://stellate.app/?genre=bigband&amp;seed=5329&amp;path=814.14134,833.14167,795.14167&amp;xdur=13.122\">▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/0ce7a7a9a102bd0ac4c83a6d45e0933c6fa1f2d5\">0ce7a7a</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Run the capability in a browser tab — no Csound install:\n\n• csd-engine.js — pure buildCsd(state) -> Csound text. Same engine as royal-road.csd, but the score is data-driven so a UI can rearrange it.\n\n• wasm-audio.js — boots @csound/browser; decodes ANY audio URL via Web Audio into a WAV that ftgen can granulate (mp3/ogg/wav/m4a); realtime play + offline WAV render.\n\n• wasm-ffmpeg.js — MP3 export via ffmpeg.wasm (single-thread core; no SharedArrayBuffer / COOP-COEP needed, runs on plain localhost).\n\n• builder.html — full song builder: every knob, add audio by URL, export WAV / MP3 / .csd / preset JSON.\n\nVerified: the generator emits valid Csound (13 native renders pass) and the builder UI initializes + generates CSD in a real (headless) browser.\n\n▶ Play it: Ballroom Leviathan — a horn-and-piano genre that plays almost entirely sampled instruments https://stellate.app/?genre=bigband&seed=5329&path=814.14134,833.14167,795.14167&xdur=13.122\n\n0ce7a7a https://github.com/aboard-io/stellate/commit/0ce7a7a9a102bd0ac4c83a6d45e0933c6fa1f2d5",
   "date_published": "2026-06-06T11:31:47.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "bigband",
    "sampler"
   ]
  },
  {
   "id": "46136cc27b60baa5be78d9b15f9f2de3d474fbd1",
   "url": "https://stellate.app/?genre=ragtime&seed=9146&path=753.14435,772.14468,734.14468&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/46136cc27b60baa5be78d9b15f9f2de3d474fbd1",
   "title": "Speed up to 88 BPM and vary the reprise",
   "summary": "Tempo 70 -> 88: slowed, but with an actual pulse.",
   "content_html": "<p>Tempo 70 -&gt; 88: slowed, but with an actual pulse.</p>\n<ul><li>BASS2 — busier eighth-note walking bass</li><li>MEL2 — higher, more ornamented lead variation</li><li>DRUMS2 — ghost snares + open hats on the offbeats</li><li>FILL macro: a 2-beat snare-roll into each drop (into the full kit at the end of cyc C, and out of the interlude into the reprise).</li></ul>\n<p><a href=\"https://stellate.app/?genre=ragtime&amp;seed=9146&amp;path=753.14435,772.14468,734.14468&amp;xdur=13.122\">▶ Play it: Perforated Afterlife — the anchor authored from a measured corpus of real melodies</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/46136cc27b60baa5be78d9b15f9f2de3d474fbd1\">46136cc</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Tempo 70 -> 88: slowed, but with an actual pulse.\n\n• BASS2 — busier eighth-note walking bass\n\n• MEL2 — higher, more ornamented lead variation\n\n• DRUMS2 — ghost snares + open hats on the offbeats\n\n• FILL macro: a 2-beat snare-roll into each drop (into the full kit at the end of cyc C, and out of the interlude into the reprise).\n\n▶ Play it: Perforated Afterlife — the anchor authored from a measured corpus of real melodies https://stellate.app/?genre=ragtime&seed=9146&path=753.14435,772.14468,734.14468&xdur=13.122\n\n46136cc https://github.com/aboard-io/stellate/commit/46136cc27b60baa5be78d9b15f9f2de3d474fbd1",
   "date_published": "2026-06-06T05:11:02.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ragtime",
    "melody"
   ]
  },
  {
   "id": "ffb8aefd9c3d65d5f42a607e45ec7be65097e790",
   "url": "https://stellate.app/?genre=ragtime&seed=3501&path=753.14435,772.14468,734.14468&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/ffb8aefd9c3d65d5f42a607e45ec7be65097e790",
   "title": "Add a synth drum kit and rebuild as a layered, bit-by-bit arrangement",
   "summary": "Nothing starts at once now — the track builds: intro (city alone) -> +pads -> +bass -> +kick pulse -> full kit + melody -> stripped interlude (city alone) -> full reprise -> outro (city fades).",
   "content_html": "<p>Nothing starts at once now — the track builds: intro (city alone) -&gt; +pads -&gt; +bass -&gt; +kick pulse -&gt; full kit + melody -&gt; stripped interlude (city alone) -&gt; full reprise -&gt; outro (city fades).</p>\n<ul><li>New voices: instr 10 kick (pitch-drop sine + saturation), instr 11 snare/rim (band-passed noise + tones), instr 12 hats (high-passed noise).</li><li>New master bus (instr 100) sums everything through a soft limiter (clip), and reverb (instr 99) now feeds the master too — so the full stack peaks ~0.31 with zero clipped samples instead of risking overload.</li><li>Score rewritten around PAD/BASS/DRUMKICK/DRUMS/MEL macros keyed by start beat; arrangement reads as labelled section calls. ~3 min.</li><li>Renders clean under csound 6.18.</li></ul>\n<p><a href=\"https://stellate.app/?genre=ragtime&amp;seed=3501&amp;path=753.14435,772.14468,734.14468&amp;xdur=13.122\">▶ Play it: Perforated Afterlife — the anchor authored from a measured corpus of real melodies</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/ffb8aefd9c3d65d5f42a607e45ec7be65097e790\">ffb8aef</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "Nothing starts at once now — the track builds: intro (city alone) -> +pads -> +bass -> +kick pulse -> full kit + melody -> stripped interlude (city alone) -> full reprise -> outro (city fades).\n\n• New voices: instr 10 kick (pitch-drop sine + saturation), instr 11 snare/rim (band-passed noise + tones), instr 12 hats (high-passed noise).\n\n• New master bus (instr 100) sums everything through a soft limiter (clip), and reverb (instr 99) now feeds the master too — so the full stack peaks ~0.31 with zero clipped samples instead of risking overload.\n\n• Score rewritten around PAD/BASS/DRUMKICK/DRUMS/MEL macros keyed by start beat; arrangement reads as labelled section calls. ~3 min.\n\n• Renders clean under csound 6.18.\n\n▶ Play it: Perforated Afterlife — the anchor authored from a measured corpus of real melodies https://stellate.app/?genre=ragtime&seed=3501&path=753.14435,772.14468,734.14468&xdur=13.122\n\nffb8aef https://github.com/aboard-io/stellate/commit/ffb8aefd9c3d65d5f42a607e45ec7be65097e790",
   "date_published": "2026-06-06T05:02:46.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "ragtime",
    "melody"
   ]
  },
  {
   "id": "cdb511ae3529d20c5a4bc6a10ec6bf7984d8c604",
   "url": "https://stellate.app/?genre=vaporwave&seed=2822&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/cdb511ae3529d20c5a4bc6a10ec6bf7984d8c604",
   "title": "Add a moving bassline and a lead melody to the vaporwave sketch",
   "summary": "instr 2 reworked from a static held root into a syncopated city-pop bass figure (root / octave / fifth movement), pluckier envelope so the line articulates; driven by a new BASS score macro per chord.",
   "content_html": "<p>instr 2 reworked from a static held root into a syncopated city-pop bass figure (root / octave / fifth movement), pluckier envelope so the line articulates; driven by a new BASS score macro per chord.</p>\n<ul><li>instr 4 (new): lead melody — detuned sines + soft octave partial, gentle vibrato, reverb send. A wistful top line over both Royal Road passes via a MEL score macro.</li><li>Score refactored to PAD/BASS/MEL macros so the harmony stays readable.</li><li>Renders clean under csound 6.18, peak ~0.34, no clipping.</li></ul>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=2822&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/cdb511ae3529d20c5a4bc6a10ec6bf7984d8c604\">cdb511a</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "instr 2 reworked from a static held root into a syncopated city-pop bass figure (root / octave / fifth movement), pluckier envelope so the line articulates; driven by a new BASS score macro per chord.\n\n• instr 4 (new): lead melody — detuned sines + soft octave partial, gentle vibrato, reverb send. A wistful top line over both Royal Road passes via a MEL score macro.\n\n• Score refactored to PAD/BASS/MEL macros so the harmony stays readable.\n\n• Renders clean under csound 6.18, peak ~0.34, no clipping.\n\n▶ Play it: Food Court Eternity — parked on the genre this change names https://stellate.app/?genre=vaporwave&seed=2822&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\ncdb511a https://github.com/aboard-io/stellate/commit/cdb511ae3529d20c5a4bc6a10ec6bf7984d8c604",
   "date_published": "2026-06-06T04:55:03.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "harmony"
   ]
  },
  {
   "id": "d7744c9c33d059e88a00d0f4849995b90b86c04f",
   "url": "https://stellate.app/?genre=vaporwave&seed=9228&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/d7744c9c33d059e88a00d0f4849995b90b86c04f",
   "title": "Restore the full vaporwave capability: found sound + MP3, as recipe",
   "summary": "The earlier pipeline didn't just play synth chords — it layered field recordings from the Internet Archive (radio aporee: Tokyo Station, Tsukiji, Asakusa, a Paris market), granular-processed through syncgrain (stretched, pitched down, into the reverb), arranged as solo interludes where the band…",
   "content_html": "<p>The earlier pipeline didn't just play synth chords — it layered field recordings from the Internet Archive (radio aporee: Tokyo Station, Tsukiji, Asakusa, a Paris market), granular-processed through syncgrain (stretched, pitched down, into the reverb), arranged as solo interludes where the band…</p>\n<ul><li>royal-road.csd — adds instr 3: syncgrain found-sound layer (Tokyo Station), plus an arrangement with intro/interlude/outro city solos and a haze bed under two Royal Road passes.</li><li>fetch-found-sound.sh — downloads + trims the aporee recordings from the Internet Archive (the recipe; the .ogg/.wav are external, not committed).</li><li>render.sh — now also encodes vaporwave.mp3 (libmp3lame 160k).</li><li>SOURCES.md — archive.org items + CC BY-NC-SA attribution.</li></ul>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=9228&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/d7744c9c33d059e88a00d0f4849995b90b86c04f\">d7744c9</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "The earlier pipeline didn't just play synth chords — it layered field recordings from the Internet Archive (radio aporee: Tokyo Station, Tsukiji, Asakusa, a Paris market), granular-processed through syncgrain (stretched, pitched down, into the reverb), arranged as solo interludes where the band…\n\n• royal-road.csd — adds instr 3: syncgrain found-sound layer (Tokyo Station), plus an arrangement with intro/interlude/outro city solos and a haze bed under two Royal Road passes.\n\n• fetch-found-sound.sh — downloads + trims the aporee recordings from the Internet Archive (the recipe; the .ogg/.wav are external, not committed).\n\n• render.sh — now also encodes vaporwave.mp3 (libmp3lame 160k).\n\n• SOURCES.md — archive.org items + CC BY-NC-SA attribution.\n\n▶ Play it: Food Court Eternity — parked on the genre this change names https://stellate.app/?genre=vaporwave&seed=9228&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\nd7744c9 https://github.com/aboard-io/stellate/commit/d7744c9c33d059e88a00d0f4849995b90b86c04f",
   "date_published": "2026-06-06T04:42:20.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "found"
   ]
  },
  {
   "id": "4b0af4dc75ab553eed6ec853ce7d3051133ce0cc",
   "url": "https://stellate.app/?genre=vaporwave&seed=9244&path=1679.4393,1698.4426,1660.4426&xdur=13.122",
   "external_url": "https://github.com/aboard-io/stellate/commit/4b0af4dc75ab553eed6ec853ce7d3051133ce0cc",
   "title": "Add Royal Road vaporwave as a committed, reproducible capability",
   "summary": "We once rendered ten vaporwave tracks into an unversioned home dir; the renders survived but the .csd that made them was lost, then the renders themselves were deleted.",
   "content_html": "<p>We once rendered ten vaporwave tracks into an unversioned home dir; the renders survived but the .csd that made them was lost, then the renders themselves were deleted.</p>\n<ul><li>This fixes it the way the rest of the repo works: source is the artifact, renders are derived.</li><li>royal-road.csd — the capability (Fmaj7-G7-Em7-Am7, ~70 BPM, detuned saw pads, tape-wow wobble, hall reverb). Renders cleanly under csound 6.18, no clipping.</li><li>render.sh — one command back from text to sound.</li><li>.gitignore — *.wav/*.mp3 derived, never committed.</li></ul>\n<p><a href=\"https://stellate.app/?genre=vaporwave&amp;seed=9244&amp;path=1679.4393,1698.4426,1660.4426&amp;xdur=13.122\">▶ Play it: Food Court Eternity — parked on the genre this change names</a></p>\n<p><small><a href=\"https://github.com/aboard-io/stellate/commit/4b0af4dc75ab553eed6ec853ce7d3051133ce0cc\">4b0af4d</a> · <a href=\"https://stellate.app/colophon.html\">colophon</a> · <a href=\"https://github.com/aboard-io/stellate\">source</a></small></p>",
   "content_text": "We once rendered ten vaporwave tracks into an unversioned home dir; the renders survived but the .csd that made them was lost, then the renders themselves were deleted.\n\n• This fixes it the way the rest of the repo works: source is the artifact, renders are derived.\n\n• royal-road.csd — the capability (Fmaj7-G7-Em7-Am7, ~70 BPM, detuned saw pads, tape-wow wobble, hall reverb). Renders cleanly under csound 6.18, no clipping.\n\n• render.sh — one command back from text to sound.\n\n• .gitignore — *.wav/*.mp3 derived, never committed.\n\n▶ Play it: Food Court Eternity — parked on the genre this change names https://stellate.app/?genre=vaporwave&seed=9244&path=1679.4393,1698.4426,1660.4426&xdur=13.122\n\n4b0af4d https://github.com/aboard-io/stellate/commit/4b0af4dc75ab553eed6ec853ce7d3051133ce0cc",
   "date_published": "2026-06-06T04:33:10.000Z",
   "authors": [
    {
     "name": "Paul Ford",
     "url": "https://www.ftrain.com/"
    }
   ],
   "tags": [
    "vaporwave",
    "harmony"
   ]
  }
 ]
}
