test(pep): look for the rescue lane, not for the lowest-numbered one - #98
Merged
Conversation
TestAutoFlowInstallsTCPRescueAfterAllQUICLanesFail read healthyLanes()[0] and asked whether that lane was TCP. healthyLanes sorts by lane id and the QUIC lane is created first, so the original lane holds position zero until it is evicted -- a TCP rescue could therefore be fully installed while the check still saw a QUIC lane and the test kept waiting for a state it had already reached. That is not a timing tolerance problem, it is the wrong question: the test means "is there a TCP lane" and asked "does a TCP lane happen to sort first". It now scans every healthy lane. The failure was not theoretical. This test failed roughly half of recent CI runs on ubuntu-24.04 amd64 while passing on the five other platforms, it failed pull request #93 before that change merged, and it failed the build gate of the v0.6.0 release workflow, which is what stopped the tag from publishing on its first attempt. The deadline also moves from 5s to 20s. Eight consecutive local runs now complete in 6.5s total, so the rescue itself takes under a second and the extra budget costs a passing run nothing; it only stops a loaded runner from being scored as a failed rescue. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011HCTFdNai8pNgSyJwV8vGW
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.
TestAutoFlowInstallsTCPRescueAfterAllQUICLanesFailhas been failing roughly half of recent CI runs onubuntu-24.04amd64 while passing on the other five platforms. It failed #93 before that change merged, and it failed thebuildgate of the v0.6.0 release workflow, which is what stopped the tag from publishing on its first attempt.It is the wrong question, not a tight timeout
healthyLanes()ends withsort.Slice(lanes, func(i, j int) bool { return lanes[i].id < lanes[j].id }), and the QUIC lane is created first. So the original lane holds position zero until it is evicted from the healthy set — and a TCP rescue could be fully installed whilelanes[0]still reported a QUIC lane, leaving the test spinning until its deadline for a state it had already reached.The test means "is there a TCP lane" and was asking "does a TCP lane happen to sort first". It now scans every healthy lane.
Timing
The deadline moves 5s → 20s as well. Eight consecutive local runs complete in 6.5s total — under a second each — so the rescue is fast and the extra budget costs a passing run nothing. It only stops a loaded runner from being scored as a failed rescue.
Not in v0.6.0
The
v0.6.0tag is immutable and predates this commit, so this ships in the next release. v0.6.0's own artifacts are built from the tagged tree, which a greenv0.6.0-rc.2validated across all six platforms.🤖 Generated with Claude Code
https://claude.ai/code/session_011HCTFdNai8pNgSyJwV8vGW