This document outlines the steps required to publish a new HunterX v7 release.
- All planned features for this release are implemented and merged to
main - Full v7 suite passes:
pytest -m "not tools" - Linter clean:
ruff check src eng tests alembic - Type checker clean:
mypy eng src/hunterx/shared - Security gate clean:
bandit -r src/hunterx - No open issues tagged
blockerorrelease-critical -
CHANGELOG.mdis updated with all changes since last release -
CITATION.cffversion updated - Version bumped in:
pyproject.tomlsrc/hunterx/__init__.py
-
install.shverified against a clean environment - Clean install from the wheel/sdist succeeds (
pip install dist/*.whl) - Alembic migrations verified:
alembic upgrade headon a fresh database - Release tree audit: no development artifacts, no secrets, no v6 active artifacts
- Copyright/ownership headers present on project-owned files
- Responsible-use disclaimer present (README, docs, SECURITY.md)
- Documentation links resolve (
python -m eng gates --gate docs)
- Build artifacts:
python -m build - Twine check:
twine check dist/* - Tag the release:
git tag -a vX.Y.Z -m "HunterX vX.Y.Z" - Publish to PyPI:
twine upload dist/* - Publish Docker image:
docker buildx build --push -t nullc0d30/hunterx:latest . - Update the GitHub release with release notes
- Verify the PyPI install:
pip install "hunterxsec[api,db]" && hunterx version - Verify the Docker image:
docker run nullc0d30/hunterx:latest version - Mark release complete in
CHANGELOG.md