Cryptograss/Jellyfish
Jellyfish is the sprint after Cryptograss/Horseshoe Crab, which closed with the video pipeline working end to end and the Rabbithole player rebuilt but undeployed. This one opens on the Rabbithole player and on finding out how many copies of it there are.
Days are Skyler's to number. Short points only.[unverified]
Day 1
17–18 October 2026
The goal Sky set for the stretch: get Rabbithole working and playing live on PickiPedia, with a few songs having part cards and the highlights looking clean. The audience is IBMA, and Justin's read is that nobody there sits through a whole song — so one track that lights up beats eleven that play in silence.
The player, with Sky calling each move
- The bottom bar built out: a parts strip along the bottom reading left to right like Strum Machine, taller and blockier blocks, the bar raised to 152px so the player sits flush with the cards, a bigger carrot beside the rabbit, the artist-page switch moved over its caption rather than across it, the song title to the top, and an album row carrying the cover and the real eleven-track selector.
- I made the active part block invisible for an hour — white on white, from adding a background at higher specificity than the rule that colours the active block. Sky spotted it as "the cards don't change with the song." Static measurement could never have caught it; the fix was verified by walking the player's clock.
- The spotlight no longer blacks out the page. Sky: "takes over the whole page for way too long." Others dim instead, and both spotlight and flourish are capped at four seconds. Justin likes the blackout, so it should come back as an option rather than a default.
- The iframe is gone, after Justin caught that we had drifted back to it. The pane now fetches the wiki same-origin into a shadow root and pushes real article paths. Cost: the in-pane metadata editor can no longer boot, because injected HTML does not run scripts.
The wiki side
- All eleven 4masks song pages written, with Justin as composer on nine, Drowsy Maggie traditional, and Victory the Final Fantasy IV fanfare.
- Template:Listen in Rabbithole on all eleven pages — a route from a song page into the player, which did not exist before. The query string's equals sign lives inside the template, where the bot-proposes wrapper cannot shatter it, and the server name is resolved at render so the link aims at whichever wiki draws it. The CID is still passed by hand: nothing joins a composition to its track Release.
- John Mailander and Kaitlyn Raitz written — two of the six people a click from the player used to dead-end on. Four left: David Grier, Ice Quilitz, Jeff Fehlauer, Luna Lavender.
- Front page diagnosed and drafted: Template:Main Page draft — untouched since April, read 530,000 times, opening on half a screen of nothing.
- Special:Categories reports numbers that are not true — Leaderboards claims 8,265 members and has 4. The denormalised counter, not the content.
My own errors, for the record
- An hour lost to my own asterisks riding into URLs posted in a Mood. Every link I sent Sky resolved to a page name with the asterisks still attached, and I proposed five wrong causes — including his network and his phone — before reading his own paste properly.
- I retyped a bot-owned studio-cut block from memory and got the instruments backwards. Restored from the extracted page text one revision later. Post from the file, never from memory.
What the tidy-up turned up, mostly by Justin asking
- Production serves a Rabbithole shell dated 1 May 2026 — the old 320px left sidebar, still the iframe. Twenty-two commits sit in rabbithole#2, and merging is not deploying: that ansible role has no cron and no webhook. This is why the listen links opened something that looked nothing like what we had been building.
- Three shells, not one. The repo holds index.html, shell.html and pickipedia-demo.html. Caddy's route for the nice URLs falls back to shell.html, so the song path under rabbithole already returns 200 — serving April's sidebar. Two days of work went into the file the URL route does not point at.
- Nice URLs are already plumbed. That fallback shipped on 30 April. No infrastructure is needed, only deciding which file is the product.
- Justin's feature-scene commit is half-wired. On 15 September 2025 he made several musicians featurable at once, with scenes lead, pickup, cooldown, harmony and rhythm. Our player kept the half that reorders the cards and lost the half that styles them, so three of those scenes are live data paths with no CSS. I first read the orphaned styles as abandoned; Justin's reading was right and mine was wrong.
- The rabbit and follow-a-musician work, in halves. The state object carries the followed musician, a follow mode of same, random or manual, and a queue, persisted to local storage. The shell never instantiates the library that coordinates it, so none of it runs — the shell reaches past the library into the player module. That is the same shape as the two findings above, three times over.
- arthel has no code we want. Its copy of the player is thirteen months behind. Its four song rabbithole blocks are the four demo songs, each with a placeholder duration of 180, so their timelines cannot be lifted onto the real recordings.
- The pushed article URLs are lossy. MediaWiki owns the article path, so reloading one drops the player. Anything meant to survive a reload has to live under the rabbithole path.
- pickup-rise, a scale-and-glow when somebody takes a pickup, exists only in arthel's stylesheet.
Decided
- Justin on the pace: if we are moving fast enough to miss things this big, we are moving too fast. Get it right.
- Justin's standing asks: no inline CSS or JavaScript, no iframe, nice URLs, organised repos, tests, and a legible route from PickiPedia metadata to what the player shows.
- URL shape, as reasoned through: the song belongs in the path, the article being read belongs in the query so that wandering does not rewrite a shared link, and the thread's seed belongs in the query while its position stays in local storage. Title in the path, resolved to a CID at load, with the CID form kept working forever as the permalink.
- Timelines by hand. Justin's call: edit them with the player's Edit Timeline button rather than build a tool, since the button already is one. Two of twenty-one tracks have one.
Tooling
- Cryptograss/Horseshoe Crab could not be edited by the bot at all. A verified template sits directly under its second line; the middleware merged the two into one line, and because the join looked verified it was sent verbatim instead of being restored, so the wiki's gate saw a line the page never held with no marker on it and refused every edit. Fixed with tests in pickipedia-mcp#33. My first diagnosis blamed blank-line handling and was wrong; I wrote a patch for it and found the patch redundant, which is how I found the real cause.[unverified]