ADR-025
Per-crate semver via release-plz (publishable crates only)
accepted · 2026-04-16 · L5 · cites 3
0ADR-025: Per-crate semver + release-plz #
Context #
Workspace currently uses single version = "0.80.0" shared across all crates.
With the foundation publish = false strategy (ADR-022), only nika (binary)
and future nika-sdk reach crates.io. Their semver should evolve independently
of internal foundation crate refactors.
Decision #
Two-tier semver policy:
- Foundation crates (`publish = false`) — keep workspace-shared version
version.workspace = true. Not published, semver irrelevant for ecosystem. - Publishable crates (`nika`, future `nika-sdk`) — independent semver via
release-plzGitHub workflow. Each crate has its own version field, bumped semantically based on conventional-commit messages affecting that crate.
Initial publishable versions:
[email protected]— binary republish from legacy v0.47.1 (yank old, fresh start with diamond architecture once binary is wired)[email protected]— first publication when v0.90 reaches stable surface
release-plz workflow runs on push-to-main, opens a PR with version bumps
- CHANGELOG entries derived from commits, auto-publishes on PR merge.
Consequences #
- ✅
nikabinary version reflects user-facing API stability, not internal refactor churn - ✅
nika-sdkships independently — bug-fix release doesn't bump main binary - ✅ release-plz handles changelog generation + GitHub releases automatically
- ❌ One-time workflow setup (~2h, one commit)
- ⚠️ Conventional commit discipline becomes load-bearing (already mostly true via commitlint hook)
Crates.io legacy cleanup (handled in Phase B.0) #
text
cargo yank [email protected] # diamond renames it; legacy abandonedcargo yank [email protected] # legacycargo yank [email protected] # legacy, rebranded as nika# [email protected] stays; republish at v0.80+ when binary is wiredReference #
- release-plz docs: https://release-plz.ieni.dev/
- ADR-022 (publish=false strategy)
~/.claude/.../memory/feedback_publish_false_foundation_strategy.md
read at v0.107.0 · the decision record ships with the engine