Commit 9d41b501 by PLN (Algolia)

gig: the day has a clock now, and it came from PLN not from a guess

Talks until 17:00, stage setup 17:00-18:00, ParVagues 18:00-20:00, DJ
Gredine 20:00-22:00. Sourced from PLN this morning in his own words, and
recorded here because it is nowhere else — there is still no AI ENGINEER
entry under Perso/www/content/lives/2026/. The set is two hours, which is
exactly what the 17-track setlist was built for.

No doors time was given, so none is written down. That part of the rule has
not changed.

Morning list restated against what the box actually reports at 10:30:
thermald active, preload done (137/137 banks), charger done (PL1 45 W, and
the clock cap was never the cable). Still open and all needing his own
hands: the Ardour RT fix, protect, and a Ctrl+S that has to happen before
anything quits Ardour — the saved session still shows five orbits shut from
before last night's rehearsal.

Log 047 tells the preload story, which was a trap worth writing down.
parent 3b518774
......@@ -971,3 +971,60 @@ because three of them are consequences of tonight's work rather than new faults:
5. Plug the **Dell barrel charger**, re-assert the gear, read `max_perf_pct`. The
cap may close for a cable.
6. Master fader → **Ctrl+S** → re-run the gate. Target: only the cap items left.
## 🕐 Thu 24, 10:30 — THE DAY'S CLOCK, from PLN
Sourced this morning **from PLN directly**, in his words: the conference "plays
until 5pm", then he "setup the main stage for a gig at 6pm-8pm", then "DJ Gredine
picksup from 8pm to 10pm". Recorded here because it is nowhere else — there is
still no AI ENGINEER entry under `~/Work/Perso/www/content/lives/2026/`, so this
file is the only written record until one exists. **Not derived, not guessed.**
| Time | What |
|---|---|
| until 17:00 | conference talks — the 17:00 sound-test window is the end of them |
| 17:00–18:00 | PLN sets up the main stage |
| **18:00–20:00** | **ParVagues — 2 h.** The 17-track setlist is ~120 min. It fits |
| 20:00–22:00 | DJ Gredine |
No "doors" time was given and none is invented. The set is **two hours**, which is
what `armada/setlist_thu24.txt` was built for — 17 tracks, ~9 min each, settled
2026-09-22.
### Morning list — status at 10:30
- [x] **0. `liquid_nite` line 46** — committed last night. Whole set re-verified
cold this morning: **17/17 ok**, including PLN's uncommitted `love_first`
(`^56` jungle_breaks:80) and `take_5_drops` (`. chop 8`) edits.
- [x] **1. thermald** — PLN started it. `active`.
- [ ] **2. `sudo tools/fix-ardour-rt.sh`** — NOT applied; `parvagues-protect:92`
still reads `ardour:80`. Needs root, so it is PLN's hands. **Ctrl+S in
Ardour first**: the acceptance test needs a quit-and-relaunch from the
desktop icon, and the currently-running Ardour was launched by the Bridge
(parent PID is `python3`, `RLIMIT_RTTIME` **unlimited**) — so this instance
is immune to the SIGKILL and proves nothing.
- [ ] **3. `sudo systemctl start parvagues-protect`** — still `inactive`, so
scsynth has no OOM shield and no FIFO/90 right now. Note the fix script
restarts protect itself, so check `is-active` after step 2 rather than
starting it twice.
- [x] **4. preload** — done, and it was a trap. See
`armada/tasks/047-the-fix-that-warmed-nothing.md` and commit `3b51877`.
`--fix` wrote `\808bd`, which SuperCollider cannot parse, so the plan
warmed **0** banks instead of 132 — and `check-preload` then reported `ok`
because its shell grep could not see the quoted rows either. Both fixed,
43 tests added and watched failing. Now **137/137 banks warm in 3.8 s**.
Graph unchanged across the restart (49 links, 39 SC ports, no leak).
- [x] **5. Dell barrel charger** — plugged, and it moved a real number:
**PL1 25 W → 45 W** (stock), the USB-C source having negotiated 45 W total.
But `max_perf_pct` is **still 65** and EPP is still `balance_power`, so the
cable was never the clock cap — that is `thermal-pilot` rung 1, as measured
last night. Half-closed: the power limit is fixed, the (a)/(d) cap decision
is still open and can wait for the sound test's ears.
- [ ] **6. Master fader → Ctrl+S** — Master is now at **−0.5 dB** (was the
complaint), but the session as last SAVED (00:14:49, *before* the 01:00
rehearsal) still shows **five orbits shut**: `Tidal 05` and `Tidal 06` at
−inf, `Tidal 10` at −63.6, `Tidal 08` at −59.9, `Tidal 04` at −33.8. He
played d8 fine at 01:00, so this is almost certainly a stale file rather
than a stale desk — but `check-mix` reads the saved session and `use-osc=0`,
so no tool can see the live desk. **One Ctrl+S settles it**, and it has to
happen before the Ardour quit in step 2 or the live desk is lost.
---
log: 047
title: "The fix that warmed nothing"
date: 2026-09-24
task: "gig day — morning list item 4 (preload)"
tags: [tooling, salvage, gig-prep, supercollider]
shareable: true
---
## Cap (what & why)
Gig morning, T-8h to the sound test. Last item on the list that could still cost
audible quality: the preload plan was short by five sample banks, so those banks
would be read off disk on their first hit — a crackle, mid-transition, in front of
people. Regenerate it, restart SuperDirt, done. Fifteen seconds of silence.
## Manœuvre (how)
`check-preload.sh --fix` wrote the five banks in. Diffed against a backup: exactly
5 rows added, 0 removed. Header sane. Restarted SuperDirt. Then read the boot
journal instead of the unit status — and found the fix had broken everything:
```
ERROR: syntax error, unexpected NAME, expecting ']'
[ \808bd, 25, ".../Dirt-Samples/808bd" ],
ERROR: Command line parse failed
```
**A SuperCollider bare symbol cannot start with a digit.** The five newly visible
banks were `808bd`, `808cy`, `808hc`, `808sd`, `90s_synatm` — every one of them
digit-led, because that is *why* last night's parser fix was needed in the first
place. One malformed row kills the entire file, so the plan warmed **0** banks
where it had warmed 132 the day before.
Restored the known-good plan first, then fixed the emitter to quote what must be
quoted. Regenerated. And the checker said **ok** — on a plan it should have called
short. Second bug, one layer out: `banks()` and `bank_counts()` read the plan with
shell greps for `[ \name`, which cannot match a quoted row. The plan grew five
banks and the checker could not see them, so `want` came out 132 instead of 137.
Four readers and writers of one line's shape. They now all go through
`plan_row` / `plan_row_name` / `plan_rows`, written down once.
## Prise (findings / artifacts)
- `3b51877` — emitter quotes digit-led names, four call sites unified, 43 new tests.
- `tools/tests/test_preload_plan.py` — and the tests were **watched failing**: revert
the quoting and 21 of them break and `check-preload` goes blind again.
- **137/137 banks OK in 3.8 s** at boot, up from 132 warmed (and briefly 0).
- Audio graph identical across the restart: 49 links, 39 SC out ports, 0 SC-to-speaker
leaks. Set still compiles 17/17.
- Charger, same morning: the Dell barrel brings **PL1 from 25 W to 45 W** (stock) —
the USB-C source had been negotiating 45 W total. `max_perf_pct` stayed at 65, so
the cable was never the clock cap. Two separate limits, one of them now closed.
## Sel (the shareable learning)
**A green fix is not a working fix, and the unit being `active` tells you nothing
about what it loaded.** Both bugs were invisible from outside: the plan's fallback
is `doNotReadYet = true`, so a preload that does nothing degrades silently to lazy
reads — no error, no banner, nothing a performer would see. The only witness was
one line in the boot journal.
And the second bug is the better story: **a checker that cannot read what the
emitter writes is worse than no checker.** It didn't merely miss the problem, it
actively cleared it. Had the morning gone one step faster — regenerate, see `ok`,
move on — the rig would have arrived at the venue warming zero banks with a green
check to prove it was fine.
The generalisation, and it is cheap: when one line's shape has more than one writer,
it will drift, and the drift shows up as false confidence rather than as an error.
## Hameçon (hook)
"I fixed the preload and it went from 132 sample banks to zero. Then the checker
told me everything was fine — and *that* was the real bug."
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