release: the check of a published release answers with every question, not the first - #42
Merged
Merged
Conversation
…, not the first The job that checks a published release stopped at the first red step, so the questions behind it were never asked and nothing said so. Measured on the v0.2.0 publish, 2026-08-28. The step running the two commands offline went red. The three steps after it were skipped: whether every Windows program carries our certificate, whether the page promises what was just checked, and whether a full release is the one people are offered. So three questions about a published release went unasked, and the run reported one problem. One of those three would have gone red as well. The published notes carry none of the three sentences the notes step looks for, measured the same way. That turns a list into a queue, and every trip round the queue costs a publish. This is the rule a recipe already follows when it refuses, RC7, applied to the one gate standing over what strangers download. Each check now carries continue-on-error and an id, and a final step reads all seven and decides. It reads outcome rather than conclusion, because continue-on-error rewrites conclusion to success and a verdict reading that would pass however the checks went. The macOS job is left alone. It has a single check, so there is nothing for a first failure to hide. The guard holds every check between the download and the verdict to being collected, so a check added later cannot quietly go back to covering for the ones behind it. Three mutations, all caught. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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 job that checks a published release stopped at the first red step, so the questions behind it were never asked and nothing said so.
Measured on the v0.2.0 publish, 2026-08-28
Not a race - the attestation existed thirteen minutes before the publish.
Three questions about a published release went unasked, and the run reported one problem. One of the three would have gone red as well: the published notes carry none of the three sentences the notes step looks for, measured the same way.
That turns a list into a queue, and every trip round the queue costs a publish. This is the rule a recipe already follows when it refuses,
RC7, applied to the one gate standing over what strangers download.What changes
Each check carries
continue-on-errorand anid, and a final step reads all seven and decides.It reads
outcomerather thanconclusion.continue-on-errorrewritesconclusionto success and leavesoutcomealone, so a verdict readingconclusionwould pass however the checks went - a gate that cannot fail, which is worse than the problem being fixed.The macOS job is left alone. It has a single check, so there is nothing for a first failure to hide.
Guard
TestNoReleaseCheckCanHideTheOnesBehindItholds every step between the download and the verdict to being collected into it, so a check added later cannot quietly go back to covering for the ones behind it. It also refuses a verdict that readsconclusion, and one with no way to fail.Three mutations, all caught: a check that stops the job, a verdict reading
conclusion, and a verdict that stops running after a red check.Checks
preflight --quickgreen on all twelve,tools/probes/workflow-shell.pyclean on everyrun:step,stalenessclean at 730 entries.🤖 Generated with Claude Code