GeezerVison is showing ma2za.github.io — Release checklist
Release checklist
Read the release plan before release work and update its
status and validation evidence as the release proceeds.
- Keep
pyproject.toml and substack/__init__.py on the previous version
while implementing code, tests, workflows, and documentation.
- Run
poetry install --all-extras.
- Run
poetry run pytest -q -m "not live" --strict-markers.
- Run
poetry run pytest -q with live opt-ins unset and confirm all live tests
are skipped.
-
With configured maintainer credentials, run:
RUN_SUBSTACK_E2E=1 poetry run pytest -q -m live
RUN_SUBSTACK_CLI_E2E=1 poetry run pytest -q -m live tests/substack/test_cli_end_to_end.py
- Update
pyproject.toml, substack.__version__, CHANGELOG.md, and the
release page to the target version.
- From a clean checkout, run
poetry check, poetry build, and
poetry run python -m twine check dist/*.
- Install the wheel in fresh base and
[mcp] virtual environments, run
pip check, verify all five console entry points, and import the base and MCP
modules.
- Push only after CI passes. Create
vX.Y.Z from that exact commit; the publish
workflow rejects a tag that differs from either package version.
- After publishing, install
python-substack==X.Y.Z from PyPI in a clean
environment and repeat the smoke checks before announcing.
Live tests create disposable drafts and must never publish. Confirm cleanup in
the publication after each run. If an artifact is defective, yank it rather
than attempting to replace the same version.