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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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