Use this checklist before tagging and publishing a release artifact.
Audit / sign-off: after shipping, record parity verification and complete the maintainer table in docs/audit/FINAL_ENTERPRISE_HARDENING_SIGNOFF.md. Step-by-step publish order: docs/audit/PYPI_PUBLISH_AND_VERIFY.md.
- Confirm branch and release scope are correct.
- Validate version consistency from canonical source.
- Run quality and coverage gates.
- Validate benchmark profile health.
- Build and verify distribution artifacts.
- Confirm security scan status.
- Capture release evidence in PR/release notes.
Preferred single-command preflight:
.hydra_env/bin/python scripts/release/preflight.pyOptional fast mode (skip heavy benchmark/build checks):
.hydra_env/bin/python scripts/release/preflight.py --skip-benchmark --skip-buildIf you need persisted benchmark evidence for release notes, run a saved benchmark explicitly:
.hydra_env/bin/python benchmark/performance_benchmark.py --profile pr_gateAfter twine upload (or CI publish) completes, confirm the public index reflects the
tag you intended:
.hydra_env/bin/python scripts/release/check_pypi_parity.py --require-matchOptional: include the same check in an integrated preflight run (requires network):
.hydra_env/bin/python scripts/release/preflight.py --pypi-parityExpect this step to fail until the new version is visible on PyPI (and classifiers
match setup.py).
- Version consistency:
scripts/dev/check_version_consistency.pymust pass. - Tests: full unit suite and
hydra_loggercoverage gate (>=95%) must pass. - Header policy: slim metadata header validation must pass.
- Benchmark sanity:
benchmark/performance_benchmark.py --profile pr_gateshould complete with valid guard evidence. - Package quality:
python -m build,twine check, and dist-content verification must pass. - Security posture: lint/security workflow outputs must be reviewed before publish.
Capture at minimum:
- commit SHA and tag candidate
- full preflight output
- CI run URL for green release candidate build
- benchmark JSON artifact used for release decision (from an explicit saved benchmark run)
- any accepted residual risks with owner + follow-up date