v0.16.0

thevoiceguy/siphon-aiv0.16.0Jun 25, 2026by github-actions[bot]

Upgrading?

AI Summary

This release establishes a robust release pipeline with automated workflows, multi-arch Debian packages, CycloneDX SBOMs, and keyless signatures for supply chain security.

Key Highlights

  • Automated release workflow for multi-arch binaries
  • Debian packages (amd64/arm64) for installation
  • CycloneDX SBOMs for each release
  • Cosign keyless signatures over checksums

New Features

  • Automated GitHub Release workflow
  • Debian package creation
  • SBOM generation
  • Container image publishing

Full Release Notes

### Added

- **Docs: installing from a release + a releasing runbook.**
  `docs/DEPLOY.md` gains an *Install from a release* section (verify
  checksums + cosign signature, then install the binary, the `.deb`, or the
  signed container), and a new top-level `RELEASING.md` documents the
  "bump, then tag and push" flow the workflow automates. Final chunk of the
  P0 "Release & packaging" theme.
- **Automated release workflow** (`.github/workflows/release.yml`). Pushing
  a `v*` tag now builds multi-arch static-musl binaries (`x86_64` +
  `aarch64`, cross-compiled with cargo-zigbuild), packages them as
  per-arch `.tar.gz`, emits a `SHA256SUMS`, and creates the GitHub release
  with notes extracted from `CHANGELOG.md` (pre-release tags like
  `v0.16.0-rc.1` are marked accordingly, never latest). A `preflight` job
  re-asserts tag == workspace version before anything is built. Second
  chunk of the P0 "Release & packaging" theme.
- **Debian packages** (`.deb` for `amd64` + `arm64`, via cargo-deb). Each
  release now ships installable packages built from the same prebuilt
  static binaries: they drop the binary at `/usr/bin/siphon-ai`, a default
  conffile at `/etc/siphon-ai/config.toml`, and a hardened systemd unit
  (enabled but **not** started — the default config has a placeholder
  `ws_url`), and create the `siphon-ai` service user + `/var/{lib,log}`
  dirs in the maintainer scripts. `apt install ./siphon-ai_*_amd64.deb`.
  Fourth chunk of the P0 "Release & packaging" theme.
- **Release supply chain: SBOM, signatures, and a published container.**
  Each release now ships a CycloneDX SBOM (syft), a cosign **keyless**
  signature over `SHA256SUMS` (`SHA256SUMS.cosign.bundle`, verifiable
  against the workflow's GitHub OIDC identity), and a multi-arch
  (`linux/amd64` + `linux/arm64`) container at
  `ghcr.io/thevoiceguy/siphon-ai:<tag>` (also cosign-signed; `:latest`
  only for final releases). The image is assembled from the same prebuilt
  static binaries that ship on the release — byte-identical, no recompile.
  Third chunk of the P0 "Release & packaging" theme.

### Changed

- **Docker dev image tracks the toolchain.** `docker/Dockerfile` now uses
  `rust:1.95-alpine` (matching `rust-toolchain.toml`) instead of the stale
  `rust:1.85` base, which sat below the workspace MSRV and only built
  because `rust-toolchain.toml` forced a 1.95.0 download on top of it.

- **CI: version-consistency gate.** A new `version consistency` job
  (`scripts/check-version-consistency.py`) fails the build if the
  workspace `Cargo.toml` version, the README "Current release" marker, and
  the `CHANGELOG.md` dated heading disagree — closing the drift that left
  the README at v0.12.2 while the latest tag was v0.15.0 (README corrected
  to v0.15.0). First chunk of the P0 "Release & packaging" theme
  (`docs/design/DESIGN_RELEASE_PACKAGING.md`).

---

**Artifacts**

- Static musl binaries for `x86_64` and `aarch64` (`.tar.gz`).
- Debian packages (`.deb`) for `amd64` and `arm64` — `apt install ./siphon-ai_*_amd64.deb`.
- `SHA256SUMS` — verify with `sha256sum -c SHA256SUMS`.
- `*-sbom.cdx.json` — CycloneDX SBOM.
- `SHA256SUMS.cosign.bundle` — cosign keyless signature over the checksums.
- Container: `ghcr.io/thevoiceguy/siphon-ai:v0.16.0` (multi-arch, cosign-signed).

Verify the checksums signature:
```
cosign verify-blob --bundle SHA256SUMS.cosign.bundle \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com \
  --certificate-identity-regexp 'release.yml@' SHA256SUMS
```

Related Repositories