Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
Tidal
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PLN
Tidal
Commits
af868ccd
Commit
af868ccd
authored
Jul 30, 2026
by
PLN (Algolia)
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
docs(tasks): archive #70/#105/#108/#109 — the invariant that was a hypothesis
parent
91b8b958
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
113 additions
and
0 deletions
+113
-0
completed-archive.md
armada/tasks/completed-archive.md
+113
-0
No files found.
armada/tasks/completed-archive.md
View file @
af868ccd
...
...
@@ -1153,3 +1153,116 @@ design (D minor, measured corr=0.903) held constant throughout.
**Deps.**
Depends on nothing. Surfaced #108 as an unrelated finding (desire.tidal
doesn't currently compile at all — a one-character typo, not a rhythm issue).
## #108 — GIG BLOCKER: desire.tidal does not compile
**Description.**
`live/collab/raph/desire.tidal:46`
carried
`# pan 0.42plz /se`
— a
committed typo, not a working-tree accident. The file has no blank lines, so Pulsar
treats it as ONE do-block: that single stray word killed every orbit in a Finale-slot
setlist track, six days out from OPAL.
**Done.**
Fixed by PLN in his own buffer; verified 2026-07-30 (
`grep plz`
→ 0 matches)
and committed as part of ce887b7.
`silent-eval --seeded`
now reports
**13/13 ok**
— the
first time the entire OPAL setlist has built cold.
**Learnings.**
The bug was invisible for as long as it was because silent-eval printed
every build failure as
`BUILD FAILED — harness limit, NOT a track verdict`
, a
*
constant
string
*
. It was right about that twice (two genuine harness bugs) and catastrophically
wrong the third time, telling the reader in reassuring words to ignore a broken setlist
track. Fixed by computing the verdict from which line GHC pointed at rather than
asserting it.
**
Any "don't worry, this is our fault not yours" message a tool prints
must be reached by evidence
**
— the dangerous side to be wrong on is the side that says
"ignore this", because that is the side nobody re-checks.
**Deps.**
Found by #93's harness repair. Unblocked nothing formally; it was simply the
difference between a set that plays and one that doesn't.
## #70 — you_my_sunshine: d5 and d11 share cut group 5
**Description.**
pvlint PV004 flagged, on its first real run (2026-07-28), that d5 (the
vocal) and d11 (
`no_sunshine:4/4`
chopped) both carried
`# cut 5`
. Cut groups are
monophonic, so each d11 event killed the vocal mid-word.
**Done.**
2026-07-30, commit 27c1581 — d11 →
`# cut 11`
, following the
group-N-equals-orbit-N convention d3/d6/d8/d9 already used in that same file. Left
reversible in one edit, with the reason in a comment, because "both vocal layers are
deliberately monophonic" was a legitimate arrangement PLN could have wanted.
**Learnings.**
The find worth keeping is not the fix but the
*correspondence*
: d5's line
59 carried PLN's own
`-- FIXME VOICE OFF`
.
**Same bug, two labels**
— one filed by a
linter, one written by ear, months apart, neither connected to the other until both were
read side by side. They did not look like duplicates in a task list because
**
the ear
names the SYMPTOM and the linter names the MECHANISM.
**
Generalisable: when a lint
finding and a human FIXME live in the same file, check whether they are one defect before
treating them as two items.
**Deps.**
Found by pvlint (#100's rule set). Closed one of #111's Group-C markers as a
side effect.
## #105 — Align the gM family: mutes by ROLE, filters by BLOC
**Description.**
The corpus treated
`gM<N>`
as a mirror of
`gF<N>`
— a legacy of gM once
being
`gMask . gMute<N>`
before gMask was retired. PLN wanted the kick mutable on its own
button.
**Done.**
2026-07-30, commits 72943be (tooling) + 27c1581 (corpus).
**
917 lines across
213 files
**
, corpus-wide rather than setlist-only at PLN's correction (
*
"not only in the
set am i right?"
*), plus 7 setlist orbits that had NO mute given one (*
"no mute is
oversight!"
*
). Map authored once in
`tools/lcxl_grid.py`
(
`_FILTER_FAMILY`
/
`_MUTE_FAMILY`
), migrator
`tools/fix-mute-roles.py`
, guarded by new pvlint PV012/PV013.
Non-set missing mutes reported, not written:
`docs/2026-07-30-orbits-without-a-mute.md`
.
**Learnings.**
Three, and the first is the expensive one.
1.
**The task's own stated invariant was wrong.**
It was framed as "align gM index to gF
index". I measured 35 set mismatches against that rule, rigorously, and was ready to
migrate. PLN's actual map groups filters and mutes DIFFERENTLY on purpose — you sweep
the drums as a bloc but drop the kick alone — so the real edit count is 55, and
`d4: gF2+gM3`
, which the mirror rule called broken in 11 of 13 tracks, is CORRECT.
Shipping it would have moved 11 good lines and left the kick sharing a button with the
hats: the exact complaint that reopened the task.
**
A stated invariant is a hypothesis
about intent, and a rigorous measurement against the wrong invariant produces a
confident number answering the wrong question.
**
2.
**The linter audited the migrator, immediately.**
PV013 was written to prevent future
drift; its first catch was the migration in progress.
`fix-mute-roles.py`
had its own
orbit regex requiring
`^dN $`
and had walked straight past
`d5 -- The Voice of Love`
(no
`$`
, gates on a commented continuation). It now imports pvlint's parser. The miss
had hidden 14 rewrites and 7 missing mutes —
**
under-application, not corruption,
while every check read green
**
: convergence said 0 remaining, silent-eval said 13/13,
222 tests passed. Verifying the output cannot catch a tool that can't see part of its
input; only a second independent parser can.
3.
**The verification that actually answered PLN's "ensure all tracks playable".**
Not
spot-checks: (a) convergence — run twice, second pass proposes 0; (b) a structural
proof diffing all 917 changed lines against HEAD and asserting both sides are
identical once mute tokens and whitespace are stripped — 908 provably token-only, the
other 9 individually enumerated and accounted for; (c)
`silent-eval --seeded`
over all
213 touched files on a pre-migration worktree AND the migrated tree,
**
verdict lists
byte-identical
**
. That last one is the real answer, and it cost ~10 minutes of
unattended compute.
It also surfaced #112 as a by-product: 14 corpus tracks that do not compile at all,
pre-existing, none in the setlist.
**HONEST LIMIT, recorded because a green check here misleads.**
Every button CC seeds to
0 and
`gMute<N>`
is
`midiOn "^7N" (mask "f*16")`
, so all three mutes are equally inert
until pressed. None of the verification above says anything about behaviour UNDER a
press — the only thing this change alters. Left for PLN's fingers.
**Deps.**
Closed #70 in the same diff. Feeds #44 (
`--check`
as a pre-gig gate). Related
to #54/#98, the same "the surface should be one sentence" thread.
## #109 — Stale orphan-orbits fixture (you_my_sunshine d7→d6)
**Description.**
`tools/tests/test_orphan_orbits.py:201`
expected d7; the parser said d6.
**Done.**
2026-07-30. Fixture corrected to
`{1,2,3,4,5,6,8,9,11}`
. Cause was PLN's
d7→d6 consolidation (with ^91→^90, ^59→^58), the same move he had made in do_it_right.
**Learnings.**
Re-derived the set by reading the file's column-0 declarations and
checking for commented-out ones, NOT by pasting the parser's output.
**
A hand
measurement that quotes the thing it checks is a tautology
**
— the whole value of the
fixture is that it is an independent witness. Cheap to get wrong, and the wrongness is
invisible forever after.
**Deps.**
Blocked nothing; it was the difference between a suite at 213/1-fail and a
clean baseline to migrate against, which is why it went first.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment