DocxEngine releases are tag-driven and automated by the release workflow. docxengine is published to PyPI via trusted publishing (OIDC) — no long-lived tokens.
- SemVer.
- The tool contract in
spec/carries its own schema version; a breaking contract change forces at least a minor bump and a changelog deprecation note.
- Ensure
mainis green: CI + test suite. - Update CHANGELOG.md — move
Unreleaseditems under the new version with the date. - Bump the version in
pyproject.toml(and the runtime__version__insrc/docxengine/__init__.py). - Commit:
chore(release): vX.Y.Z, then tag:git tag vX.Y.Z && git push origin vX.Y.Z. - Run the release workflow (manual
workflow_dispatch, or re-enable the tag trigger). It runs the full test suite, builds the sdist + wheel, publishes to PyPI via trusted publishing, and drafts the GitHub release from the changelog. - Verify the published artifact installs cleanly (
pip install docxengine==X.Y.Z) and the server runs (uvx docxengine-mcp).
Configure a Trusted Publisher on the docxengine PyPI project pointing at: repo ruwadgroup/docxengine, workflow release.yml, environment release. No API token is stored anywhere.
- CI green on
main - CHANGELOG updated, version bumped
- No unresolved security advisories
- Contract changes (if any) documented with migration notes