Skip to content

release(installer): verify published checksums and expose fail-closed provenance mode #2749

Description

@Rul1an

Parent: #1975

Measured gap

Measured on origin/main 7f5a811f750f36974d307688dd60f8b710824543 and published release v5.5.2.

The fast path in README.md is:

curl -fsSL https://getassay.dev/install.sh | sh

The same page correctly discloses that this installer downloads over HTTPS but does not consume the release's checksum or provenance sidecars. v5.5.2 publishes a .sha256 beside every CLI archive and also publishes assay-v5.5.2-release-provenance.json plus its checksum.

This leaves the release process stronger than the default installation path: Assay produces integrity/provenance evidence that the fast path does not verify.

Contract

  1. The selected release version, target triple and archive name are resolved once and reused for archive, checksum and diagnostics.
  2. The installer downloads the archive and its exact .sha256 sidecar before extraction.
  3. Archive verification is mandatory and fail-closed. A missing, malformed or mismatching sidecar must leave the destination binary unchanged.
  4. Use the platform's supported SHA-256 implementation (sha256sum or shasum -a 256) without weakening the digest comparison.
  5. Add an explicit provenance-verification mode. If that mode is required, missing verification tooling or a signer/workflow mismatch is a failure, never a checksum-only pass wearing an attestation label.
  6. Output distinguishes checksum_verified, provenance_verified, provenance_not_requested and failure. HTTPS transport alone is never called provenance verification.
  7. A verified temporary archive is activated atomically; a failed install preserves the prior binary.

RED-first cases

  • correct archive + correct sidecar succeeds;
  • archive byte changed after sidecar publication refuses before extraction;
  • missing or malformed sidecar refuses;
  • sidecar for a different asset refuses;
  • required provenance with missing verifier refuses;
  • required provenance with wrong repository/workflow identity refuses;
  • failed verification preserves an already installed binary;
  • the output cannot report provenance_verified on the checksum-only path.

Definition of done

  • Linux and macOS fast paths verify the exact selected archive checksum.
  • One supported, fail-closed provenance-verification path is documented and tested.
  • The installer and README no longer contain two separately maintained version or asset-selection rules.
  • The published-artifact smoke installs through this exact path.
  • README wording states precisely what the default and strict modes verify.
  • No new release is claimed until the changed installer is deployed and measured against a published release.

Non-claims

  • A checksum proves byte equality with the sidecar, not who produced it.
  • A verified provenance document does not prove runtime safety or semantic correctness.
  • This does not package the bounded quickstart assets; that remains separate product work.

Basis

Metadata

Metadata

Assignees

No one assigned

    Labels

    cluster:release-integrityRelease-prep surface and the release-blocking gate that guards itdxProject phase/areaenhancementNew feature or requesthorizon:mvpRequired for the current minimal install-to-verifiable-evidence product pathin progressProject phase/areapriority:P1Next high-impact product, security, reliability, or adoption work; not a release blockersize:SAI-assisted: a few hours. One component plus its tests.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions