-
fix(bounds): a skipped seam carried PLN's best information, and the exporter threw it away · 7b74d8b3
PLN: "wait you dont get the notes when i skip? DANG they have lots of info." The exporter emitted skipped boundaries as bare integers: skipped: Object.entries(calls).filter(([, c]) => c.t === null).map(([k]) => Number(k)) so eight CosmicFest seams exported as `[2,4,9,10,15,16,17,18]` while the notes he had typed into every one of them vanished. And a skip is not an absence of judgement — it is usually a judgement that the SEAM is wrong, which is more informative than confirming a cut time. What was lost included "theres no blue_gold in this set, we're hearing do_it_right throughout", "there was no gimme_acid in this performance", "theres no funk->piment transition! in this set i playd piment once, then funk", and "it could be called Outro Dub Siren". The notes were never actually gone: the textarea writes `{t: t ?? null, comment}`, so a skipped call keeps its comment in state and in localStorage. Emitting `skipped` as {id: {source, note}} therefore recovers notes ALREADY STORED, not only future ones — PLN re-exports and gets them back verbatim. Verified the built bundle carries it, after first mis-verifying: `grep -c` counts LINES and a minified bundle is one line, so the honest count is 2 occurrences, not 1. With his corrections the true set is 14 tracks, written to judge_specs/cosmicfest-2026_setlist_ear.json as ground truth. Scored against it, the three-lens pipeline named 12 of 14 tracks correctly and labelled 81% of the 63 minutes, 85% of the labelled overlap correct. bombe_dj, rose_rouge, ouais_je_funk, punkachien and livecode_parade landed at 100%. The two failures are the same failure. `perfect` was called gimme_acid and the improvised outro was called REVOLUTION, and both are reference-bound: crossmatch can only choose among tracks it holds a prior render of, so audio from a track it has never heard gets assigned to the nearest thing it has. All five "ghosts" — blue_gold, desire, gimme_acid, quand_on_decolle, REVOLUTION — are that same mechanism. It is a structural limit, and the fix is one render per track, not a better threshold. Also banks his ear-feedback in performance_notes.md, including two things no analysis could have produced: a loud blip in the 2.9 s between two tracks (a defect belonging to NEITHER, which the boundary tool currently has no way to express), and why desire was dropped — "Clearly didnt play desire i was not found of that closing at opal".PLN (Algolia) authored7b74d8b3
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| assets | Loading commit data... | |
| bounds | Loading commit data... | |
| components | Loading commit data... | |
| judge | Loading commit data... | |
| kits | Loading commit data... | |
| lib | Loading commit data... | |
| sextant | Loading commit data... | |
| App.tsx | Loading commit data... | |
| bounds.tsx | Loading commit data... | |
| fonts.d.ts | Loading commit data... | |
| index.css | Loading commit data... | |
| judge.tsx | Loading commit data... | |
| kits.tsx | Loading commit data... | |
| main.tsx | Loading commit data... | |
| sextant.tsx | Loading commit data... | |
| tokens.css | Loading commit data... | |
| tokens.json | Loading commit data... | |
| types.gen.ts | Loading commit data... | |
| types.ts | Loading commit data... |