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]