Commit b00692c0 by PLN (Algolia)

fix(rig): the other two thirds of the gig-log fix, which 30fceb43's message…

fix(rig): the other two thirds of the gig-log fix, which 30fceb43's message claimed but did not contain

30fceb43 said the debt was "paid in three places" and shipped one file, the unit
itself. The inventory entry, the regenerated target and the hard gate stayed in
the working tree — so the commit that explains the fix and the commit that
performs it were different commits, and only one of them existed.

What is here:

  rig_units.py    gig-log joins SERVICES, so --ensure enables it and --status
                  reports it. 7 units, 0 problems. It was absent until now, and
                  that absence is the entire reason CosmicFest has no log: the
                  unit was installed 2026-07-29, never enabled, and nothing in
                  the authored list knew it existed.

  parvagues-rig.target  regenerated, now Wants 8 units.

  gig-up.sh       a HARD gate, deliberately not "is the unit active". A green
                  unit is not a recording — the process can be up while the
                  writer is wedged. It asserts a session file's mtime is within
                  20 s, i.e. it is writing NOW. Proved it can fail rather than
                  assuming: stopped gig-log, waited 25 s, gate failed at age
                  25s; restarted, age 1 s, passed.

Same class of error as the amend on c628415e earlier this session, where a message
described a midi-autoconnect fix the commit did not carry. Both times the message
was written from intent rather than from `git show --stat`.
parent d17228a1
...@@ -514,6 +514,26 @@ if (( LIVE )); then ...@@ -514,6 +514,26 @@ if (( LIVE )); then
fi fi
fi fi
# --- the recorder ------------------------------------------------------------
# HARD, not advisory, and the reason is a specific loss: CosmicFest (2026-08-23)
# produced NO session log. The unit had been installed 2026-07-29 and never
# enabled, and it was absent from rig_units.py, so nothing in the authored
# inventory knew it existed. It ran only when someone remembered, and the sessions
# that survive (through 2026-08-20) are exactly those manual runs. A whole gig's
# thermals, xruns, gear state and — worse — its TRACK BOUNDARIES were lost, and
# recovering the tracklist afterwards took two DSP lenses and still left gaps.
#
# The check is deliberately NOT "is the unit active". A green unit is not a
# recording (reference_sc_supervision, feedback_verify_the_plumbing): the process
# can be up while the writer is wedged. So assert the property that matters — a
# session file whose mtime is within the last 20 seconds, i.e. it is writing NOW.
run "gig-log recording" \
"systemctl --user restart gig-log # it is in rig_units now, so --converge also starts it" \
bash -c 'd="$HOME/.local/share/parvagues/gig-log"; n=$(ls -t "$d" 2>/dev/null | head -n1);
[ -n "$n" ] || exit 1;
age=$(( $(date +%s) - $(stat -c%Y "$d/$n") ));
[ "$age" -le 20 ] || exit 2'
# --- verdict ----------------------------------------------------------------- # --- verdict -----------------------------------------------------------------
# Failures print FIRST and carry their fix, because the read order in a field is # Failures print FIRST and carry their fix, because the read order in a field is
# "what is broken / what do I type", not "here is a report". # "what is broken / what do I type", not "here is a report".
......
...@@ -18,3 +18,4 @@ Wants=tidal-ardour-autoroute.service ...@@ -18,3 +18,4 @@ Wants=tidal-ardour-autoroute.service
Wants=midi-autoconnect.service Wants=midi-autoconnect.service
Wants=lcxl-leds-watch.service Wants=lcxl-leds-watch.service
Wants=parvagues-bridge.service Wants=parvagues-bridge.service
Wants=gig-log.service
...@@ -57,6 +57,12 @@ SERVICES = [ ...@@ -57,6 +57,12 @@ SERVICES = [
("midi-autoconnect", "MIDI wiring", None, "login", "LCXL → Midi Through, return leg cut"), ("midi-autoconnect", "MIDI wiring", None, "login", "LCXL → Midi Through, return leg cut"),
("lcxl-leds-watch", "LCXL LEDs", None, "login", "the surface paint"), ("lcxl-leds-watch", "LCXL LEDs", None, "login", "the surface paint"),
("parvagues-bridge", "Bridge", None, "login", "dashboard + perf toolbar"), ("parvagues-bridge", "Bridge", None, "login", "dashboard + perf toolbar"),
# Added 2026-08-29. Absent from this list until then, and that absence IS why
# CosmicFest has no session log: the unit was installed 2026-07-29 and never
# enabled, so it only ran when someone remembered to start it by hand. The
# sessions that exist (through 2026-08-20) are exactly those manual runs.
# Costs 0.4% of a core at 1 Hz, so there is no reason for it to ever be off.
("gig-log", "gig-log", None, "login", "1 Hz session recorder: thermals, xruns, gear, MIDI"),
] ]
TARGET = "parvagues-rig.target" TARGET = "parvagues-rig.target"
......
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