-
feat(pvlint): PV008 — one physical button driving two orbits, the #94 bug as a permanent rule · 3060f506
Earned during the phase-2 button remap (5910aacc). The migrator left an over-budget control where it was, which LOOKS conservative and is the opposite: once ^42 became d2's button, d1's surviving reference to ^42 meant one press fired both orbits. perfect.tidal shipped that way until a hand-written check found it — and that check then existed only in a terminal scrollback, which is not a gate. WHY IT DESERVES TO BE AN ERROR, NOT A WARNING Nothing errors. Nothing goes silent. The extra layer only appears while a specific button is held. On stage that reads as "the track is broken today" rather than as a mapping bug, which is the exact signature of the failures this rig keeps losing evenings to. Same family as the orphan-orbit ghost: audible, plausible, and invisible to every static check we had. WHAT IT DOES NOT FLAG — the cry-wolf cases, each a real line from the corpus * gF1-3 and gMute1-3 (and gPanic) are per-FAMILY BY DESIGN — measured, not assumed: gF1 -> d1/d2/d3/d8, gF2 -> d4, gF3 -> leads. Flagging those would fire on every track in the set and the rule would be switched off within a day. * one orbit referencing a button three times is ONE gesture, not three collisions (bombe_dj's kick does exactly that) — findings are per ORBIT, as in PV004. * COMMENTED-OUT gestures. This matters more than it looks: commenting the surplus is precisely how #94 parks an over-budget control, so a rule that counted comments would fail every track the migrator just fixed. * knobs. Knob sharing is a columns question, not a button collision. VALIDATION OPAL setlist 0 PV008 findings — clean, as of 5910aacc whole corpus 136 findings across 56 of 792 files pvlint tests 38 passed (5 new: the real perfect.tidal case, plus one negative per cry-wolf class above) The corpus number is history, not exposure: those are old-world tracks that predate the column grid, and per the measure-the-set-not-the-corpus lesson the number that matters before a gig is the setlist's, which is zero. The corpus gets fixed when it gets migrated (#64 / post-gig), and now there is a rule that will prove it.
PLN (Algolia) authored3060f506
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| __init__.py | Loading commit data... | |
| test_rules.py | Loading commit data... |