Release process¶
Releases are automated. Tagging a GitHub Release triggers a build and a publish to PyPI via OIDC trusted publishing — no API token is stored in the repo.
Versioning¶
Semantic Versioning. While pre-1.0, minor versions may include breaking changes; patch versions are bug fixes only.
| Version | Milestone |
|---|---|
0.1.0 |
MVP — the kernel works end to end (gated on a real test suite + a live run) |
0.2.0 |
Hardening + parser depth |
0.3.0 |
CI hook + Newman test loop |
1.0.0 |
Stable, documented, supported |
See the roadmap for what's in each.
Cutting a release¶
- Green CI on
main. All tests pass across the OS × Python matrix. - Bump the version in
pyproject.toml(project.version). - Update
CHANGELOG.md— move## [Unreleased]items under a new## [x.y.z] — YYYY-MM-DDheading; update the compare links at the bottom. - Commit and tag:
- Publish a GitHub Release for the tag. Paste the changelog section as the notes.
- The Release workflow (
.github/workflows/release.yml) builds the sdist + wheel, runstwine check, and publishes to PyPI. - The Docs workflow redeploys the site on the next push to
main.
First-time PyPI setup¶
Trusted publishing must be configured once on PyPI:
- Create the
postman-mcpproject (or reserve the name with a first manual upload). - Add a trusted publisher for the GitHub repo + the
Releaseworkflow + thepypienvironment. - Create a GitHub Environment named
pypi(optionally with required reviewers).
After that, every published Release deploys automatically.
Pre-release checklist¶
- [ ]
pytest --cov≥ 80% locally and in CI - [ ]
mkdocs build --strictpasses - [ ]
python -m build && twine check dist/*clean - [ ]
CHANGELOG.mdupdated - [ ] README badges and quickstart still accurate
- [ ] A real end-to-end
init→syncallrun against a live Postman workspace (for 0.1.0, this is a release gate)