Release Checklist

简体中文

Use this checklist when preparing a tagged release. For v0.2.0, the release tag is expected to publish a GitHub Release and container images to GHCR through the GitHub Actions release workflow. PyPI publishing is gated until the PyPI project and trusted publishing configuration are ready.

Do not create or push a release tag until the maintainer explicitly approves the release.

Preflight

Local Validation

Run these from the repository root before tagging:

nix develop -c python3 -m unittest discover -s tests -v
nix develop -c python3 -m build
nix build .#codex-quota-monitor --no-link
nix run .#codex-quota-monitor -- --help
nix run .#codex-quota-monitor -- --version
nix run .#codex-quota-monitor -- init --mode user >/tmp/cqm-init.txt
nix run .#codex-quota-monitor -- print-config --state-db off
printf 'state_db = "off"\ndisplay_timezone = "UTC"\n' >/tmp/cqm-config.toml
nix run .#codex-quota-monitor -- print-config --config /tmp/cqm-config.toml
nix run .#codex-quota-monitor -- doctor --json --management-base-url http://127.0.0.1:9 --gateway-health-url http://127.0.0.1:9/healthz --state-db off >/tmp/cqm-doctor.json || test "$?" -eq 1
printf '{"access_token":"secret","account_id":"acct-a"}\n' >/tmp/cqm-secret.json
nix run .#codex-quota-monitor -- redact /tmp/cqm-secret.json --secret secret >/tmp/cqm-redacted.json
! grep -q secret /tmp/cqm-redacted.json
nix run .#codex-quota-benchmark -- --help

The intentionally unreachable doctor command should return a JSON payload with clear fail checks instead of a traceback.

If Docker is available locally, also run:

docker build -t codex-quota-monitor:release-check .
docker run --rm codex-quota-monitor:release-check --help
./scripts/ci/smoke-docker-image.sh codex-quota-monitor:release-check cqm-release-check

If Docker is not available locally, treat the Docker job in GitHub Actions as the blocking image validation gate.

Tag And Publish

Only after approval, create an annotated tag and push it:

git tag -a v0.2.0 -m "codex-quota-monitor v0.2.0"
git push origin v0.2.0

The tag push triggers .github/workflows/release.yml, which should:

Post-publish Checks

Stop Conditions