#112 said "14 corpus tracks do not compile". Running the harness over the whole
corpus said 128. Neither number was about the music.
BUG 1 — column-0 `$` continuations reported as parse errors
PLN writes a lot of the corpus like this:
d1
$ whenmod 128 129 (…)
$ s "<k k*2 <k*2 k> k>"
Pulsar sends a block wrapped in GHCi's `:{ … :}`, which suspends the layout
rule, so that `$` at column 0 is a continuation and the track plays fine.
`orbit_bindings` rewrites `dN` into `name = idcp` and emits the block into a
real MODULE, where a column-0 `$` opens a NEW top-level declaration — a hard
parse error. The harness then printed, in these words:
✖ THE TRACK DOES NOT COMPILE — it will fail live too.
about code that has never once failed live. The intent to indent was already
written in the comment above the line ("becomes `name = idcp` + ` $ x`");
the indent itself was never applied. Two spaces on lines[1:] restores it and
preserves every relative indent below.
Why it stayed hidden: ZERO of the 13 setlist tracks use that style, and the
setlist is what anyone actually runs. The harness was green on everything it
was ever pointed at. Same shape as the chmod bug in the previous commit — a
thing verified once, in a context that no longer covers the corpus.
BUG 2 — a crashed probe reported as "FAIL — 0 orbit(s) SILENT"
The Haskell probe sets its failure flag ONLY when it prints a SILENT line, so
a non-zero exit with no SILENT line never measured silence at all — it threw
while QUERYING. `check_track` mapped any non-zero return to "SILENT" and
discarded stderr, so the one string that said what went wrong was thrown away
and replaced by a self-contradicting verdict. New CRASH verdict keeps stderr.
It immediately paid for itself. `live/chill/dub.tidal` compiles, plays three
orbits, then throws:
Syntax error in sequence:
"<0.75 .. 0.8 0.8 .. 0.65>"
^
A real mini-notation bug, precisely located — and one that WOULD fail live,
since the scheduler queries every cycle. It had been sitting behind a message
that said zero orbits were silent.
BUG 3 (latent, found while fixing 2) — a false green in the exit code
Splitting the summary so crashes stop being counted as silence revealed that
the return was keyed to the silence count alone. A corpus where every single
track failed to compile would have printed "OK — every declared orbit emits
events" and exited 0. The exit code now answers "is anything wrong", which is
the only question a gate may answer — this is the one tool whose entire job
is catching the failure that makes no noise.
Verified: setlist still 13/13 green and gig-up still GO (so no regression on
the path that matters); dub now reports THROWS WHEN QUERIED and exits 1;
previously-"broken" tracks compile. The corpus-wide count is deliberately NOT
restated here — it needs a clean re-run, and quoting a number I have not
re-measured is how #112 got a wrong one in the first place.
| Name |
Last commit
|
Last update |
|---|---|---|
| .. | ||
| at | Loading commit data... | |
| bridge | Loading commit data... | |
| foundry | Loading commit data... | |
| pulsar-parvagues-hud | Loading commit data... | |
| pvlint | Loading commit data... | |
| tests | Loading commit data... | |
| README.md | Loading commit data... | |
| analyze_samples.py | Loading commit data... | |
| button_roles.py | Loading commit data... | |
| check-boot-blocks.py | Loading commit data... | |
| check-boot.sh | Loading commit data... | |
| check-drift.sh | Loading commit data... | |
| check-mix.py | Loading commit data... | |
| check-tracks.sh | Loading commit data... | |
| control-lens.py | Loading commit data... | |
| deshadow-helpers.py | Loading commit data... | |
| fan_check.sh | Loading commit data... | |
| fix-button-roles.py | Loading commit data... | |
| fix-mute-roles.py | Loading commit data... | |
| gen_tokens.py | Loading commit data... | |
| gen_ts_types.py | Loading commit data... | |
| gig-log.py | Loading commit data... | |
| gig-up.sh | Loading commit data... | |
| gig_record.sh | Loading commit data... | |
| lcxl-init.py | Loading commit data... | |
| lcxl-leds-watch.service | Loading commit data... | |
| lcxl-leds.py | Loading commit data... | |
| lcxl_grid.json | Loading commit data... | |
| lcxl_grid.py | Loading commit data... | |
| migrate-columns.py | Loading commit data... | |
| mock-lcxl.py | Loading commit data... | |
| mute.tidal | Loading commit data... | |
| orphan-orbits.py | Loading commit data... | |
| probe-chain.py | Loading commit data... | |
| sample_tfidf.py | Loading commit data... | |
| set-coherence.py | Loading commit data... | |
| setlist_samples.py | Loading commit data... | |
| shipowiz.py | Loading commit data... | |
| silent-eval.py | Loading commit data... | |
| solo.tidal | Loading commit data... | |
| surface-columns.py | Loading commit data... | |
| take-lens.py | Loading commit data... | |
| tempo-lens.py | Loading commit data... | |
| tidal-remote.py | Loading commit data... | |
| tools.png | Loading commit data... | |
| unmute.tidal | Loading commit data... | |
| unsolo.tidal | Loading commit data... |