release: prepare Codewhale v0.9.12 source (bump + CHANGELOG from merged PRs; rc grammar) - #5744
Draft
Hmbown wants to merge 4 commits into
Draft
release: prepare Codewhale v0.9.12 source (bump + CHANGELOG from merged PRs; rc grammar)#5744Hmbown wants to merge 4 commits into
Hmbown wants to merge 4 commits into
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Draft — source prep for v0.9.12. Do not merge until the founder cuts the release.
CHANGELOG.mdgains## [0.9.12] - Unreleased candidate(113 bullets derived from every PR merged sincev0.9.11: Added 40, Changed 23, Fixed 33, Security 3, Removed 2, Contributors 12) under a fresh empty[Unreleased]; compare links;crates/tui/CHANGELOG.mdsynced.vX.Y.Z-rc.Nflow throughprepare-release.sh/check-versions.sh/ auto-tag /release.yml(prerelease flag, npm--tag next, GHCRlatestgated, Homebrew skipped) — the chain rejected rc tags at every layer before this.Receipts
prepare-release.sh 0.9.12andcheck-versions.shexit 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 --checkup to date;cargo check -p codewhale-cli --lockedFinished; release-version + prepare-release script tests pass.--require-dated-releasecorrectly refuses the undated section until the cut.Release-manager review: fix-needed before any tag
codex/v0912-integration-20260823branch — re-land PR fix(subagents): persist child approval receipts #5584's content on main (or reopen Persist child tool approvals through the durable receipt path #5543 and drop it from the milestone).b3484165e) never re-landed on main; the Unix half did.v0.9.12milestone, main CI queued/cancelled at head, npm Trusted Publishing E404 on the last two releases, 124 CodeQL alerts, winget manifests stale at 0.9.6.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