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()))')"""),
"--converge also starts it"),
# ---- the black box ----------------------------------------------------- #
# ADVISE, not BLOCK, and the line is deliberate: this is the net, not the
# act. A missing net does not stop a set, and the Ardour multitrack is still
# the archival copy. But 2026-09-24 is why it is here at all — REC was
# pressed at 18:27:41 and the set had started at 18:09:57, so salut_nu and
# love_first exist in no recording anywhere, and orbit 08 was never armed so
# its part of all fifteen tracks is gone with them. Both losses are
# survivable with one stereo opus of the master bus, and the script for it
# has existed since OPAL without ever running once on this machine.
# BLOCK whenever SuperDirt is running (needs=scsynth: a cold rig has nothing to record,
# so it SKIPs). It was ADVISE, with this reasoning: "this is the net, not the act; the
# Ardour multitrack is still the archival copy". 2026-09-24 is why it exists at all: REC
# was pressed at 18:27:41 and the set had started at 18:09:57, so salut_nu and love_first
# exist in no recording anywhere, and orbit 08 was never armed so its part of all fifteen
# tracks went with them. And on 2026-10-11 it was still ADVISE, still WARN-and-ignored,
# while the unit was not even installed on this machine 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 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
# green" is not "audio is landing". Assert the property — a segment file
# whose mtime is within the last 20 seconds.
# Same shape as the gig-log probe above, for the same reason: "the unit is green" is not
# "audio is landing". Assert the property: a segment file whose mtime is within the
# last 20 seconds. And name the case that actually happened (unit not installed) instead
# of a bare rc.
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"
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" -le 20 ] || exit 2"""),
kind=ADVISE,
fix="systemctl --user start gig-record (it is on-demand, so gig-up "
"--converge starts it; tools/gig_record.sh status says what it is "
"pointed at — it follows Ardour's Master, not the default sink)"),
[ "$age" -le 20 ] || { echo "newest segment is ${age}s old: nothing is being recorded"; exit 2; }"""),
kind=BLOCK, needs=("scsynth",),
fix="not installed -> tools/rig-install.sh (links the missing unit); otherwise "
"systemctl --user start gig-record (parvagues-sc starts it with the sound; "
"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.
# 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
monkeypatch.setattr(CG, "_running", lambda *names: asked.extend(names) or False)
CG.PRECONDITIONS["ardour"]()
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