Skip to content

Latest commit

 

History

History
30 lines (23 loc) · 1.92 KB

File metadata and controls

30 lines (23 loc) · 1.92 KB

Releasing Schliff

Pre-release Checklist

Run through this list before creating a new tag. Skipping a step has burned us before (see v7.1.1 badge hotfix).

  1. Bump version in pyproject.toml (single source of truth).
  2. Verify install.sh VERSION — it reads pyproject.toml dynamically; run bash install.sh --help and confirm.
  3. Update CHANGELOG.md — use Keep-a-Changelog format, include date.
  4. Bump README PyPI badge cache-bust — update ?v=X.Y.Z query param in the PyPI version badge URL (GitHub camo caches for 3h).
  5. Run full test suite locally: pytest -q — all tests green.
  6. Run build locally: python3 -m build && twine check dist/*.
  7. Commit on a release branch (chore/release-X.Y.Z), open PR, merge to main.
  8. Create the GitHub Release (tag vX.Y.Z, e.g. gh release create vX.Y.Z) — publish.yml fires on release: published, NOT on a bare tag push.
  9. Verify PyPI release — check pip install schliff==X.Y.Z works.
  10. Redeploy the web surfaces — their bundles carry engine/seed state: playground (bump playground/pyproject.toml pin + uv lock --upgrade-package schliff, then vercel --prod + dispatch playground-pin-drift.yml) AND leaderboard (vercel --prod from web/leaderboard/ — its bundled seed shows the self-entry version; skipping this left the live row on 8.1.0 until 2026-07-07).
  11. Re-point the v1 float tag to the release commit (git tag -f v1 <sha> && git push origin v1 --force).
  12. Post-release: close milestone, update memory entries that reference version.

Dry-run

Use git tag -a vX.Y.Z-rc1 ... to test the publish workflow without a real release.

Secrets / Trusted Publishing

Publishing uses OIDC Trusted Publishing via pypa/gh-action-pypi-publish. No API tokens in the repo. If this breaks: check PyPI Trusted Publisher config at https://pypi.org/manage/project/schliff/settings/publishing/.