fix(release): a build that is still running is not a failed build - #801
Open
remyluslosius wants to merge 1 commit into
Open
fix(release): a build that is still running is not a failed build#801remyluslosius wants to merge 1 commit into
remyluslosius wants to merge 1 commit into
Conversation
Found on the v0.7.1 tag. The release was tagged while the main-branch Quality
gate was still running, and `make release-status` reported
FAIL Q1 Quality and security gates
on a job that had not finished. GitHub leaves conclusion empty for an
in-progress run, and the checker read empty as non-success.
That is the same error this tool exists to prevent: presenting the absence of
data as a fact. "The release build failed" and "the release build has not
finished" are different claims, and the first one sends someone looking for a
break that does not exist.
PENDING is now its own status. It still blocks, so nobody promotes a candidate
whose build has not finished, but it no longer accuses. Where several entries
exist for one check name, a finished result outranks a pending one, so a stale
queued entry from a re-run cannot mask a completed pass.
Two tests, and the one that matters asserts PENDING is in BAD and is not FAIL:
blocking and accusing have to stay separable.
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.
Found by using the tool on the real v0.7.1 tag.
The release was tagged while the main-branch Quality gate was still running,
and
make release-statusreported:on a job that had not finished. GitHub leaves
conclusionempty for anin-progress run, and the checker read empty as non-success.
Why this matters more than a wrong label
This is the same error the tool exists to prevent: presenting the absence of
data as a fact. "The release build failed" and "the release build has not
finished" are different claims, and the first sends someone looking for a break
that does not exist - at exactly the moment they are deciding whether to
promote a candidate.
It is the third time this shape has come up in this work.
len(t.Steps)recorded instead of the journal.
Plan.Validatorsrendered as "no validators"when the planner never populates it. Now an empty conclusion read as a verdict.
The fix
PENDINGis its own status. It still blocks, so nobody promotes acandidate whose build has not finished, but it no longer accuses.
Where several check runs share a name - normal after a re-run - a finished
result outranks a pending one, so a stale queued entry cannot mask a completed
pass.
Tests
The one that matters asserts
PENDING in BADandPENDING != FAIL.Blocking and accusing have to stay separable, and a future refactor that
collapses them would fail here.