Versioning and Release Policy
This page defines how Wavry versions are interpreted and which versions are allowed to ship publicly.
Release Channels
Wavry uses three practical channels:
| Channel | Example | Intended use |
|---|---|---|
| Stable | v0.1.0 | public releases and production pinning |
| Canary | v0.1.1-canary.1 | public prerelease validation with explicit opt-in |
| Unstable | v0.1.2-unstable2 | fast-moving prerelease snapshots for internal/external validation |
Allowed Public Prerelease Tags
For public release tags:
- Allowed prerelease suffixes:
-canary(optionally with.Nor additional dot suffix segments)-unstable(for example-unstable,-unstable2,-unstable.2)
- Disallowed for release tags:
-alpha,-beta, and other custom prerelease suffixes
This is enforced in version tooling and CI policy gates.
Release Artifact Policy
Public release assets must be:
- clearly named and platform/arch labeled
- minimal (no unnecessary build intermediates)
- checksummed (
SHA256SUMS.txt) - listed in a machine-readable/structured release manifest
Control-plane services are distributed as Docker images (gateway/relay), not raw release binaries.
Version Validation in Tooling
scripts/set-version.sh enforces:
- stable versions (
X.Y.Z) or allowed prereleases (X.Y.Z-canary...,X.Y.Z-unstable...) - rejection of unsupported prerelease formats for release-oriented version updates
CI release policy enforces:
- release generation is skipped or blocked when version policy is not satisfied
- canary and unstable prereleases are marked as prerelease artifacts
Operational Guidance
- Use stable tags for production rollout pinning.
- Use canary or unstable tags for controlled rollout cohorts.
- Use unstable tags for high-velocity snapshot releases where policy flexibility is required.
- Document compatibility implications when bumping major/minor protocol behavior.