-
feat(armada): draft a gig's tracks.json — derive what is derivable, refuse to guess the rest · 6ae2b820
build_release_plan.py refuses to emit anything without the canonical www gig page, with the right message: "Gig metadata is never invented here — create it there first." Every upload adapter reads that plan, so one missing file blocks SoundCloud, YouTube and Bandcamp at once. CosmicFest 2026 has no page, which makes that gate the single thing standing between a finished master and PLN hearing it on the platform he asked to hear it on. The gate is correct and this does not weaken it. It splits the file along the line the gate cares about instead of blurring it: derivable name, file, bpm, start/end/duration, style, samples PLN only the gig's title, venue, stage, description, and each track's `section` (the movements of the set) Everything in the second group is emitted as null with a `_needs_pln` list, never as a plausible guess. The output is a DRAFT at whatever path you pass; promoting it into the www repo stays PLN's call. So tomorrow is four fields and a review rather than an afternoon of reconstruction. Derivations reuse what already parses the corpus rather than re-reading it: `style` comes from the score's own directory, which is how OPAL's published styles line up with the tree, and `samples` comes from catalog_view.json's `score_sounds`. A score absent from that view is REPORTED, not handed an empty list — an empty sample list is invisible once it is on the shelf, which is the whole lesson of feedback_parsers_over_copy. Seven of CosmicFest's fourteen are currently absent because the view is stale; re-running build_catalog_view fills them. The derived timecodes then validated themselves against PLN's own ear notes, which is the reassuring part. Piment Bresilien lands at 0:35:46 against his playhead comment "starting at 35:45.6 i hear proper only piment start sound", and LiveCode Parade at 0:54:58 against the 54:59 note where crossmatch had guessed gimme_acid and the declared 130 BPM broke the tie. 14 tracks, 63.0 min, 30 sample packs, 89-170 BPM.PLN (Algolia) authored6ae2b820
×