Repository navigation
Release runbook
This page is a map, not the checklist. The authority is RELEASING.md for plugin releases and ah-engine/RELEASING.md for engine releases. Follow those files step by step; if this page and those files disagree, the files win.
Note
Flow: short-lived branch → dev (no CI) → pull request to main (the gate) → tag → GitHub Release. Tags are immutable.
| Plugin release | Engine release | |
|---|---|---|
| Tag | vX.Y.Z |
ah-engine-vX.Y.Z |
| Version source |
plugins/anti-hall/.claude-plugin/plugin.json (the Codex manifest, root package.json and package-lock.json must match) |
ah-engine/Cargo.toml, pinned for the plugin in ah-engine.lock
|
| What ships | The plugin directory, installed from main
|
Prebuilt binaries attached to a GitHub Release, downloaded and checksum-verified on the user's machine |
| Workflow | Pull request dev → main, then a manual tag |
ah-engine-release.yml: a manual prepare run that opens a lock PR, then a tag push that publishes
|
- On
dev: bump the four version fields together and add a## <version>section at the top ofCHANGELOG.md(patch for fixes and docs, minor for a new capability). - Update every doc the change touches (the guide,
llms.txt, the READMEs). A release that changes a hook, skill or discipline is not done until the docs say so. - Run
node --testandnode plugins/anti-hall/hooks/doctor.js --checklocally. Pushes todevrun no CI. - Optional: push an
rc-v<version>tag to run the full CI matrix on that commit. Pull requests run only the lean Node 24 matrix; the full matrix runs on tags,mainand weekly, and nightly runs parity and benchmark suites. - Open the pull request
dev→main. Thedev-onlyandtests-passedchecks must be green. Merging is the release: users install frommain, and a version that reachedmaincannot be replaced under the same number. Merge with a merge commit, never squash. - Tag
v<version>on the merged commit and create the GitHub Release with that version's CHANGELOG section as the body. The release notes template shows the headings.
Release Drafter keeps a draft release of merged pull requests grouped by type:* label. It never publishes; CHANGELOG.md is the source of the notes.
- Change the engine and bump
versioninah-engine/Cargo.toml. -
Prepare: run the
ah-engine-releaseworkflow manually. It builds every target inah-engine/targets.json, runs the tests, and opens a PR (againstdev, nevermain) that updatesah-engine.lockand its copy atplugins/anti-hall/ah-engine.lock. - Merge that PR.
-
Publish: push
ah-engine-vX.Y.Zon the merged commit. The workflow checks the lock, the fingerprint and every sha256 before it creates the release with build-provenance attestation.
Users get the new binary on their next session start: the bootstrap script downloads the archive named in the lock and installs it only if its sha256 matches. Any failure leaves the Node hooks in use. Details: Architecture.
Warning
A tag ruleset blocks update, deletion and force-update of v* and ah-engine-v*. A wrong release is fixed with a new version, never by re-tagging.
- Never push to
maindirectly, and never force-push any branch. - Never move or delete a
v*orah-engine-v*tag. A wrong release is fixed with a new version. - No AI credit lines in commits or in release text.
- Check the GitHub Actions result before calling a public release done: a green local run is not a green CI run.
See also: Development workflow, CONTRIBUTING.md, docs/REPO-PIPELINES.md.
anti-hall by Mohammed Talas (@talas9) · Repository · Docs site · Discussions · Contributor wiki: the repository is the source of truth; fix this wiki when they disagree.
🗺️ How it works
- 🏗️ Architecture
- ⚙️ Engine internals
- 🌐 DevSwarm
- 🤖 Repo automation
🛠️ How we work
📄 Templates
🔗 Elsewhere