Release¶
No surprise releases
Do not tag or publish without explicit maintainer approval.
Versioning¶
Semantic versioning. Source of truth: VERSION.
Must match:
- workspace
versionin rootCargo.toml ## [x.y.z]inCHANGELOG.md- crate versions via
version.workspace = true(aurum-core,aurum-stt,aurum-ffi)
Checklist before prepare¶
Prefer the automated gate (JOE-1640):
Manual equivalent:
VERSIONset to intended releaseCHANGELOG.mdhas## [x.y.z] - YYYY-MM-DD(nothing important left only under Unreleased)cargo test --workspace --lockedcargo clippy --workspace --all-targets --locked -- -D warningscargo check -p aurum-core --no-default-features --lockedmkdocs build --strictcargo audit+cargo deny check./scripts/generate_sbom.sh dist/sbom- Optional:
AURUM_INTEGRATION=1 cargo test -p aurum-core --test local_integration -- --ignored - Optional:
./scripts/publish_dry_run.sh
See also release gate and supply chain.
Flow¶
1. workflow_dispatch → Prepare Release (version=x.y.z)
2. Merge release/x.y.z PR into master
3. release-tag creates vX.Y.Z (after version_check)
4. release.yml: fail-closed tag checkout → test → audit/deny → SBOM
→ platform CLI binaries → SHA256SUMS + PROVENANCE + GitHub Release
Manual tag (fallback)¶
Assets (CLI)¶
| Asset | Platform / purpose |
|---|---|
aurum-macos-arm64 | Apple Silicon (Tier A) |
| (Intel Mac) | Build from source (cargo install aurum-stt) — Tier B |
aurum-linux-x86_64 | Linux GNU (Tier A) |
aurum-windows-x86_64.exe | Windows MSVC (Tier A) |
SHA256SUMS | Checksums for all attached assets |
PROVENANCE.txt | Tag, source commit, workflow run metadata |
aurum-sbom-inventory.json / .md | Rust dependency inventory (JOE-1635) |
native-components.md | whisper / ort / ffmpeg notes |
cargo-metadata.json | Full Cargo graph snapshot |
Verify downloads:
aurum-ffi is not attached as a prebuilt dylib in v0.0.x — consumers build from source (cargo build -p aurum-ffi --release).
crates.io (optional, separate from GitHub Release)¶
Not triggered by tags. Prefer GitHub Release binaries for end-user CLI installs.
Local:
./scripts/publish_dry_run.sh
cargo publish -p aurum-core --locked # first
cargo publish -p aurum-stt --locked # after core is on the index
# aurum-ffi: publish when you want the crate on crates.io (optional)
cargo publish -p aurum-ffi --locked
CI (manual workflow): Actions → Publish crates.io
- Secret
CARGO_REGISTRY_TOKEN(repo orcrates-ioenvironment) - Dry-run then publish:
aurum-core→aurum-stt(order matters) aurum-ffionly if intentionally publishing the FFI crate
The bare name aurum is taken on crates.io (unrelated AUR helper) — CLI package is aurum-stt.