Release engineering
Note
Project policy: draft. This page is the only home of Shiin’s release rules (ADR-0039).
Commits
Commits follow Conventional Commits 1.0.0. Release tooling generates changelogs from them.
Sign-offs
Every commit carries a Developer Certificate of Origin sign-off, which git commit -s adds.
Versions
Versions before 1.0 may contain breaking changes. After 1.0, patch, minor, and major versions follow semantic versioning.
Builds
The first alpha builds Linux and macOS archives, including a musl target configured for static linking. Windows remains covered by source-level CI; Windows path behavior and daemon transport are not qualified for an initial binary release.
Artifacts
Release archives have signed build-provenance attestations, SHA-256 checksums, and CycloneDX bills of materials. Platform code signing and notarization are not configured; a provenance attestation is separate from an operating system’s executable signature.
What is wired up today
The first published release is v0.1.0-alpha.1.
Its tagged workflow publishes the CLI and Unix-daemon archives, installers, checksums, build provenance, and SBOMs.
The candidate pipeline is exercised on pull requests before publication:
| Piece | State |
|---|---|
dist-workspace.toml with five Unix targets and shell installers | configured for CLI and daemon archives |
release.yml, generated by dist and repaired by Rust automation | candidate archives are built on hosted pull-request runners |
cargo xtask release-smoke <artifact-directory> | checks archive checksums, extraction, executable versions, all three hook protocols, and audit verification |
Build provenance through github-attestations | configured for release archives |
| CycloneDX bills of materials | generated and uploaded in the release workflow; sbom.yml is an optional manual JSON diagnostic |
cargo auditable dependency metadata | configured in dist |
| Publishing crates to a registry | deliberately not configured; every crate is publish = false until the naming decision in ADR-0003 is settled for a release |
The dist configuration supports embedded dependency metadata, SBOMs, pinned actions, and pull-request artifact builds (verified 2026-10-18).
After dist generate, run cargo xtask release-ci-fix.
That command repairs the generated SBOM output reference and cache-action pin, adds archive qualification, and prevents superseded candidate builds from accumulating.
Its check mode refuses unknown templates; CI runs cargo xtask release-ci-fix --check.
Tag publication is never canceled by a newer pull-request candidate.
The alpha remains experimental. It does not declare milestone exit criteria complete, freeze a public API, or replace independent security review.
First-alpha qualification record
The candidate implementation at 53cc41d2ae81b20e8b9430b901af8edfc7e4f3df passed its hosted qualification on 2026-10-18:
- Workspace and performance checks: formatting, Clippy, tests on Linux/macOS/Windows, MSRV, WebAssembly engine isolation, dependency policy, Linux/macOS latency, and bounded heap measurements.
- Robustness checks: native key-store lifecycle on all three systems, parser fuzzing, and wire types under Miri.
- Documentation and conformance: documentation checks and the 26-case conformance artifact.
- Release candidate artifacts: all five Unix archive targets, archive smoke checks, build attestations, and global packaging.
These results qualify that revision; they do not certify later source changes or establish live-host behavior.
The published tag points to merge commit 687836ae55d280e4492c34256f3be9cd044f6362, whose source tree matches the qualified final candidate da83b04.
The tagged publication run builds and qualifies the release archives before publication.
Human DCO certification and security-sensitive-change review remain human responsibilities; automation does not supply either certification.