Commit 4861e614 by PLN (Algolia)

check-gig: nothing recording with the rig up is a NO-GO

The gig-record probe was ADVISE; the unit was not installed and two hours of
playing were recorded nowhere. A missed gig recording cannot be recovered and
an unneeded one costs 72 MB an hour, so with SuperDirt running it blocks (a
cold rig still skips). It now names the not-installed case instead of a bare
rc.
parent fd42bb8c
...@@ -424,28 +424,35 @@ print(" ".join(str(p) for p in m.setlist_tracks()))')"""), ...@@ -424,28 +424,35 @@ print(" ".join(str(p) for p in m.setlist_tracks()))')"""),
"--converge also starts it"), "--converge also starts it"),
# ---- the black box ----------------------------------------------------- # # ---- the black box ----------------------------------------------------- #
# ADVISE, not BLOCK, and the line is deliberate: this is the net, not the # BLOCK whenever SuperDirt is running (needs=scsynth: a cold rig has nothing to record,
# act. A missing net does not stop a set, and the Ardour multitrack is still # so it SKIPs). It was ADVISE, with this reasoning: "this is the net, not the act; the
# the archival copy. But 2026-09-24 is why it is here at all — REC was # Ardour multitrack is still the archival copy". 2026-09-24 is why it exists at all: REC
# pressed at 18:27:41 and the set had started at 18:09:57, so salut_nu and # was pressed at 18:27:41 and the set had started at 18:09:57, so salut_nu and love_first
# love_first exist in no recording anywhere, and orbit 08 was never armed so # exist in no recording anywhere, and orbit 08 was never armed so its part of all fifteen
# its part of all fifteen tracks is gone with them. Both losses are # tracks went with them. And on 2026-10-11 it was still ADVISE, still WARN-and-ignored,
# survivable with one stereo opus of the master bus, and the script for it # while the unit was not even installed on this machine and two hours of playing were
# has existed since OPAL without ever running once on this machine. # recorded nowhere. A missed gig recording cannot be recovered and an unneeded one costs
# 72 MB an hour, so the asymmetry decides: with the rig up, nothing capturing is NO-GO.
# #
# Same shape as the gig-log probe above, for the same reason: "the unit is # Same shape as the gig-log probe above, for the same reason: "the unit is green" is not
# green" is not "audio is landing". Assert the property — a segment file # "audio is landing". Assert the property: a segment file whose mtime is within the
# whose mtime is within the last 20 seconds. # last 20 seconds. And name the case that actually happened (unit not installed) instead
# of a bare rc.
Probe("gig-record capturing", shell(r""" Probe("gig-record capturing", shell(r"""
if ! systemctl --user cat gig-record.service >/dev/null 2>&1; then
echo "gig-record.service is NOT INSTALLED on this machine: the black box can never start"
exit 3
fi
d="$PWD/recordings" d="$PWD/recordings"
n=$(ls -t "$d"/*.opus 2>/dev/null | head -n1) n=$(ls -t "$d"/*.opus 2>/dev/null | head -n1)
[ -n "$n" ] || exit 1 [ -n "$n" ] || { echo "no recording segment exists: the black box has never captured"; exit 1; }
age=$(( $(date +%s) - $(stat -c%Y "$n") )) age=$(( $(date +%s) - $(stat -c%Y "$n") ))
[ "$age" -le 20 ] || exit 2"""), [ "$age" -le 20 ] || { echo "newest segment is ${age}s old: nothing is being recorded"; exit 2; }"""),
kind=ADVISE, kind=BLOCK, needs=("scsynth",),
fix="systemctl --user start gig-record (it is on-demand, so gig-up " fix="not installed -> tools/rig-install.sh (links the missing unit); otherwise "
"--converge starts it; tools/gig_record.sh status says what it is " "systemctl --user start gig-record (parvagues-sc starts it with the sound; "
"pointed at — it follows Ardour's Master, not the default sink)"), "tools/gig_record.sh status says what it is pointed at, it follows Ardour's "
"Master, not the default sink)"),
# RUNNING IS NOT LISTENING, and this is the honest half of the claim above. # RUNNING IS NOT LISTENING, and this is the honest half of the claim above.
# gig_record resolves its target ONCE, at start. `gig-up --converge` starts # gig_record resolves its target ONCE, at start. `gig-up --converge` starts
......
...@@ -304,3 +304,13 @@ def test_the_ardour_precondition_asks_for_the_name_ardour_actually_has(monkeypat ...@@ -304,3 +304,13 @@ def test_the_ardour_precondition_asks_for_the_name_ardour_actually_has(monkeypat
monkeypatch.setattr(CG, "_running", lambda *names: asked.extend(names) or False) monkeypatch.setattr(CG, "_running", lambda *names: asked.extend(names) or False)
CG.PRECONDITIONS["ardour"]() CG.PRECONDITIONS["ardour"]()
assert "ArdourGUI" in asked assert "ArdourGUI" in asked
def test_nothing_recording_with_the_rig_up_blocks_the_launch():
"""2026-10-11: gig-record was ADVISE, the unit was not installed, and two hours of
playing were recorded nowhere. A missed gig recording cannot be recovered and an
unneeded one costs 72 MB/hour, so with SuperDirt running it is a NO-GO. A cold rig
has nothing to record, so it must still SKIP rather than block."""
probe = next(p for p in CG.PROBES if p.name == "gig-record capturing")
assert probe.kind == gig_gate.BLOCK
assert "scsynth" in probe.needs
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment