gig-up proved the set COMPILES and said nothing about whether anything could make
a sound. scsynth was read only to colour a banner (:106,:115) and to skip --audio
(:202) — it never failed. This morning the audio server had been dead for two days
and the gate would still have printed GO.
--live is a MODE, not the default. Cold-by-default remains right: cold checks are
safe mid-set and must work on a train. Severity is chosen per link, deliberately:
HARD scsynth alive / sclang :57120 / SC -> Ardour (>=24 pw links)
no audio server, no listener, or no path to the DAW = there is no gig.
SOFT Tidal :6010, LCXL -> SC, SuperDirt warmed, perf mode
all legitimately absent ten minutes before doors; a gate that reddens for
them is a gate PLN stops reading.
Every check reads the thing that MAKES SOUND — a process, a socket, a real pw-link —
never `systemctl is-active`. That distinction is the whole reason this exists: the
unit reported active/running for two days while the rig was mute, because MainPID is
sclang and scsynth is its child.
ALSO, and it came from PLN's ears: "preload covers set", a HARD cold check.
He heard crackles moving do_it_right -> take_5_drops. Measured in that window: 0
SuperDirt lates, 0 pipewire xruns, 17 lazy soundfile reads — all take5:*. Disk I/O,
not CPU. The preload MECHANISM was healthy and said so ("47/47 banks OK in 1.9 s");
it was warming the wrong list. preload.scd was dated Jul 28, header "10 track(s)
scanned", while the set is 13 — because setlist_samples.py reads setlist_opal2026.txt
(10 tracks) and gig-up/cheat-sheet trust set-coherence.setlist_tracks() (13). The
missing three are do_it_right, take_5_drops, electric_hammer: exactly the pair he was
transitioning between. #120 tracks which source becomes canonical — not guessed here.
Two properties made it invisible, and they are the transferable lesson: preload.scd
is GITIGNORED (correctly — generated), so no diff ever showed it drifting, and
NOTHING COMPARED IT TO THE SET. A generated artifact with no freshness check is a
stale artifact waiting for the worst possible moment; its natural debut was a cold
boot at the venue, on the first play of every track added since Jul 28. It only
surfaced at a desk because SuperDirt had been up since Jul 28 with those banks cached
from a first play weeks earlier, and a restart cleared the cache.
tools/check-preload.sh compares BANK SETS (not bytes — the generator stamps a header
and orders banks, so a byte diff would cry wolf), borrows set-coherence's parser
rather than adding a fourth definition of "the setlist", and has --fix.
Validation, all of it adversarial:
* check-preload mutation-tested — restore the Jul-28 plan and it names the 7 banks
that would crackle: daft fbreak120 hammer popkick realclaps superfreak take5.
hammer and superfreak are independently confirmed: they appear as lazy loads in
this morning's journal, before any of this was written.
* --live on the live rig: 7/7 green after fixing MY OWN check (below).
* THE GATE BITES: run under a PATH shim whose pgrep reports scsynth absent ->
NO-GO, exit 1, correct fix hint, real rig never touched. That is precisely the
state that printed GO this morning.
* cold run unchanged: still GO, live chain not executed.
One check was wrong before it was right, in the session's recurring shape. "SuperDirt
warmed" first warned about a rig that was perfectly warm, because
`journalctl --user -u parvagues-sc` returns lines from a PREVIOUS instance on this
box — it handed back Jul 30 output while the current instance had already logged
"51/51 banks OK". Now filtered by SyslogIdentifier and keyed to the unit's own
ActiveEnterTimestamp, so it asks "did THIS boot warm?" rather than "was there ever a
PRELOAD line", which any previous boot would satisfy forever.
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| at | Loading commit data... | |
| bridge | Loading commit data... | |
| foundry | Loading commit data... | |
| pulsar-parvagues-hud | Loading commit data... | |
| pvlint | Loading commit data... | |
| tests | Loading commit data... | |
| README.md | Loading commit data... | |
| analyze_samples.py | Loading commit data... | |
| button_roles.py | Loading commit data... | |
| cheat-sheet.py | Loading commit data... | |
| check-boot-blocks.py | Loading commit data... | |
| check-boot.sh | Loading commit data... | |
| check-drift.sh | Loading commit data... | |
| check-mix.py | Loading commit data... | |
| check-preload.sh | Loading commit data... | |
| check-tracks.sh | Loading commit data... | |
| control-lens.py | Loading commit data... | |
| deshadow-helpers.py | Loading commit data... | |
| fan_check.sh | Loading commit data... | |
| fix-button-roles.py | Loading commit data... | |
| fix-mute-roles.py | Loading commit data... | |
| gen_tokens.py | Loading commit data... | |
| gen_ts_types.py | Loading commit data... | |
| gig-log.py | Loading commit data... | |
| gig-up.sh | Loading commit data... | |
| gig_record.sh | Loading commit data... | |
| lcxl-init.py | Loading commit data... | |
| lcxl-leds-watch.service | Loading commit data... | |
| lcxl-leds.py | Loading commit data... | |
| lcxl_grid.json | Loading commit data... | |
| lcxl_grid.py | Loading commit data... | |
| migrate-columns.py | Loading commit data... | |
| mock-lcxl.py | Loading commit data... | |
| mute.tidal | Loading commit data... | |
| orphan-orbits.py | Loading commit data... | |
| parvagues-sc-watchdog.service | Loading commit data... | |
| probe-chain.py | Loading commit data... | |
| sample_tfidf.py | Loading commit data... | |
| sc-watchdog.sh | Loading commit data... | |
| set-coherence.py | Loading commit data... | |
| setlist_samples.py | Loading commit data... | |
| shipowiz.py | Loading commit data... | |
| silent-eval.py | Loading commit data... | |
| solo.tidal | Loading commit data... | |
| surface-columns.py | Loading commit data... | |
| take-lens.py | Loading commit data... | |
| tempo-lens.py | Loading commit data... | |
| tidal-remote.py | Loading commit data... | |
| tools.png | Loading commit data... | |
| unmute.tidal | Loading commit data... | |
| unsolo.tidal | Loading commit data... |