Skip to content

Publish attested preview and stable Pylon Prime releases #29

Description

@rynfar

Problem

Deterministic fork tarballs still need a protected publication and promotion path. The fork intentionally removed upstream release automation because it targets main/v*, depends on upstream R2 credentials, advances mutable channels, and uploads with --clobber. Restoring that workflow would violate the fork's product-branch and provenance boundaries.

Required publication model

Use GitHub Releases in pylon-code/prime-agent with no external package or storage credentials:

  • A protected pylon push publishes a prerelease preview for the exact merged source, using a Pylon-only tag such as pylon-build-g<sha12>-r<recipe>.
  • A manual workflow dispatched from refs/heads/pylon promotes an existing preview to a monotonic stable tag such as pylon-stable-000001-g<sha12>-r<recipe>.
  • Stable promotion references or copies the exact preview digests. It never rebuilds.
  • Existing tags/assets with different bytes fail. Never use --clobber.
  • Ignore main, inherited upstream v* tags, PR heads, and arbitrary refs.
  • Stable admission verifies the source is reachable from protected pylon, required exact-SHA checks are green, and preview attestations are valid.

Provenance and permissions

  • Pin every action by commit.
  • Build jobs use contents-read only.
  • Only the publisher receives contents-write and it does not execute downloaded artifacts or repository source.
  • Only the attest step receives id-token: write and attestations: write.
  • Use keyless GitHub/Sigstore build provenance for every tarball and preview/stable manifest.
  • Verification must bind subject digest, issuer/Rekor inclusion, pylon-code/prime-agent, exact signer workflow/ref, source commit/tree, and recipe id.
  • Publish signed monotonic preview/stable channel manifests. A feed pointer may advance but every referenced build release and asset is immutable.

Acceptance coverage

  • preview creation is idempotent for identical bytes and refuses changed bytes;
  • stable promotion reuses all preview digests and advances one monotonic sequence;
  • wrong ref/repository/workflow/source/check/result/attestation fails closed;
  • inherited tags and main never publish;
  • workflow permissions are least privilege and no repository secret is required;
  • gh attestation verify documentation plus automated negative tests cover tamper, replay, wrong signer, and wrong subject;
  • preview and promoted stable install into temporary prefixes on Ubuntu and macOS; WSL2 consumes the Linux artifact. Native Windows Prime install/runtime is deferred until upstream support exists.

Scope and dependencies

Depends on #28's deterministic artifact contract. This issue owns publishing, keyless attestation, channel promotion, rollback/yank runbooks, and workflow governance only. It does not add a Pylon installer or updater.

Coordinate with #1 and Pylon #114. Do not restore upstream .github/workflows/build-binaries.yml. Comet and #20 are not dependencies.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions