* fix(#690): promote CHANGELOG 1.3.x + gate release-notes promotion
/gsd:update showed an empty "What's New" preview after updating to 1.3.1
because CHANGELOG.md's 1.3.x content was never promoted out of [Unreleased]
into dated sections, so `scripts/changeset/cli.cjs extract` returned exit 2
("no releases in range").
- CHANGELOG.md: split [Unreleased] into dated [1.3.0] and [1.3.1] sections
(1.3.1 = hono advisory bump + installer-migration checksum self-heal, #670;
1.3.0 = the feature release), restoring an empty [Unreleased].
- scripts/changeset/cli.cjs: new `verify` subcommand that exits non-zero when
CHANGELOG has no dated `## [x.y.z]` heading for a version; hoist shared
stripV/resolveChangelogPath helpers used by extract + verify.
- .github/workflows/release.yml: gate the finalize job on `verify` (after the
build, before tag/publish) so an unpromoted CHANGELOG can never ship again.
- gsd-core/workflows/update.md: move `rm -f $CHANGELOG_TMP` after the
human-readable extract re-run so the preview no longer degrades to
"(changelog unavailable)".
- tests: regression guard for the 1.3.x headings + extract range + verify
command coverage (present/absent/undated/v-prefixed/--json/prerelease).
Closes#690
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* chore(#690): add changeset fragment for #694
Fixed-type fragment for the user-facing /gsd:update preview fix and the
release-notes promotion gate.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>