Release Engineering and Build Provenance
Objective: every installer/zip we ship is reproducible, auditable, and bound to source via hashes, SBOMs, and attestations.
Build chain (source → artifact)
- Deterministic build inputs: pinned
requirements*.txt/uv.lock, fixed pyinstaller spec, and reproducible plugin packages (sorted zip, fixed timestamps). - Local + CI parity:
tools/release_local.sh <artifact...>mirrors the GitHub Actions packaging steps to produceSHA256SUMS.txt,BUILD_META.txt, and SBOMs. - SBOMs: generated with
syftper artifact; attached to releases (SBOM-*.spdx.json). - Build metadata:
BUILD_META.txtcaptures tag, commit, Python, platform, and sha256 for each artifact.
Attestations and signatures
- Hashes: SHA256 for every installer/zip; published in
SHA256SUMS.txtand verified indocs/RELEASE_VERIFY.md. - Signatures: detached GPG signatures for
SHA256SUMS.txt,BUILD_META.txt, and SBOMs when signing keys are available (CI and local script supportGPG_PRIVATE_KEY+GPG_PASSPHRASE). - Planned: SLSA-style provenance statement binding source commit → builder → artifacts; emitted alongside hashes once builder metadata pipeline is wired.
Installers and package signing
- PyInstaller zips (Linux/Windows) and macOS dmg are signed via the hash/signature chain above; plugin packages remain signed with Ed25519 (
SIGNATURE.ed25519). HELIX_STUDIO_PLUGIN_REQUIRE_SIGNED=1is recommended in packaged Studio builds so user-installed plugins honor the trust store.
Verified install flow (offline-friendly)
- Download artifacts +
SHA256SUMS.txt[.sig]from the release. gpg --verify SHA256SUMS.txt.sig SHA256SUMS.txt(if signature present).sha256sum -c SHA256SUMS.txt.- Verify SBOM matches your local scan (see
docs/RELEASE_VERIFY.md). - Run canonical conformance pack:
./tools/conformance.shusing the installed binaries (headless flags allowed).
Patch and release cadence
- Weekly patch train; emergency security releases as needed (see
SECURITY.md). - Every release tag must publish: artifacts, SHA256SUMS (+sig), SBOMs, BUILD_META, and conformance results (log or artifact hash).
Supply-chain coverage
- Dependencies pulled from locked hashes; wheels validated during build where upstream publishes hashes.
- Registries/indexes consumed over HTTPS; installers can be mirrored offline via
tools/release_local.shto regenerate provenance locally.