Uh oh!
There was an error while loading. Please reload this page.
fix(release): quarantine the RetroArch replay gate, and say what that costs - #41
Merged
Merged
Conversation
… costs This is a reduction in release coverage, taken deliberately. The RetroArch same-process replay assertion failed four times before a fix to the frame-advance barrier and twice after it, against three passes. Roughly 40% on a job that gated every release. The divergence is real and unexplained: two replays of ONE boot state and ONE input log, in ONE process, agree byte for byte to emuFrame 811 and then differ on channel values at IDENTICAL frame numbers, which rules out a miscounted advance. The alternative to quarantine is what actually happened twice on 2026-08-27. The job was rerun until it went green, and the release proceeded. That launders a red into a green, which is the precise failure the gate was built in 0.9.0 to stop. A gate everyone reruns past is worse than one that states its own limits, because the first trains people to ignore red and the second does not. The job still runs on every pull request and its result is still visible. What changed is that a release no longer CLAIMS RetroArch replay as a verified property. Two test cases encoded RetroArch as required and both are updated rather than deleted. A red required job still refuses, asserted now on ALE. The green-job- with-a-skipped-step property, which was measured on RetroArch's conditional gate, is asserted on stable-retro, which is still required and has the same shape. A new case asserts the quarantine itself, so restoring RetroArch to the required set breaks that case on purpose and makes the restoration conscious.
Uh oh!
There was an error while loading. Please reload this page.
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 freeto 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.
This is a reduction in release coverage, taken deliberately. Closes nothing; tracks under #40.
Why
The RetroArch same-process replay assertion failed 4 times before a fix to the frame-advance barrier and twice after it, against 3 passes. Roughly 40% on a job that gated every release.
The divergence is real and unexplained: two replays of one boot state and one input log, inside one process, agree byte for byte to
emuFrame 811and then differ on channel values at identical frame numbers, which rules out a miscounted advance.The alternative was worse, and I did it twice today
Rerun the job until it goes green, then tag. That launders a red into a green — the precise failure this gate was built in 0.9.0 to stop. A gate everyone reruns past is worse than one that states its own limits: the first trains people to ignore red, the second does not.
What changes and what does not
The job still runs on every pull request and its result is still visible. What changed is that a release no longer claims RetroArch replay as a verified property.
Tests updated, not deleted
Two cases encoded RetroArch as required:
requiredCiJobsbreaks that case on purpose, which makes the restoration a conscious act rather than a silent one.Local: 20 of 20 test files, boundary check, 0 typecheck errors.