fix: a -dev endstate is always work — the post-release bump must not run red
The four-state table called '-dev but changed' half a ceremony and refused — but that state IS the mandatory post-release bump PR (bare -> X.Y.(Z+1)-dev after every release), a red run on main once per release, forever. A tree that ends -dev is by definition not a release: every such merge is work, green NOTICE no-op. Red now guards only bare endstates. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
a5910eacee
commit
fcb7ce3b7d
2 changed files with 8 additions and 5 deletions
11
.github/workflows/release.yml
vendored
11
.github/workflows/release.yml
vendored
|
|
@ -75,8 +75,10 @@ jobs:
|
|||
# trigger included. The version tells them apart, in four states:
|
||||
# -dev, unchanged → work under the label: green NOTICE
|
||||
# no-op, not a red run per infra PR
|
||||
# -dev, changed → a bump that forgot to leave -dev:
|
||||
# half a ceremony, refuse
|
||||
# -dev, changed → still a dev tree, so still work —
|
||||
# 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
|
||||
# window (ceremony landed, the -dev
|
||||
# bump has not — and cast's ENTIRE
|
||||
|
|
@ -109,8 +111,9 @@ jobs:
|
|||
echo "ceremony=no" >> "$GITHUB_OUTPUT"
|
||||
exit 0
|
||||
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
|
||||
exit 1 ;;
|
||||
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."
|
||||
echo "ceremony=no" >> "$GITHUB_OUTPUT"
|
||||
exit 0 ;;
|
||||
esac
|
||||
if [ "$base" = "$ver" ]; then
|
||||
if gh release view "$ver" > /dev/null 2>&1; then
|
||||
|
|
|
|||
|
|
@ -205,7 +205,7 @@ describe("release.yml", () => {
|
|||
// Code-unique phrasings (the workflow's own comment table paraphrases
|
||||
// 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
|
||||
"— 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
|
||||
"Refusing to guess — creating nothing.", // bare, unchanged, unreleased: refuse
|
||||
".github/scripts/release-notes.sh", // assert: notes extract
|
||||
|
|
|
|||
Loading…
Reference in a new issue