-
feat(pvlint): PV014 + PV011-as-error — and they immediately found mafia's acid · b8344ac1
PLN, at rehearsal, on take_5_drops' d7 coming out muffled: "i saw also its crushbus was 41, a d7 with sub 4 is sus -- and two effects on same bus is a redflag as it means fighting for bus! so we gotta flag warning any 'bus nXY on dX' as sus (e.g. bus 41 (d4's) on d7 here), and any shared bus (^41 on d4 and d7) as PV error" Two rules, exactly as specified. PV014 (warning) — a bus slot numbered for a different orbit. The convention is <orbit><slot>: d4 owns 41/42, d10 owns 101/102, and a bare `bus 4` on d4 is the same idea with one slot. MEASURED before encoding it rather than assumed: 894 of 984 bus references under live/ conform, 90.9%. A real convention, not a tidiness preference. Mis-numbering is *how you accidentally share* a bus, so this rule sits upstream of PV011 and catches the cause, not the symptom. PV011 promoted warning -> error. It shipped as a warning on the theory that sharing a bus is legitimate glue. Rehearsal disproved that theory. The asymmetry with PV008 is deliberate and now documented in both rules and pinned by a test, so no future refactor quietly aligns them: yesterday PLN DEMOTED a shared button to a warning ("its ok when two percs are linked"), today he PROMOTED a shared bus to an error. A shared button is one hand doing two things on purpose and you hear it instantly. A shared bus is two orbits fighting over one effect instance with the winner decided by event density — you don't hear a mistake, you hear a slightly wrong sound and blame the synth. Surprises you can hear are warnings; surprises you cannot are errors. THE PAYOFF, first run, in a track still in the set. mafia_sans_serif's d7 was already carrying PLN's own note "FIXME ACID WEIRD NOT GOOD". It had THREE collisions with d4's moog bass, none visible in the code: # cut 4 every acid note truncated the bass, and vice versa # crushbus 41 one crush instance, ^35 and ^32 fighting over it # octerbus 42 one octer instance, ^55 and ^52 fighting over it d7 now owns cut 7 and slots 71/72. That is a diagnosis for a FIXME he wrote without knowing the cause, produced by a rule written twenty minutes earlier. Set is 0 errors / 9 warnings, silent-eval --seeded 14/14 ok, pvlint 68/68.PLN (Algolia) authoredb8344ac1
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| tests | Loading commit data... | |
| __init__.py | Loading commit data... | |
| __main__.py | Loading commit data... | |
| core.py | Loading commit data... | |
| rules.py | Loading commit data... |