Skip to content

release: prepare Codewhale v0.9.12 source (bump + CHANGELOG from merged PRs; rc grammar) - #5744

Draft
Hmbown wants to merge 4 commits into
mainfrom
release/0.9.12-prep-20260830
Draft

release: prepare Codewhale v0.9.12 source (bump + CHANGELOG from merged PRs; rc grammar)#5744
Hmbown wants to merge 4 commits into
mainfrom
release/0.9.12-prep-20260830

Conversation

@Hmbown

@Hmbown Hmbown commented Aug 30, 2026

Copy link
Copy Markdown
Owner

Draft — source prep for v0.9.12. Do not merge until the founder cuts the release.

  • Commit 1: workspace/npm/runtime-sdk/VS Code extension versions → 0.9.12 with locks; CHANGELOG.md gains ## [0.9.12] - Unreleased candidate (113 bullets derived from every PR merged since v0.9.11: Added 40, Changed 23, Fixed 33, Security 3, Removed 2, Contributors 12) under a fresh empty [Unreleased]; compare links; crates/tui/CHANGELOG.md synced.
  • Commit 2 (drop-able): lets vX.Y.Z-rc.N flow through prepare-release.sh / check-versions.sh / auto-tag / release.yml (prerelease flag, npm --tag next, GHCR latest gated, Homebrew skipped) — the chain rejected rc tags at every layer before this.

Receipts

prepare-release.sh 0.9.12 and check-versions.sh exit 0 ("Version state OK: workspace=0.9.12, npm=0.9.12, npm-binary=0.9.12, lockfile in sync"; 41 linked issue references checked); sync-changelog.sh --check up to date; cargo check -p codewhale-cli --locked Finished; release-version + prepare-release script tests pass. --require-dated-release correctly refuses the undated section until the cut.

Release-manager review: fix-needed before any tag

P0/P1 re-verification vs main: #5566#5567#5568#5552#5557#5553 ✅ · #5569 partial · #5572 partial · #4394 partial · #5543 not on main. Tracker #5573 still names the stale integration branch.

No-Issue: release source preparation for v0.9.12 (tracker #5573)

🤖 Generated with Claude Code

https://claude.ai/code/session_014aDEyM2a4pPZ9qqMDrP5YX

CodeWhale Bot added 4 commits August 30, 2026 11:23
Turn the CHANGELOG [Unreleased] notes into the `## [0.9.12] - Unreleased
candidate` section: intro, Added/Changed/Fixed/Security/Removed, and a
Contributors block crediting every external handle. Every pull request
merged into main since v0.9.11 (83 PRs, v0.9.11..2f200ee) is referenced
by number; direct integrator merges (R1 finite budgets, whale-art removal,
review-key identity, R9, S1 hardening, Tideline shell, review suggestions)
are described inline. A fresh empty [Unreleased] sits above it and the
compare links move to v0.9.12.

Bump every version-bearing file with scripts/release/prepare-release.sh
0.9.12: workspace Cargo.toml and the internal codewhale-* pins, Cargo.lock,
npm/codewhale (version + codewhaleBinaryVersion), npm/runtime-sdk, the VS
Code extension and lock, package-lock.json workspace records, the
remote-smoke default tag, public-surface-facts sourceCandidate,
web/lib/facts.generated.ts, and the crates/tui CHANGELOG slice. docs/INSTALL.md
now describes the v0.9.12 source candidate.

This is the source-prep commit, not the release: the heading keeps the
runbook's `Unreleased candidate` placeholder, so auto-tag.yml and
release.yml (`check-versions.sh --require-dated-release`) refuse to tag it
until the heading carries a real date.

Verified: ./scripts/release/check-versions.sh (Feature release-note
receipts OK: 41 linked issue reference(s) checked in v0.9.11..HEAD; Version
state OK: workspace=0.9.12, npm=0.9.12, npm-binary=0.9.12, lockfile in
sync), ./scripts/release/check-ohos-deps.sh OK, scripts/sync-changelog.sh
--check, prepare-release.test.sh, check-feature-release-notes.test.sh,
generate-release-body.test.sh.

Signed-off-by: CodeWhale Bot <bot@codewhale.net>
Droppable follow-up to the 0.9.12 source-prep commit: the chain refused any
prerelease at every layer, and the layers that would have accepted the
string would have published it as the stable channel (GitHub `latest`,
npm `latest`, GHCR `latest`, the Homebrew tap).

One grammar, one place. scripts/release/release-version.sh defines the
accepted shapes (`X.Y.Z` and `X.Y.Z-rc.N`, N >= 1) plus predicates
(release_version_is_valid, release_tag_is_valid,
release_version_is_prerelease, release_version_npm_dist_tag);
release-version.test.sh pins valid/invalid shapes, tag forms, the
prerelease predicate, the npm dist-tag mapping, and the grep form. It runs
in the CI release-helper contract step.

Consumers now source it or mirror it: prepare-release.sh (argument check
plus the README/INSTALL stale-version captures), verify-remote-tag.sh,
require-release-tag-checkout.sh, check-versions.sh (compare-link previous
tag, generated-facts version, INSTALL wrapper pointer, remote-smoke default
tag), packaging/aur/render.sh (a candidate renders nothing: AUR pkgver
cannot carry a hyphen and the package is stable-only),
ensure-release-assets-absent.js, web/scripts/check-docs.mjs, auto-tag.yml,
and release.yml.

Publication semantics for a candidate: release.yml's resolve job emits
`prerelease` and `npm_dist_tag` outputs; the GitHub Release is flagged
prerelease (so /releases/latest, the website's published-release fact, and
the self-updater ignore it); npm publishes with `--tag next`; the GHCR
`latest` tag is gated off; the Homebrew tap job is skipped;
release-republish.yml refuses candidates because it rewrites stable
channels. release-workflows.test.js asserts each of those. The runbook's
Version Coordination section documents the flow.

Verified: release-version.test.sh, verify-remote-tag.test.sh,
require-release-tag-checkout.test.sh, prepare-release.test.sh (fixture now
stages the grammar file), packaging/aur/render.test.sh,
ensure-release-assets-absent.test.js (6/6), release-workflows.test.js,
check-versions.sh on 0.9.12 (unchanged result), shellcheck -x on every
touched script, actionlint on release/auto-tag/republish (clean; ci.yml
carries 12 pre-existing findings unrelated to the one-line test addition).
Scratch-clone dry run: prepare-release.sh 0.9.12-rc.1 bumps every field
and check-versions passes; --require-dated-release refuses the candidate
heading and passes once dated with a `...v0.9.12-rc.1` compare link;
generate-release-body.sh finds the section; render.sh skips with exit 0;
require-release-tag-checkout.sh and verify-remote-tag.sh accept
v0.9.12-rc.1 and refuse v0.9.12-beta.1 / v0.9.12-rc.0.

Signed-off-by: CodeWhale Bot <bot@codewhale.net>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant