R-0 and C-0, the two moves the release board put ahead of everything else. R-0. The CosmicFest master existed in exactly one place: ~/Downloads. It is now in Prod/Cosmic26_master/ and mirrored to the freebox, sha256 7a197589…d671b identical on both, and the Downloads original was removed only after both copies were verified — a move, not a hopeful mv. feedback_freebox_ssot names the freebox as the SSOT for audio, and an irreplaceable 63-minute gig in a scratch directory was the cheapest large risk on the board. The spec records the naming trap that nearly cost an hour: Prod/cosmicfest/ and Prod/cosmicfestv0.live1.* are the 2025 edition, files dated 2025-06-27/28, and nothing in them belongs to this release. C-0. POSTPROD.md's rule is that a new gig is a copy of judge_specs/<gig>.json and never a copy of a script — so the question was whether a gig with NO stems can use the pipeline at all. Answered by reading the code, not by trying it and hoping: apply_boundaries and render_release touch no stem key whatsoever, only segments/master/variants/releaseRoot/releaseTag. The single tool that genuinely needs stems is build_judge_set, which derives nominal segments from per-orbit activity. That is the one hole, and setlist_to_segments.py fills it. The converter turns judge_specs/<gig>_setlist_ear.json into the two inputs apply_boundaries wants, and its real job is keeping two grades of truth apart. The setlist silently mixes them: some starts are playhead calls PLN made while listening, others were reconstructed from his notes on boundaries he SKIPPED. Only the former go into `verified`, so apply_boundaries prints ear or nominal per row and asserts every playhead call reached the output. An inferred edge can therefore never be mistaken later for one he actually heard. That distinction immediately corrected the board. It had named #10 and #12 as the soft edges, taken from the recovered tracklist's unresolved list. The setlist ear file supersedes that: ten starts (#2-#11) are playhead calls, #1 is the origin, and the inferred ones are #12 LiveCode Parade, #13 Vague de CRIME and #14 Outro: La Dub Sirène. #10 PunkAChien was ear-called all along — "perfect cut at 48:27.4 into PunkAChien!". Three tracks to audition, not two, and a different three. The board also claimed 11 decided boundaries; there are 10. Titles resolve authored -> OPAL-release -> catalog -> NEEDS_PLN, and never by title-casing a slug. The authoritative source for a shared track is what actually SHIPPED: OPAL-26's ear-signed segments_v4.json joined to that gig's tracks.json on performance order, since neither file alone holds both the score path and the released title. Four tracks were in no shipped release and no catalog entry, so the first run emitted them as NEEDS_PLN rather than inventing anything; PLN then gave all four, and they live in judge_specs/cosmicfest-2026_titles.json with value+source+locator+date per feedback_metadata_provenance. The same file carries a `score` alias, because the gig slug "mafia" is mafia_sans_serif.tidal — and that alias then cross-checked itself, yielding a declared 160 BPM that matches OPAL's Mafia exactly. Outro: La Dub Sirène has no .tidal at all, being a played outro rather than a composed track, which is also why the catalog can never hold its title: the catalog is keyed by score path. `album` is deliberately absent from the spec. CosmicFest 2026 has no page under content/lives/2026/, so there is no canonical set title to copy, and inventing one would be exactly what feedback_metadata_vs_mastering forbids. The source measures better than "raw stage mic with FOH effects" suggests: I = -25.2 LUFS, true peak -5.1 dBFS, LRA 11.1 LU over the full 62:59. Not clipped, not crushed, just quiet — reaching -14 LUFS needs about +11 dB and therefore limiting, but that is a gain problem rather than a repair job. Recorded in the spec's sourceProvenance so the next pass starts from the number. apply_boundaries output: 14 tracks, 63.0 min kept of a 63.0 min master, zero gaps, all assertions green. variants still point at mastered files that do not exist; the mix is the next step and render_release will say MISSING until it runs.
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| _corpus_cache | Loading commit data... | |
| judge_specs | Loading commit data... | |
| punkachien | Loading commit data... | |
| sources | Loading commit data... | |
| tests | Loading commit data... | |
| .gitignore | Loading commit data... | |
| POSTPROD.md | Loading commit data... | |
| README.md | Loading commit data... | |
| apply_boundaries.py | Loading commit data... | |
| ardour_stem_export.py | Loading commit data... | |
| audio_lens.py | Loading commit data... | |
| backlog_setlists.json | Loading commit data... | |
| backlog_setlists.py | Loading commit data... | |
| boundaries_take89_validated.json | Loading commit data... | |
| boundary_bleed.py | Loading commit data... | |
| boundary_bleed_take89.json | Loading commit data... | |
| build_bounds_set.py | Loading commit data... | |
| build_catalog.py | Loading commit data... | |
| build_catalog_view.py | Loading commit data... | |
| build_corpus.py | Loading commit data... | |
| build_eda.py | Loading commit data... | |
| build_finder_eval.py | Loading commit data... | |
| build_judge_set.py | Loading commit data... | |
| build_landing.py | Loading commit data... | |
| build_presence.py | Loading commit data... | |
| build_provenance.py | Loading commit data... | |
| build_release_joins.py | Loading commit data... | |
| build_release_plan.py | Loading commit data... | |
| build_tierlist.py | Loading commit data... | |
| build_track_recording_map.py | Loading commit data... | |
| build_triage_ui.py | Loading commit data... | |
| build_unwrapped.py | Loading commit data... | |
| calibration.json | Loading commit data... | |
| calibration.whole-mix.json | Loading commit data... | |
| catalog.authored.yaml | Loading commit data... | |
| catalog.generated.json | Loading commit data... | |
| catalog.yaml | Loading commit data... | |
| catalog_view.json | Loading commit data... | |
| corpus-viz-plan.md | Loading commit data... | |
| corpus.html | Loading commit data... | |
| cosmicfest26_fused.json | Loading commit data... | |
| cosmicfest26_recovered_tracklist.md | Loading commit data... | |
| cosmicfest26_three_lens.json | Loading commit data... | |
| cut_candidates_v3run2.json | Loading commit data... | |
| cut_lens.py | Loading commit data... | |
| cut_lens2.py | Loading commit data... | |
| cut_lens3.py | Loading commit data... | |
| eda-grounding-plan.md | Loading commit data... | |
| eda_Take14.json | Loading commit data... | |
| eda_Take15.json | Loading commit data... | |
| eda_Take16.json | Loading commit data... | |
| eda_Take17.json | Loading commit data... | |
| eda_Take18.json | Loading commit data... | |
| eda_Take19.json | Loading commit data... | |
| eda_Take20.json | Loading commit data... | |
| eda_Take21.json | Loading commit data... | |
| eda_Take22.json | Loading commit data... | |
| eda_Take24.json | Loading commit data... | |
| eda_Take28.json | Loading commit data... | |
| eda_Take29.json | Loading commit data... | |
| eda_Take3.json | Loading commit data... | |
| eda_Take30.json | Loading commit data... | |
| eda_Take32.json | Loading commit data... | |
| eda_Take33.json | Loading commit data... | |
| eda_Take34.json | Loading commit data... | |
| eda_Take35.json | Loading commit data... | |
| eda_Take36.json | Loading commit data... | |
| eda_Take37.json | Loading commit data... | |
| eda_Take38.json | Loading commit data... | |
| eda_Take39.json | Loading commit data... | |
| eda_Take4.json | Loading commit data... | |
| eda_Take40.json | Loading commit data... | |
| eda_Take42.json | Loading commit data... | |
| eda_Take45.json | Loading commit data... | |
| eda_Take49.json | Loading commit data... | |
| eda_Take5.json | Loading commit data... | |
| eda_Take53.json | Loading commit data... | |
| eda_Take54.json | Loading commit data... | |
| eda_Take55.json | Loading commit data... | |
| eda_Take58.json | Loading commit data... | |
| eda_Take59.json | Loading commit data... | |
| eda_Take61.json | Loading commit data... | |
| eda_Take62.json | Loading commit data... | |
| eda_Take63.json | Loading commit data... | |
| eda_Take64.json | Loading commit data... | |
| eda_Take65.json | Loading commit data... | |
| eda_Take66.json | Loading commit data... | |
| eda_Take67.json | Loading commit data... | |
| eda_Take68.json | Loading commit data... | |
| eda_Take70.json | Loading commit data... | |
| eda_Take71.json | Loading commit data... | |
| eda_Take72.json | Loading commit data... | |
| eda_Take73.json | Loading commit data... | |
| eda_Take74.json | Loading commit data... | |
| eda_Take75.json | Loading commit data... | |
| eda_Take76.json | Loading commit data... | |
| eda_Take77.json | Loading commit data... | |
| eda_Take79.json | Loading commit data... | |
| eda_Take8.json | Loading commit data... | |
| eda_Take80.json | Loading commit data... | |
| eda_Take82.json | Loading commit data... | |
| eda_Take83.json | Loading commit data... | |
| eda_Take84.json | Loading commit data... | |
| eda_Take85.json | Loading commit data... | |
| eda_Take86.json | Loading commit data... | |
| eda_Take87.json | Loading commit data... | |
| eda_Take88.json | Loading commit data... | |
| eda_Take89.json | Loading commit data... | |
| eda_Take90.json | Loading commit data... | |
| eda_report.json | Loading commit data... | |
| eda_status.json | Loading commit data... | |
| edl_render.py | Loading commit data... | |
| emotion_calibrate.py | Loading commit data... | |
| emotion_corpus.py | Loading commit data... | |
| emotion_corpus_gt.json | Loading commit data... | |
| emotion_corpus_merge.py | Loading commit data... | |
| emotion_drift.json | Loading commit data... | |
| emotion_drift.py | Loading commit data... | |
| emotion_ontology.py | Loading commit data... | |
| emotion_ontology_critique.json | Loading commit data... | |
| emotion_overnight.py | Loading commit data... | |
| emotion_timeline.py | Loading commit data... | |
| feature_eda.json | Loading commit data... | |
| feature_eda.py | Loading commit data... | |
| finder_eval.json | Loading commit data... | |
| finder_eval_chops.json | Loading commit data... | |
| foundry_stems.py | Loading commit data... | |
| gap-report.md | Loading commit data... | |
| index.html | Loading commit data... | |
| landing.json | Loading commit data... | |
| lcxl3_custom_mode_v2map.md | Loading commit data... | |
| lcxl3_sniff.txt | Loading commit data... | |
| locate-matrix.md | Loading commit data... | |
| make_bounds.py | Loading commit data... | |
| master_align.json | Loading commit data... | |
| master_edl_take89.json | Loading commit data... | |
| models.py | Loading commit data... | |
| pattern_ngrams.py | Loading commit data... | |
| pattern_registry.json | Loading commit data... | |
| performance_notes.md | Loading commit data... | |
| presence.authored.yaml | Loading commit data... | |
| presence.json | Loading commit data... | |
| probe_upload_dom.py | Loading commit data... | |
| probe_upload_form.py | Loading commit data... | |
| probe_upload_legacy.py | Loading commit data... | |
| probe_upload_privacy.py | Loading commit data... | |
| probe_upload_sharing.py | Loading commit data... | |
| probe_upload_ui.py | Loading commit data... | |
| probe_upload_watch.py | Loading commit data... | |
| provenance.json | Loading commit data... | |
| register_fred_rights.py | Loading commit data... | |
| release_candidates.json | Loading commit data... | |
| release_priority.md | Loading commit data... | |
| render_release.py | Loading commit data... | |
| render_release_videos.py | Loading commit data... | |
| resplit_montreuil.py | Loading commit data... | |
| rights_audit.py | Loading commit data... | |
| rights_ledger.json | Loading commit data... | |
| sample_classify.py | Loading commit data... | |
| sample_families.json | Loading commit data... | |
| sample_features.json | Loading commit data... | |
| sample_features.py | Loading commit data... | |
| sample_meta.py | Loading commit data... | |
| sample_ontology.py | Loading commit data... | |
| sample_packs.json | Loading commit data... | |
| sample_packs.py | Loading commit data... | |
| sample_panns.py | Loading commit data... | |
| sample_resolve.py | Loading commit data... | |
| sample_semantics.py | Loading commit data... | |
| sample_tfidf.json | Loading commit data... | |
| seed_edl_take89.py | Loading commit data... | |
| semantics_embeds.npz | Loading commit data... | |
| set_crossmatch.json | Loading commit data... | |
| set_finder.py | Loading commit data... | |
| set_finder_locate.json | Loading commit data... | |
| setlist_to_segments.py | Loading commit data... | |
| slop_bakeoff.py | Loading commit data... | |
| stemmap_opal26.json | Loading commit data... | |
| take-compare.html | Loading commit data... | |
| take_gig_map.md | Loading commit data... | |
| tidal_score.py | Loading commit data... | |
| tide.py | Loading commit data... | |
| tide_eda.py | Loading commit data... | |
| tierlist.html | Loading commit data... | |
| tierlist.json | Loading commit data... | |
| tokens.json | Loading commit data... | |
| track_recording_map.json | Loading commit data... | |
| triage.csv | Loading commit data... | |
| triage.html | Loading commit data... | |
| triangle.html | Loading commit data... | |
| unwrapped.html | Loading commit data... | |
| unwrapped.json | Loading commit data... |