You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
qa: a replay whose rate nobody measured may decline to name its backend
CI caught this on the 0.4.1 candidate, which is what CI is for. The assertion
added with #135 read "a pack that carries a replay names its backend", reasoning
that the writer always knows which path it chose. It does. It has nowhere legal
to put it.
`backend` rides INSIDE `media.cadence`, and SPEC §5.3 makes `achieved_fps` and
`worst_stall_ms` REQUIRED members of it. `cadenceSummary()` therefore returns null
when nothing could be measured, because the same section forbids reporting a rate
nobody measured. A 1144 ms replay with two fragments on a hosted runner measured
no rate, wrote no cadence, and turned the job red over a perfectly good pack.
The comment beside the writer said exactly this — "a backend with no measured rate
to sit next to has nowhere legal to go" — and the assertion contradicted it. The
code was right and the check was wrong.
What survives is the invariant the writer really guarantees: every cadence it
builds carries a backend, unconditionally. So an absent cadence is accepted, and a
cadence WITHOUT a backend is rejected — which is the shape a regression would
actually produce, and the shape the old fixture was not testing. The fixture is
now two: one pack with no cadence at all, one with a cadence stripped of its
backend.
#62's fallback story keeps its machine-checkable end wherever a rate exists, which
is every capture long enough to measure one. The captures too short to measure a
rate were never the interesting case for "which path produced this".
Gate: PASSED. check:pack-assertions 46 passed.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>