Fix deterministic CI race conditions - #2001
Merged
Aaronontheweb merged 12 commits intoAug 19, 2026
Merged
Conversation
Aaronontheweb
enabled auto-merge (squash)
August 19, 2026 03:27
Aaronontheweb
disabled auto-merge
August 19, 2026 03:53
A failed tool request left the state on Loading. The user had no way back to the server list except quit. The catch block now returns the state to ServerList. The status message still shows the error. A new test proves the fix: the state returns to ServerList when the daemon request fails.
A tape run can fail once but still reach a stable two-capture quorum on a later attempt. The quorum loop did not remove the earlier tape failure from the failed list. The fix restores the rollback from the deleted retry helper: a clean quorum now removes the earlier failure entry. A clean retry is not a failure.
Aaronontheweb
enabled auto-merge (squash)
August 19, 2026 04:02
Aaronontheweb
disabled auto-merge
August 19, 2026 04:04
Aaronontheweb
enabled auto-merge (squash)
August 19, 2026 04:28
Aaronontheweb
disabled auto-merge
August 19, 2026 04:36
This was referenced Aug 19, 2026
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.
Summary
Root causes
A shared static helper ran real PowerShell processes during test class setup.
One slow probe then poisoned all tests that used the type.
The MCP doctor tests depended on live process and network behavior.
Those dependencies did not belong in the unit test boundary.
The subagent approval test also started shell parser and process paths.
The test only needs to prove the approval bridge contract.
The VHS Screenshot command could read an old browser frame.
The debug GIF contained the correct final state after the PNG showed an old state.
The harness now records lossless PNG frames and selects the final frame after VHS exits.
A baseline-driven retry can hide a stable visual regression.
The capture quorum selects a stable frame without baseline input.
The MCP permission page changed UI state outside the Termina render loop.
A repeated server selection could also overlap the active tool request.
The view model now owns both state order and render-loop dispatch.
The smoke setup and installer validation depended on apt mirrors.
One apt step consumed the ten-minute job limit during the fifth CI trial.
The Linux gates now use fixed upstream files with SHA-256 verification.
The installer smoke test discovered fish and zsh before it replaced PATH.
It then used bare command names after the PATH replacement.
The test now reuses each resolved executable path.
A cold session join used two acknowledgement paths.
The subscriber received its acknowledgement as the temporary Ask actor timed out.
The delivery tests now wait on the subscriber acknowledgement after recovery.
The terminal sweep test wrote definitions before the manager completed its startup sweep.
The startup sweep could delete those definitions before the fault control became visible.
Two cleanup tests also used a file and directory collision to simulate a delete failure.
The store now accepts an internal required delete action for deterministic fault tests.
All six terminal-sweep tests use a health response as their startup barrier.
Validation
ceed5e24passed eight consecutive full CI trials.Merge condition
The administrator approved the merge after eight consecutive full CI trials.
Related to #1981, #1987, #1988, #1989, and #1995.