Release process
This checklist is for maintainers preparing a beta or public release.
Pre-release checks
Run the standard quality gates from a clean checkout:
python -m pip install -e ".[dev,docs]"
python -m pytest -q
python -m ruff check .
python -m mypy archledger tests
python -m sphinx -b html docs docs/_build/html
Build and metadata validation
Build the actual distribution artifacts and verify their metadata:
rm -rf dist build *.egg-info
python -m build
python -m twine check dist/*
Installed-wheel smoke test
Always verify the built wheel from outside the source checkout:
python -m venv /tmp/archledger-wheel-test
/tmp/archledger-wheel-test/bin/python -m pip install dist/*.whl
/tmp/archledger-wheel-test/bin/python -I - <<'PY'
import importlib.metadata
import archledger
assert importlib.metadata.version("archledger") == archledger.__version__
print(archledger.__version__)
PY
workdir="$(mktemp -d)"
cd "$workdir"
/tmp/archledger-wheel-test/bin/archledger --version
/tmp/archledger-wheel-test/bin/archledger init --source-format markdown
/tmp/archledger-wheel-test/bin/archledger seed arc42-minimal
/tmp/archledger-wheel-test/bin/archledger new requirement --title "Smoke" --status accepted
/tmp/archledger-wheel-test/bin/archledger build --format markdown
/tmp/archledger-wheel-test/bin/archledger --json read --body
Converter-backed release confidence
If the release promises converter-backed exports, run the optional integration coverage in an environment with the tools installed:
python -m pytest -q -m integration tests/test_converter_integration.py
Release decision
Before tagging or publishing:
Confirm the changelog is updated.
Confirm CI is green on the supported Python versions.
Confirm the built artifact version matches
archledger.__version__when installed.Confirm the installed console script works outside the repository checkout.