Versioning Policy
This document defines versioning for anolis-workbench.
Scope
- Distribution name: anolis-workbench
- Version source of truth:
pyproject.tomlproject.version - Release trigger input version must exactly match
pyproject.toml
Desktop wrapper alignment:
- Tauri desktop wrapper (
desktop/src-tauri) follows the same product semver as the Python package release. - Desktop installer artifacts are published under the same Git tag (
v<version>) as Python package releases. - Desktop release validation enforces cross-file version lockstep across:
pyproject.tomldesktop/package.jsondesktop/src-tauri/Cargo.tomldesktop/src-tauri/tauri.conf.json
Scheme
anolis-workbench uses Semantic Versioning: MAJOR.MINOR.PATCH.
- MAJOR: breaking changes to commissioning workflows, package behavior, or user-facing compatibility expectations
- MINOR: backward-compatible feature additions
- PATCH: backward-compatible bug fixes, stability improvements, dependency updates, and release pipeline hardening
Compatibility Boundaries
Runtime compatibility is not encoded only by the workbench package version. Compatibility with runtime/provider behavior is governed by locked contract artifacts, including:
- anolis_workbench/schemas/runtime-config.schema.json
- anolis_workbench/schemas/machine-profile.schema.json
- contracts/runtime-http.openapi.v0.yaml
Changes to those contracts must follow contract governance and drift checks.
Release Rules
A release is accepted only when all of the following are true:
- Requested version is valid semver
- Requested version equals
pyproject.tomlproject.version - Target tag (
v<version>) does not already exist - Reusable CI gate passes
- Build artifacts are created successfully
- PyPI publish succeeds (OIDC trusted publishing)
- Clean-install smoke checks pass
GitHub release creation occurs only after publish and smoke checks pass.
Desktop release rule:
- Native desktop bundles and SBOM artifacts are attached to the same release tag through
desktop-release.yml.
Pre-release
The release workflow supports a prerelease toggle for GitHub Release metadata. Pre-release handling still requires valid semver input and the same quality gates.
Practical Bump Guidance
Use PATCH for:
- bug fixes
- CI/release reliability improvements
- packaging correctness fixes
- non-breaking dependency updates
Use MINOR for:
- new Compose, Commission, or Operate capabilities that remain backward compatible
- new user-visible workflows without breaking existing ones
Use MAJOR for:
- incompatible behavior changes in core commissioning flows
- removals or changes that require user migration
Notes
- Keep version increments intentional and small.
- Avoid mixing unrelated large changes into one release when possible.
- Always verify release notes and artifact contents before broad announcement.
