feat: merging a release-labeled PR is the release #112

Merged
dan-claude-bot merged 9 commits from feat/release-on-merge into main 2026-07-19 17:12:19 +00:00
2 changed files with 8 additions and 5 deletions
Showing only changes of commit fcb7ce3b7d - Show all commits

View file

@ -75,8 +75,10 @@ jobs:
# trigger included. The version tells them apart, in four states: # trigger included. The version tells them apart, in four states:
# -dev, unchanged → work under the label: green NOTICE # -dev, unchanged → work under the label: green NOTICE
# no-op, not a red run per infra PR # no-op, not a red run per infra PR
# -dev, changed → a bump that forgot to leave -dev: # -dev, changed → still a dev tree, so still work —
# half a ceremony, refuse # the post-release bump PR above all
# (bare -> -dev after every release):
# green NOTICE no-op
# bare, unchanged, released → work merged in the post-release # bare, unchanged, released → work merged in the post-release
# window (ceremony landed, the -dev # window (ceremony landed, the -dev
# bump has not — and cast's ENTIRE # bump has not — and cast's ENTIRE
@ -109,8 +111,9 @@ jobs:
echo "ceremony=no" >> "$GITHUB_OUTPUT" echo "ceremony=no" >> "$GITHUB_OUTPUT"
exit 0 exit 0
fi fi
echo "version changed ('$base' -> '$ver') but is still -dev — half a ceremony; a release PR ships a bare X.Y.Z (CONTRIBUTING.md, Releasing) — creating nothing." >&2 echo "NOTICE: version changed ('$base' -> '$ver') and still ends -dev — a dev tree is by definition not a release. This is work (the post-release bump, a renumber); nothing to publish."
exit 1 ;; echo "ceremony=no" >> "$GITHUB_OUTPUT"
exit 0 ;;
esac esac
if [ "$base" = "$ver" ]; then if [ "$base" = "$ver" ]; then
if gh release view "$ver" > /dev/null 2>&1; then if gh release view "$ver" > /dev/null 2>&1; then

View file

@ -205,7 +205,7 @@ describe("release.yml", () => {
// Code-unique phrasings (the workflow's own comment table paraphrases // Code-unique phrasings (the workflow's own comment table paraphrases
// these states, so the pins anchor on the echo strings, not prose): // these states, so the pins anchor on the echo strings, not prose):
"release-flow work under the release label, not a ceremony. Nothing to publish.", // work no-op, green "release-flow work under the release label, not a ceremony. Nothing to publish.", // work no-op, green
"— half a ceremony; a release PR ships a bare X.Y.Z", // -dev but changed: refuse "a dev tree is by definition not a release", // -dev endstate: always work (the bump PR no-ops green)
"release-flow work merged in the post-release window (before the -dev bump)", // window no-op "release-flow work merged in the post-release window (before the -dev bump)", // window no-op
"Refusing to guess — creating nothing.", // bare, unchanged, unreleased: refuse "Refusing to guess — creating nothing.", // bare, unchanged, unreleased: refuse
".github/scripts/release-notes.sh", // assert: notes extract ".github/scripts/release-notes.sh", // assert: notes extract