@@ -53,11 +53,11 @@ jobs:
5353 # `cache: pnpm` can locate the pnpm store path (same order as ci.yml).
5454 - uses : pnpm/action-setup@v4
5555 with :
56- version : 11
56+ version : 11.21.0
5757
5858 - uses : actions/setup-node@v4
5959 with :
60- node-version : " 24"
60+ node-version : " 24.19.0 "
6161 registry-url : https://registry.npmjs.org
6262 cache : pnpm
6363
@@ -171,12 +171,15 @@ jobs:
171171 # additionally appends a merge-instruction line; the Release body is
172172 # the section only).
173173 # Guard on the file existing: under `set -e`, awk on a missing
174- # CHANGELOG.md exits 2 and aborts the step before the fallback could
175- # run. The version anchor is prefix-safe: the pattern is anchored at
176- # `^## \[<version>\]`, so `0.1.1` cannot match a `## [0.1.10]` header.
177- # Fall back to git log (nearest ancestor tag of HEAD, full history
178- # when no tag exists) only when the file or the section is missing,
179- # e.g. a release PR prepared before CHANGELOG.md existed.
174+ # CHANGELOG.md exits 2 and aborts the step. The version anchor is
175+ # prefix-safe: the pattern is anchored at `^## \[<version>\]`, so
176+ # `0.1.1` cannot match a `## [0.1.10]` header.
177+ # No git-log fallback on the Release side: every release PR prepared
178+ # by the current prep writes its CHANGELOG section before the PR
179+ # opens, so a missing section is a contract break — fail loudly
180+ # instead of shipping an empty GitHub Release (mirror
181+ # dsh-llm-fallbacks; an empty Release is a silent quality
182+ # regression, not a recoverable one).
180183 VERSION="${{ steps.ver.outputs.version }}"
181184 if [ -f CHANGELOG.md ]; then
182185 # Escape regex metacharacters in the version inside awk (the gsub
@@ -194,11 +197,8 @@ jobs:
194197 ' CHANGELOG.md > /tmp/notes.md
195198 fi
196199 if [ ! -s /tmp/notes.md ]; then
197- PREV_TAG=$(git describe --tags --abbrev=0 HEAD 2>/dev/null || echo "")
198- git log --oneline --first-parent ${PREV_TAG:+$PREV_TAG..}HEAD > /tmp/notes.md
199- if [ ! -s /tmp/notes.md ]; then
200- echo "No commits between releases." > /tmp/notes.md
201- fi
200+ echo "::error::No changelog section found for v${VERSION} in CHANGELOG.md; refusing to create an empty GitHub Release."
201+ exit 1
202202 fi
203203
204204 - name : Create + push tag
0 commit comments