Commit 29ce99d3 by PLN (Algolia)

docs(tasks): archive #44/#114 — the orchestrator as adversarial user

Two entries. #44's lesson is the one worth mining later: wiring six working
checks into one caller found two of them dead, because every check had been
verified once, interactively, by a human who supplied the missing piece without
noticing. A human types `zsh tools/foo.sh` out of habit and never learns the
file is not executable. An orchestrator has no habits.

#114 records that the overnight constraint list did real work rather than being
ceremony: "never write to a setlist .tidal" is what kept three ranked-"needed"
tasks off the queue, and drawing that boundary first is why the night was
productive instead of risky.
parent f849295c
......@@ -1343,3 +1343,81 @@ Nothing applied — every suggestion changes how a track sounds and he rehearses
files. Also confirmed the #94 remap held: borrowed CCs are 0 or 1 across every track.
**Deps.** Confirms #98 with data. The IDLE counterpart to #54's STARVED problem.
---
## #44 — gig-up.sh: ONE command proves the whole chain
**Description.** A fortnight of debugging produced a shelf of good checks — check-boot,
check-mix, silent-eval, fix-mute-roles, pvlint, orphan-orbits. Every one worked. Every
one was also a command PLN would have to REMEMBER, and on Sat 8 Aug at ~19:00 he is in
a field, alone, with a soundcheck window and no assistant. A check you have to remember
under pressure is a check you do not run. PLN ranked it "1 important" of four options.
**Done.** `tools/gig-up.sh` (commit 1219c70). No new checking logic at all — a running
order, an exit code, and a decision about which failures are GO-BLOCKING. Cold by
default (no sound, no MIDI, no writes; safe mid-set); `--audio` adds check-tracks.sh and
skips itself when the cold gate is already red. Never touches CC 77-84 or 93. Scoped to
the setlist, not the corpus. Failures print FIRST with their fix command inline.
**Learnings.**
*Assembling checks is a verification step, not glue.* The first run found two bugs that
had been live for weeks:
- `check-boot.sh` and `check-tracks.sh` were **mode 644 — not executable**. The pre-gig
audio gate had never once run as `tools/check-tracks.sh`; it only ever worked because
a human typed `zsh tools/…` out of habit.
- `pvlint --setlist` is a MODIFIER, not a mode — it still needs paths. Run bare it exits
2 on an argparse error, indistinguishable from a lint failure to a caller.
Both are the same shape: verified once, interactively, by a human who supplied the
missing piece without noticing. **An orchestrator is a second, adversarial user** — it
calls things the way the docs say rather than the way the author remembers, and it has
no habits to paper over gaps.
*Hard vs soft has to be chosen, not defaulted.* Transition ghosts (#77) and LCXL-present
are advisory on purpose. A gate that goes red for work you have consciously deferred, or
for a desk legitimately unplugged at a kitchen table, is a gate people start ignoring —
and an ignored gate is worse than no gate.
*State the limit in the output, every time.* GO prints that it proves the set BOOTS
correct and NOT that the mixer IS correct, because check-mix reads the SAVED session
while the physical desk drifts independently. Without that sentence a clean report reads
as the stronger claim — which is exactly how the -inf bug survived three sessions.
**Deps.** Was blocked by #41; unblocked by re-reading the dependency — the gate's job is
to DETECT a mis-route, so #41 is a check inside it, not a predecessor. Companion
artefact: `docs/GIG-CHEATSHEET.md` (#16).
---
## #114 — Autonomous queue, 2026-07-31 night
**Description.** PLN compacted and left for the night: *"youll work auto"*. The queue
was his own ranking (#44 important → track repair needed → #16 bonus) plus the
constraints that apply specifically because he is not at the machine.
**Done.** All three, commits 1219c70 → f849295. #44 shipped; #16's 80/20 shipped as the
generated cheat-sheet; #112 was reframed from "14 broken tracks" into a measured,
triaged 51+21 of 694 with the harness bugs behind it fixed.
**Learnings.**
*The constraint list did real work.* "Never write to a setlist `.tidal`" is what kept
#99/#45/#77 off the queue despite being ranked "needed" — they all edit files PLN
rehearses on, and Pulsar saves the BUFFER, so an overnight disk edit dies at his next
Ctrl-S or clobbers his work. The right move was to leave ranked-high work untouched and
say so, not to find a workaround.
*Constraints also chose the work.* Everything that shipped shares one property: it
touches tooling and docs, never a track. That is not a coincidence — it is what the
constraint set leaves available, and it turned out to be a productive night precisely
because the boundary was drawn first rather than negotiated per-task.
*A "convenience" task and a "counting" task both turned into real bug hunts.* Neither
#44 nor #112 was framed as debugging. Both found live bugs within minutes of first
execution. The common cause: each was the first time a code path had been exercised
by something other than a human with habits.
**Deps.** Superseded by the board it leaves behind — #112 carries the triage, #16 carries
the remaining 20%.
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