Skip to content

release: the check of a published release answers with every question, not the first - #42

Merged
donislawdev merged 1 commit into
mainfrom
release/one-verdict-not-the-first-failure
Sep 2, 2026
Merged

release: the check of a published release answers with every question, not the first#42
donislawdev merged 1 commit into
mainfrom
release/one-verdict-not-the-first-failure

Conversation

@donislawdev

Copy link
Copy Markdown
Owner

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

22:22:46  the SBOM attestation is made   - success
22:35:48  the release is published
22:35:50  this job runs                  - failure

Not a race - the attestation existed thirteen minutes before the publish.

step outcome
the two commands the notes tell people to run success
the same two commands with no network to the API failure
every Windows program is signed, stamped, and by OUR certificate skipped
the page promises what was just checked skipped
a full release has to be the one people are offered skipped

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-error and an id, and a final step reads all seven and decides.

It reads outcome rather than conclusion. continue-on-error rewrites conclusion to success and leaves outcome alone, so a verdict reading conclusion would 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

TestNoReleaseCheckCanHideTheOnesBehindIt holds 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 reads conclusion, 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 --quick green on all twelve, tools/probes/workflow-shell.py clean on every run: step, staleness clean at 730 entries.

🤖 Generated with Claude Code

…, 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>
@donislawdev
donislawdev merged commit 65277b0 into main Sep 2, 2026
19 of 20 checks passed
@donislawdev
donislawdev deleted the release/one-verdict-not-the-first-failure branch September 2, 2026 14:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant