Cryptograss/Horseshoe Crab

From PickiPedia: A knowledge base of bluegrass, old time psychedelic jams, and other public domain music
Jump to navigationJump to search

Horseshoe Crab is the sprint after Cryptograss/Horny Toad, which closed with the video pipeline working end to end. This one opens with the pipeline breaking on a real upload.

Days are Skyler's to number. Short points only.[unverified]

Day 1

24–26 September 2026

  • Sky's melodica upload died at encode: an overdub has two audio tracks, the encoder named one output. maybelle#133
  • Reported as "failed at IPFS". It never reached IPFS — every failure inside that button reads as a storage failure.
  • Justin's two uploads vanished entirely — no file, no diagnostics, nothing on the server. Unexplained.
  • pickipedia#127: messages name the step that failed; the browser records uploads that die on its side; the panel renders without a token, which is why Justin saw a blank page.
  • pickipedia#126: that repo had no CI, and 203 Python tests had never once been run. They pass.
  • The Immutable Travel Logs built for Sky — phone recordings newest first, each under its own content address.
  • hunter hit 89%. maybelle#134: tiered retention, cache prune, login warning. Simulated year: 282 dumps → 31, ~46 GB back.
  • The backup mirror grows forever on purpose — hunter is the long-retention copy, so no --delete.
  • Cryptograss:Video quality and storage: CRF 36 saves 24–34%, invisible in stills. Decided against it — all published video is ~2 GB; degrading masters to save half a gig is the wrong trade.
  • Corrected my own figure: "~25 GB of unused images" is really 8.2 GB once shared layers are counted.[unverified]

Day 2

27 September 2026

  • Justin: publishing only the first audio track throws away what somebody uploaded. He was right; the fix got replaced rather than defended.
  • Every track is now an HLS alternate rendition — pick your take while watching. Audio encoded once, not once per video size.
  • Found alongside it: silent videos could not publish at all. Same root cause, same PR.
  • Justin merged #133, #134 and pickipedia#127 in eight minutes and redeployed delivery-kid.
  • Melodica retried — failed again. Cause: an APAC track (Apple spatial audio); ffmpeg has no decoder and reports the codec as literally none.
  • Sky asked whether the next fix was fully thought out. It wasn't — it decided by reading metadata, and a label is a guess.
  • Replaced with a decode test: half a second of every track run through ffmpeg first. Pass, publish; fail, skip it and put ffmpeg's own words on the page. maybelle#136, merged and deployed the same evening.
  • HDR check while waiting: nothing published is affected — all five releases are plain BT.709.
  • But an HDR upload would publish as 8-bit pixels still labelled BT.2020 and PQ — looks flat, encode succeeds, nothing warns. maybelle#137 tone maps it properly.
  • Reviewed #137 against the real image: I had tested on ffmpeg 8.0.1; we deploy Debian's 7.1.5. Chain works there.
  • Corrected myself in public: HDR posters aren't missing on 7.1.5 as I'd claimed, just wrong.
  • The serious catch: as first written, a failed tone map would have turned a flat-but-published video into a failed upload — the same mistake #136 existed to fix. Now probed first, falls back to publishing.
  • Cost measured: ~2× encode time on 1080p (3.8s → 7.1s per ten seconds). No watchdog to trip.
  • Melodica still unpublished — waiting on one deploy now, not on a bug.[unverified]

Day 3

28 September 2026

  • The melodica take is published. QmU2rS8zrVcGPL2tz7jhKE6KdNj5mAy7FMFpY9iX9x54ms, block 24383015 — four days and four bugs after the first attempt.
  • Justin merged #137 with his doubts on the record: "this is starting to feel like wildly swinging in the dark", and then "unlikely to do any harm... famous last words?"
  • Answered with evidence rather than argument. Swept all 47 release drafts: IMG_8225 appears twice, once H.264 and once H.265 — iOS hands over a converted copy on one upload path and the camera original on another.
  • Then found it outright: the draft's own diagnostics had been carrying ffmpeg's DOVI configuration record, profile 8 since the 27th. Dolby Vision, read off the file, not inferred from a camera default.
  • Deployed 22:09. Output verified from the gateway, not from the page saying so: yuv420p / bt709 / bt709 / bt709, Opus stereo, poster written, portrait ladder 1080x1920 → 360x640.
  • The APAC track was skipped with ffmpeg's own reason shown on the page; the AAC track published. Justin's principle, working in production.
  • I predicted the wrong transfer. I told everyone to expect PQ; the log says ARIB-STD-B67 — HLG. Profile 8.4 carries an HLG base layer. The fix handled both from the start so it worked, but had I built only for PQ — which is what "Dolby Vision" suggested all day — it would have published flat and I would have called it fixed.
  • First test ever of multi-channel audio. Mono, 5.1, and 5.1 beside a second track all publish — but 5.1 was getting the stereo bitrate, about 21k a channel. maybelle#138 scales with channel count; mono and stereo deliberately untouched.
  • Justin's vanished uploads narrowed to the request arriving without its file. Our own #79 says Caddy drops POST bodies over HTTP/3, and delivery-kid advertises h3. #139 puts four questions to Justin that would settle it.
  • Filed #139 with an empty body — wrong flag, --body does not read a pipe. Sky caught it.[unverified]

Day 4

30 September 2026

  • Confirmed delivery-kid healthy on df4fdbc. Could not say whether the token wall was a usage cap or an expired credential — I cannot see account usage, so I said so rather than guessing.
  • Explained the quality selector's Auto: it sets hls.currentLevel = -1, handing the choice back to hls.js, which picks from the real BANDWIDTH figures we compute from segment bytes. Switches land on segment boundaries, which is why choosing a rung mid-tune does not restart playback.
  • Sky asked how important the orphan pins were. Read the audit rather than answering from memory, and found three bugs, all the same shape — a guess allowed to recommend destroying evidence.
  • Subpages counted as drafts. The nine /diagnostics pages were reported twice over: once as "dead wiki drafts, safe to delete from wiki" and again as "9 unrecorded publishes". Three belonged to drafts that had published that week, including the melodica take.
  • A failed lookup read as a verdict. Whether a draft finalized was decided inside a bare except: pass that fell through to "never finalized", so one wiki hiccup could recommend deleting a published release.
  • Case-sensitive matching on pinned to IPFS — the same failure with a longer fuse.
  • Fixed the nested links the audit had been writing on these very pages, which render as visible brackets and resolve to nothing.
  • Then measured the orphans before deciding anything — per-pin sizes and a total, largest first, read with ipfs dag stat in one ssh rather than one per CID.
  • maybelle#145, merged 20:37 the same night, carrying the first tests these scripts have ever had.
  • Measuring first is what paid off two days later: the eleven orphan pins turned out to be 5 KB in total, all metadata-only Coconut failures. The old report could never have told us that.[unverified]

Day 5

2–3 October 2026

  • maybelle#88 merged after four months — caps BuildKit cache at 3 GB per build, written after delivery-kid's cache reached 28 GB and took the host to 100% disk. Checked whether it would kill the next deploy: it uses --keep-storage, which modern Docker deprecates but still accepts, and both hosts install docker.io from the distro. Safe.
  • The 11 orphan pins are 5 KB in total. Every one is a metadata-only Coconut failure — method: coconut, no qualities, no variants, zero output bytes, 485 bytes of paperwork and no video. Nothing to reclaim, and the only surviving record those uploads happened.
  • One of them still carries its title: "learning terrapin outside Denver venue", uploaded by Justin on 1 June. It matches a draft with no codec ever recorded.
  • maybelle#152 reports them as history rather than as ⚠ Action required — five kilobytes of known-dead paperwork beside a real fault is how nine false alarms sat unexamined for weeks.
  • CI had never run the audit's tests. The workflow only watched delivery-kid/pinning-service — the same blind spot its own opening comment was written about. Added a job; both pass.
  • Three more features out of MediaWiki:Common.js and into the extension: the Blue Railroad date→block picker, "X blocks ago", and the instrument form validation. pickipedia#131. Every code line compared against live in both directions — byte-identical.
  • Corrected myself mid-commit: I had written that running from both places was harmless. It is not — two copies of the datepicker render two pickers with duplicate element ids. Added a DOM guard, and said plainly that the instrument form will double-alert between deploy and paste.
  • Did not move the zine styling, though that was the plan. It is bound to classes defined in MediaWiki:Common.css; moving its script alone would split one feature across two homes. It goes with its stylesheet, and then Common.js can be empty for good.
  • maybelle#86 triaged with its reasoning posted rather than closed quietly: its feature shipped via #130, its client module is five months behind production, and resolving its conflict would recreate the coconut.py deleted in #129 — which is why git cannot merge it.
  • Swept the open backlog for what would break on merge. The risk is concentrated: #69, #74 and #75 all restore Coconut files. Nothing breaks on its own.
  • Confirmed Sky cannot paste into Common.js — editsitejs needs interface-admin, which only Justin holds. Argued against granting it for this: there is one paste left, and the point of #131 is to make it the last.
  • The St. Pete venue table had been broken for everyone. It queried St. Pete — one result — while the typed Has scene has 24. Template:Venue moved to typed properties and the Scene page never followed. Fixed; The Blueberry Patch and Suite E now appear with the rest.
  • Broke that table worse for a minute by adding a capacity sort: SMW omits results with no value for the sort property, so it hid every venue without a recorded capacity. Removed.
  • Learned what status=proposed actually is — the verification marker for templates like Venue, not a display field. I had guessed wrong about it the day before.[unverified]

Still open

  • Justin: merge four and run one --rebuild deploy — pickipedia#126 (CI) first, then pickipedia#131 (Common.js), maybelle#138 (surround bitrate), maybelle#152 (audit). All four MERGEABLE/CLEAN as of 4 October.
  • Deploy before pasting into Common.js, never the reverse. Between deploy and paste the instrument form double-alerts; the datepicker is guarded.
  • Justin: answer the four questions in #139 — the last unexplained failure in the pipeline. Best guess is Caddy dropping POST bodies over HTTP/3, which is our own #79 from April.
  • Justin: close the dead PRs in #132. #69, #74 and #75 would restore the deleted Coconut code; #86 now carries its own reasoning for closing.
  • Justin: cancel Coconut and drop the key from the vault — the only thing still costing money.
  • Justin: redirect or delete Fibbonacci Holmes.
  • Next slice of the Common.js work: move the zine styling with its stylesheet, after which Common.js is empty and nobody pastes into it again.
  • Never tested: Opus audio on Safari — applies to everything ever published, not just surround.
  • Answered and closed out: the orphan pins (5 KB of Coconut tombstones, kept deliberately), and the phantom orphan-draft cleanup task promised by delivery-kid's startup docstring but absent from the code — still worth deleting the comment.
  • Shelf: pickipedia#102 and #101 (unverified security claims), yt-dlp publishing (pickipedia#84).[unverified]

  • Day 6

    8 October 2026

    • pickipedia#126 (CI) and #133 (feed escaping) merged. The wiki repo is now tested on every push, green from the first run.
    • I predicted #126 would turn CI red. Wrong: it already excluded the broken tests, with a comment I'd written and forgotten.
    • pickipedia#131 merged: three features out of MediaWiki:Common.js. Drift re-checked first; Common.js unchanged since 15 September. Paste page: User:Magent/Common.js after 131 (copy raw).
    • Surround: Justin asked whether 360p even wants 5.1. It doesn't. maybelle#138 now downmixes to stereo below 720p; 1080p, 720p and audio-only keep every channel. Merged, deployed.
    • Learned on the way: the source file is not kept by default. "Keep original file" has never been used; there is no originals/ directory.
    • maybelle#152 merged a minute before my kept-originals commit landed on it. That work became maybelle#170, which also sizes every staging directory. Merged, deployed.
    • The eleven Coconut tombstones listed before anything is unpinned: Cryptograss:Delivery-kid/Coconut remnants. 5 KB in total, no media.
    • Justin ran three read-only commands on delivery-kid. 4.2 GB in drafts: thirteen uploads that never finalized.
    • Matched by exact file size, not title: Station Inn and Seven Bridges Road were already republished. Nine were never published, including terrapin, still on disk.
    • No re-upload needed: finalize from the draft page.
    • First attempts died when the tabs closed. A finalize lives only as long as its tab.
    • "There's only one way to find out" published.
    • Sonic Offerings pinned (QmW14popPbxcgj39UQ5XPPb3yKbjPgRUV3FeXk85fSqzJ6), but the browser never wrote the pin back, so no Release page yet.
    • Each Mood got a to-do list: Cryptograss:Moods/uploads-and-embeds/todo. My YAML broke it once (an unquoted colon); fixed.
    • The wiki hadn't deployed since 5 October. My own #134 (the to-do tag) failed Jenkins' class check, which read Lua only. Every build since stopped silently. pickipedia#135 fixed it, and GitHub CI now runs the same gate.
    • Deployed 01:22: #131, #133 and #134 live together. Every page returned 500 for about a minute mid-rsync.

    Day 7

    9 October 2026

    • New Mood, #gospels-and-project-30m: putting sacred metadata on chain, from the gospels to Grateful Dead setlists. The idea is "attested and anchored", not "verified true".
    • To-do lists tick themselves. GitHub tells magenta when a pull request merges; magenta marks it done in the Mood and on the wiki. memory-lane#132, #138, #140.
    • It stayed silent until memory-lane and magenta moved into the cryptograss org. Then the first ticks came within seconds. maybelle#174
    • Each to-do item has its own link, and code in one shows as code. pickipedia#136
    • Caddy's apt repository started returning 402 for everyone and broke the wiki deploy. Caddy now installs from its GitHub release, checksummed. maybelle#172
    • The podcast importer was putting spaces before punctuation ("East Nash Grass .") and losing real words off the end of descriptions. My diagnosis five days earlier had blamed the feed. Wrong: it was us. Fixed, with the importer's first tests.
    • terrapin is published: the video that failed six times under Coconut in June. Sky finalized it.
    • Sonic Offerings got its Release page (393 MB) once its missing CID was written back to the draft.
    • Sky finalized five more: White Rabbit Intro, the Bundy announcement, Spotify Wrapped, Nine Pound Hammer (Pushups) and the barber pole.
    • I said the MOOS hallway water jam needed rescuing. It was already live.
    • Justin pasted the trimmed MediaWiki:Common.js: 24 KB down to 6.7 KB.
    • Finalize runs on the server now: one encode at a time, and closing the tab no longer kills it. maybelle#175
    • My slip: #175 also committed 35 Python bytecode files. maybelle#176
    • Release videos play in Moods. 26 of the first 40 couldn't, including Kenny's Water Tower. memory-lane#145
    • "Audio only" on the wiki was quietly playing 1080p, and hls.js was loading @latest. pickipedia#137
    • Release pages drew no player for uploads typed plain "video" (Nine Pound Hammer). pickipedia#139
    • Opus on Safari: closed. Sky heard the water jam with sound.
    • Anyone can send a picture to PickiPedia from a Mood, credited to them under a CC licence. memory-lane#137
    • Every new release shows in #general with its player, and PickiPedia links preview on hover. memory-lane#147, #148
    • Anyone signed in with an SSH key, Sky included, wakes magent with full tools. memory-lane#144
    • Messages show the moment they're sent, and the narrator says "pound <mood>" first. memory-lane#136, #141

    Day 8

    10 October 2026

    • Zine pages arrive styled, with no unstyled flash and dark mode remembered. Before-and-after screenshots are on the wiki. pickipedia#140
    • The rest of Common.css moved into the repo, so both Common pages can be blank. pickipedia#142
    • A floated video squeezed a heading to one letter per line. pickipedia#141
    • Justin caught me saying I had no browser or PHP without trying. I installed both.
    • I withdrew my "duplicate Nine Pound Hammer" claim: they're two different videos.
    • Yarn clips are kept by magenta after Yarn started showing Cloudflare checks. memory-lane#152
    • Videos go from a Mood straight to delivery-kid, with a progress bar and a ReleaseDraft page written as the sender. memory-lane#153
    • Only signed-in people can use it, never bots, and it gets an upload-only key whose tokens last one day. maybelle#178
    • Security hole found and closed: delivery-kid's pin and unpin accepted the upload token that every signed-in wiki page carries. maybelle#179
    • Sky's first video from a Mood is published: SILVER SUMMER EURO TOUR 2024.
    • "Abandon — delete files" never deleted anything. pickipedia#143 Still open: maybelle#180, which stops a delete while a finalize is running.
    • Ten stale PRs closed, each with its reason. Paseo, yt-dlp and the EPK form stay open.
    • iPhone photos (HEIC) attach in a Mood, converted to JPEG with location stripped. memory-lane#158
    • Secrets rotated after the redaction: the wiki's database password, the delivery-kid key, the wiki's secret key and the Blue Railroad bot password.
    • The wiki was down 31 minutes (18:17–18:48Z) from two deploy bugs:
      • It wrote the new secrets after the step that needed them. maybelle#181
      • PHP double quotes mangled a $ in the new password. maybelle#182
    • "Sign in with PickiPedia" broke afterwards, because OAuth borrowed the rotated key. It has its own now. maybelle#184
    • The bass photo is on PickiPedia: File:Cryptograss' new bass.jpg, credited to Sky.
    • cron-health hadn't run a single check since 4 September because of one escaping mistake. maybelle#183
    • On its first full run, the nightly podcast import was holding 240 changes against its limit of 50. Handed to #pickipedia-and-rabbithole.
    • "Thinking" stayed lit after /compact, and a finished helper showed as running for 55 minutes. memory-lane#157, #160
    • Paper ticket stubs were sold for Porcupine 2025 and the Bundy show, but no claim contract was ever deployed. blox-office#11