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.
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-agentwith no external package or storage credentials:pylonpush publishes a prerelease preview for the exact merged source, using a Pylon-only tag such aspylon-build-g<sha12>-r<recipe>.refs/heads/pylonpromotes an existing preview to a monotonic stable tag such aspylon-stable-000001-g<sha12>-r<recipe>.--clobber.main, inherited upstreamv*tags, PR heads, and arbitrary refs.pylon, required exact-SHA checks are green, and preview attestations are valid.Provenance and permissions
id-token: writeandattestations: write.pylon-code/prime-agent, exact signer workflow/ref, source commit/tree, and recipe id.Acceptance coverage
mainnever publish;gh attestation verifydocumentation plus automated negative tests cover tamper, replay, wrong signer, and wrong subject;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.