Release Checklist

July 30, 2026 ยท View on GitHub

Use this checklist before merging release-bound work. CI covers hermetic gates; live fleet gates require a running cortex deployment and explicit operator intent.

Hermetic Gates

Run from the repo root:

cargo fmt -- --check
cargo test
cargo clippy --all-targets -- -D warnings
cargo deny check
cargo xtask check-version-sync
bash scripts/check-agent-memory-symlinks.sh
bash scripts/check-public-identity.sh
git diff --check

For release commits, also require:

cargo xtask check-release-versions

Version-bearing files are declared in release/components.toml: Cargo.toml (canonical), Cargo.lock, server.json (version + cortex:vX.Y.Z image tag), mcpb/manifest.json, docker-compose.prod.yml (${CORTEX_VERSION:-X.Y.Z}), and CHANGELOG.md. Plugin manifests are intentionally unversioned โ€” check-version-sync rejects a top-level version key in .claude-plugin/plugin.json. Bump everything at once with cargo xtask bump-version patch|minor|major.

Live Gates

Run these only against an intended test or production deployment:

bash tests/test_live.sh
bash scripts/smoke-test.sh
bash scripts/smoke-test-http.sh
bash tests/mcporter/test-tools.sh

Live Docker ingest validation now follows two paths: host-local cortex agent parity for deployed agents, and the legacy central pull fixture with CORTEX_DOCKER_INGEST_ENABLED=true plus CORTEX_DOCKER_HOSTS set to an explicit Docker-compatible HTTP endpoint.

Live SSH inventory validation requires configured SSH aliases or CORTEX_INVENTORY_SSH_HOSTS, strict known-hosts coverage, and any intentional TOFU bootstrap set explicitly with CORTEX_INVENTORY_SSH_TRUST_ON_FIRST_USE=true.

Fleet drop-in deployment is intentionally outside hermetic CI. Validate first with:

cortex compose doctor
cortex ingest inventory refresh --json

Then push rsyslog drop-ins per forwarder-dropins.md only when the target fleet_hosts list is correct and reachable.

Commit Policy

Every feature branch push bumps the version according to the repo policy in CLAUDE.md. Patch bumps are appropriate for fixes, docs, CI, test, and policy work. CHANGELOG.md must describe the operator-visible behavior, not just the file list.