fix(preload): warm what gets played, computed from the gig records
The preload warmed a setlist FILE, and the only one was armada/setlist_opal2026 .txt -- the 16 tracks of one August gig. So the plan was fresh, correct, and aimed at the wrong set. Measured: driving rose_rouge logged 41 'reading soundfile as needed' lines in 180s, every one of them the rose bank, while ZERO of the 60 warmed banks lazy-loaded. That is check-preload.sh's documented failure one level up. There the plan was stale because two tools disagreed about the setlist; here the plan matches its setlist exactly and the SETLIST has drifted from what gets played -- which no plan-vs-setlist freshness check can see, because the two agree. gen_setlist.py computes the list instead of maintaining one, from the canonical records in authority order: <www>/content/lives/<year>/<slug>/tracks.json, which carries both a date and each track's exact repo-relative file; then armada/tide-table/judge_specs/*_setlist_ear.json for gigs whose tracks.json is not built yet -- where the cosmicfest set lives, 'THE ground truth, 14 tracks', with rose_rouge at #5. Ear lists carry no gig date, so they are included and flagged rather than dated by guesswork. 60 banks -> 111, 16 tracks -> 39. 51 banks were one first-play from a disk read. rose is covered. check-preload.sh now computes its own list rather than borrowing set-coherence.setlist_tracks(), because the two ask different questions: a cheat sheet wants tonight's running order, a preload wants anything that might get played, and the cost asymmetry is total. PV_PRELOAD_SETLIST / PV_PRELOAD_MONTHS override. Not a fourth setlist parser -- the same setlist_samples parser, fed a wider list. Cost of over-covering, measured: 122/124 banks OK in 5.0s (was 60/61 in 2.6s), scsynth RSS 4.8G on a box with 62G total and 40G available. Logs two findings from the same boot: 64 AppleDouble resource forks named zz._*.wav in rhadamanthe_fx/divers/vocal, which fail to load AND occupy sample indices (left alone -- the zz. prefix looks like a deliberate rename, so deleting is the owner's call); and preload's COUNT MISMATCH banner, which reports those 2 real load failures with the wrong diagnosis.
Showing
tools/gen_setlist.py
0 → 100755
Please
register
or
sign in
to comment