feat(gate): a camera passes only if a frame came out of a decoder - #227
Merged
Conversation
The gate's older signals cannot tell "video a viewer could watch" from "bytes of the right shape". media_stats.packets counts what the bridge forwarded; recorded_bytes measures a file written by a -c copy pipeline that never looks inside a packet. That is precisely the defect where undecryptable packets counted as delivered media and a black stream reported healthy indefinitely. Promoted from advisory against 19 recorded attempts across three fleet runs: every PASS had decoded frames (46-262) and every NO_MEDIA had zero, so gating changes no historical verdict. It closes a hole rather than moving the bar. A probe that could not RUN does not fail the camera. If ffmpeg or ffprobe is missing on the runner, every camera would fail at once and the gate would be reporting on its own environment instead of the fleet - so that case defers to the old signals, and it is why the probe reports decode_error separately from zero frames. The verdict-site guard is a control-flow assertion: verified to fail with "_passes is never called" when the verdict goes back to reading ok alone.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The decode probe shipped advisory in #214 because the measurement had never run
against this fleet, and a gate that has never produced a number is not one to
start blocking releases with. It has now run four times. Promoting it.
Why the old signals are not enough
media_stats.packetscounts what the bridge forwarded.recorded_bytesmeasures a file written by a
-c copypipeline that never looks inside apacket. Both are satisfied by bytes of the right shape - which is not a
hypothetical, it is the exact defect #205 fixed, where undecryptable packets
counted as delivered media and a black stream reported healthy indefinitely.
Promoted against the record, not on principle
19 recorded attempts across three fleet runs:
So this closes a hole rather than moving the bar. If it had changed a verdict I
would be bringing you the disagreement instead of the change.
The case that mattered most in the design
A probe that could not RUN does not fail the camera. If ffmpeg or ffprobe is
missing on the runner, or the recording is absent, every camera would fail at
once and the gate would be reporting on its own environment rather than on the
fleet. That case defers to the old signals - and it is why the probe reports
decode_errorseparately fromdecoded_frames = 0in the first place. Thosetwo mean opposite things and collapsing them would be the same species of defect
one level up.
Tested explicitly, including that the two are not confused with each other, and
that the decode check only ever ADDS a condition - it never rescues an attempt
that delivered no media.
The verdict-site guard is a control-flow assertion, verified to fail with
_passes is never calledwhen the verdict goes back to readingokalone.Harness only. 1089 passed, 5 skipped.