diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 21c4033..4545593 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -97,7 +97,9 @@ jobs: # time the flow itself is improved. Everything in between is a # half-ceremony and dies loudly: # -dev, unchanged → work under the label: NOTICE + green no-op - # -dev, changed → a bump that forgot to leave -dev: 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, # already released → work merged in the post-release window # (ceremony landed, the -dev bump has not): @@ -121,8 +123,9 @@ jobs: echo "ceremony=no" >> "$GITHUB_OUTPUT" exit 0 fi - echo "VERSION changed ('$base_ver' -> '$ver') but is still -dev — half a ceremony; a release PR ships a bare X.Y.Z. Refusing." >&2 - exit 1 ;; + echo "NOTICE: VERSION changed ('$base_ver' -> '$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" = "$ver" ]; then if gh release view "$ver" -R "$GITHUB_REPOSITORY" >/dev/null 2>&1; then diff --git a/test/release.sh b/test/release.sh index 5bdfaa1..b2c2133 100644 --- a/test/release.sh +++ b/test/release.sh @@ -148,8 +148,8 @@ check "release.yml: only the 'release' label carries the intent" 0 "" \ # half-ceremony refuses. Pin each verdict's message and the gating output. check "release.yml: decide — dev-tree work no-ops green (not a red run per infra PR)" 0 "" \ grep -qF "release-flow work under the release label, not a ceremony" "$RY" -check "release.yml: decide — a half-ceremony (-dev but changed) refuses" 0 "" \ - grep -qF "half a ceremony" "$RY" +check "release.yml: decide — a -dev endstate is always work (the bump PR no-ops green)" 0 "" \ + grep -qF "a dev tree is by definition not a release" "$RY" check "release.yml: decide — post-release-window work no-ops green" 0 "" \ grep -qF "release-flow work merged in the post-release window" "$RY" check "release.yml: decide — bare, unchanged, never released refuses to guess" 0 "" \