What happens
tests/e2e/seed.py writes both peaks.json and beats.json into the job
root. The pipeline writes them under stems/, and that is the only place the
endpoints look:
| Artifact |
Fixture wrote |
API reads (_beats_paths, stems.py) |
beats.json |
<job>/beats.json |
<job>/stems/beats.json |
peaks.json |
<job>/peaks.json |
<job>/stems/peaks.json |
Both 404 for the whole life of the browser suite.
Why it matters
Neither failure is loud — each degrades to a working-but-different path, so the
suite stays green while covering less than it appears to:
- Beats: the studio reports "No beat grid for this track" and every
click-track control stays disabled. The click track, the count-in and the
grid editor cannot be covered in a browser at all — while seed.py, at a
glance, looks like it covers them.
- Peaks: the studio falls back to decoding every stem for its waveforms.
The precomputed-peaks path that every real track takes is never exercised;
the fixture silently tests the fallback instead.
Expected
The fixture writes each artifact where the pipeline does, and a test asserts
the beat grid actually reaches the studio — so this class of silent
degradation fails loudly next time.
What happens
tests/e2e/seed.pywrites bothpeaks.jsonandbeats.jsoninto the jobroot. The pipeline writes them under
stems/, and that is the only place theendpoints look:
_beats_paths,stems.py)beats.json<job>/beats.json<job>/stems/beats.jsonpeaks.json<job>/peaks.json<job>/stems/peaks.jsonBoth 404 for the whole life of the browser suite.
Why it matters
Neither failure is loud — each degrades to a working-but-different path, so the
suite stays green while covering less than it appears to:
click-track control stays disabled. The click track, the count-in and the
grid editor cannot be covered in a browser at all — while
seed.py, at aglance, looks like it covers them.
The precomputed-peaks path that every real track takes is never exercised;
the fixture silently tests the fallback instead.
Expected
The fixture writes each artifact where the pipeline does, and a test asserts
the beat grid actually reaches the studio — so this class of silent
degradation fails loudly next time.