Base releases are explicit release ceremonies, not automatic side effects of ordinary pull requests.
Use this checklist when preparing and publishing a new Base release such as
0.3.1 or 0.4.0.
The release spans two repositories:
codeforester/baseowns Base source, release notes,VERSION, Git tags, and GitHub Releases.codeforester/homebrew-baseowns the Homebrew formula that installs published Base releases.
The Homebrew tap update happens after the Base tag and GitHub Release exist.
The formula points at a versioned tag archive and records that archive's
sha256, so the archive must be available before the formula can be updated and
validated.
Do not update VERSION on every merged pull request.
VERSION records the latest published Base release. Ordinary feature, fix,
documentation, and maintenance PRs leave it unchanged. A release-prep PR updates
VERSION once the next release number has been chosen.
Keep upcoming changes under the Unreleased section in CHANGELOG.md until a
release-prep PR moves them into a dated release section.
Base-managed repositories can declare a release: section in
base_manifest.yaml with the version file, changelog, tag prefix, GitHub
repository, GitHub Release title, and optional Homebrew handoff metadata.
The inspection commands are read-only:
basectl release check --version X.Y.Z
basectl release plan --version X.Y.Z
basectl release notes --version X.Y.ZUse check before publishing to validate the version file, changelog section,
Git worktree cleanliness, current branch, GitHub CLI authentication, and local
and remote tag availability. Use plan to print the GitHub release target and
downstream handoff requirements. Use notes to print the changelog body
intended for the GitHub Release.
Publishing is guarded:
basectl release publish --version X.Y.Z --dry-run
basectl release publish --version X.Y.Z
basectl release publish --version X.Y.Z --yespublish reuses the release checks, refuses existing tags or GitHub Releases,
creates an annotated tag, pushes the tag, and creates the GitHub Release from
the changelog section. It does not update the Homebrew tap; it prints the tap
handoff checklist when release.homebrew is declared.
Complete these steps in codeforester/base:
-
Choose the release version and create or use a GitHub issue for the release artifact work.
-
Create a release-prep branch and worktree from
origin/master. -
Update release metadata:
VERSION- README version badge and current-release text
CHANGELOG.md, moving relevantUnreleasedentries into the new release section
-
Validate the release-prep PR:
git diff --check bin/base-test
-
Merge the release-prep PR into
master. -
Sync local
master. -
Dry-run the guarded publish command:
basectl release publish --version X.Y.Z --dry-run
-
Publish the GitHub-side release artifacts:
basectl release publish --version X.Y.Z
Use
--yesonly when running from a trusted non-interactive release shell. -
Confirm the release tag and GitHub Release are visible on GitHub.
Complete these steps in codeforester/homebrew-base after the Base tag exists:
-
Create a Homebrew tap update issue or PR for the new Base version.
-
Update
Formula/base.rb:urlto the new Base tag archivesha256to the checksum of that archiveversionto the new Base version
-
Compute the archive checksum from the published tag:
curl -fsSL https://github.com/codeforester/base/archive/refs/tags/vX.Y.Z.tar.gz | shasum -a 256 -
Validate the formula from the tap repository:
brew install --build-from-source Formula/base.rb brew test codeforester/base brew audit --new --formula Formula/base.rb -
Open and merge the tap PR.
-
Smoke-test the consumer upgrade path:
brew update brew upgrade codeforester/base/base
-
Before 1.0.0, complete the Homebrew Upgrade Rehearsal against a release candidate or equivalent test formula. Record the exact commands, host facts, pre-upgrade state, post-upgrade checks, and any follow-up issues. Do not close the rehearsal issue until
brew upgrade codeforester/base/baseand the post-upgrade Base project checks pass on a qualified host.
After the Base release PR and Homebrew tap PR are merged, clean up their worktrees and branches. Keep the release issue or linked issue comments updated with the Base release URL and Homebrew tap PR URL so the release record has both halves of the ceremony.