Versioning and Release Policy
voiage uses semantic versioning and tag-driven releases, but the
repository needs one canonical version source so manifests and release
automation stay in lockstep.
Canonical version source
The current release line treats pyproject.toml as the canonical source of
truth for the repository version. That version drives the Python package
metadata, the release tag checks, and the validation of the binding manifests.
Binding manifests are expected to match the canonical version exactly:
bindings/typescript/package.jsonbindings/julia/Project.tomlbindings/rust/Cargo.tomlbindings/dotnet/src/Voiage.Core/Voiage.Core.csprojr-package/voiageR/DESCRIPTION
Validation
The repo-local validator checks the canonical version against the binding manifests and fails if any manifest drifts:
tox -e version-sync
or, equivalently:
uv run python scripts/validate_version_sync.py
Release flow
When changing versions:
Update the canonical version in
pyproject.toml.Update the binding manifests to the same version.
Run the version-sync validator.
Cut the matching tag and let the ecosystem-specific release workflows run.
The validator keeps the repo honest before release automation starts.