-
feat(gig): one command says GO or NO-GO — and it caught two bugs on its first run (#44) · 1219c704
A fortnight of debugging produced a shelf of good checks: check-boot, check-mix, silent-eval, fix-mute-roles, pvlint, orphan-orbits. Every one of them worked. Every one of them was also a command PLN would have to REMEMBER — and on Sat 8 Aug at ~19:00 he is in a field, alone, with a soundcheck window and no assistant. A check you have to remember under pressure is a check you do not run. So gig-up.sh contains no new checking logic at all. It is a running order, an exit code, and a decision about which failures are GO-BLOCKING. Its whole value is that there is now one thing to type. WHAT IS HARD vs SOFT, and why the line is drawn there HARD boot helpers one parse error in BootTidal.hs silences EVERY track at once, invisibly, while a stale ghci holds the old definitions. First check for that reason. HARD ardour faders earned it three sessions running, a DIFFERENT set of tracks each time: 07-28 had 05/06/08/10 at -inf, 07-30 had 06/10/12, 07-31 had 10. Three recurrences is not bad luck, it is a property of MIDI-learned faders that drift from the saved session in both directions. HARD compiles / mute map / pvlint SOFT transition ghosts real (#77) and known-open. A gate that goes red for work you have consciously deferred is a gate that gets ignored. SOFT LCXL present legitimately unplugged at a kitchen table. At the venue, a warn here means the set has no hands. TWO BUGS FOUND BY THE FIRST RUN — which is the argument for building it 1. check-boot.sh and check-tracks.sh were mode 644. NOT EXECUTABLE. The pre-gig audio gate has never once been runnable as `tools/check-tracks.sh` since it was written; it only ever ran when someone typed `zsh tools/...`. Every green memory of it is a green memory of a different invocation. 2. pvlint's `--setlist` is a MODIFIER ("these paths are ordered"), not a mode — it still requires paths. `python3 -m pvlint --setlist` exits 2 on an argparse error, which from the outside looks exactly like a lint failure. gig-up now borrows set-coherence's setlist_tracks() rather than teaching a fourth file to parse the setlist. Both are the same shape and it is this rig's signature failure: a thing that was verified once, in a context that no longer holds. Assembling the checks into one caller is what re-executed them under fresh conditions. DESIGN NOTES * Cold by default. Makes no sound, sends no MIDI, writes no .tidal. Safe to run mid-set, at 3am, or backstage. The audio gate is --audio, and it skips itself if the cold gate is already red — booting 13 tracks to confirm what a typecheck just told you is 10 wasted minutes at a venue. * Never touches CC 77-84 (Ardour track gains; 77 down is total silence) and never sweeps 93 (gPanic). * Scope is the SETLIST, not the corpus. 14 corpus tracks do not compile (#112) and must never make the gig gate red. * Failures print FIRST and carry their fix command inline, because the read order in a field is "what is broken / what do I type". * GO states its own limit every time: check-mix reads the SAVED session, so green means "Ardour will BOOT with this fader up", never "the mixer IS correct". Saying it in those words is how the -inf bug stops hiding behind a clean report. Verified: NO-GO path observed for real (2 failures, both genuine, both fixed); GO path 7/7 green; --help, --quiet and unknown-flag paths exercised.PLN (Algolia) authored1219c704
×