release: adopt sigstore (cosign) signing for release artifacts #413
Labels
No labels
breaking
bug
documentation
enhancement
epic
good first issue
help wanted
refactoring
resolution/duplicate
resolution/invalid
resolution/wontfix
security
severity/critical
severity/high
severity/low
severity/medium
status/abandoned
status/blocked
status/needs-decision
status/needs-info
status/needs-verification
testing
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sixfold-space/madtea#413
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Future enhancement, not launch-blocking.
Why. Releases currently ship
checksums.txtpluschecksums.txt.asc(PGP detached signature). Sigstore is where the ecosystem is heading: keyless signing via OIDC identity, signatures recorded in the Rekor public transparency log, no long-lived private key to protect or rotate, and users verify withcosign verify-blobagainst an identity instead of hunting for a public key.What.
checksums.txt(and/or each archive) withcosign sign-blobin the release pipeline. Publish the.sigplus certificate bundle as release assets.cosign verify-blob --certificate-identity ... --certificate-oidc-issuer ...) in the README and the releasing docs..ascstays alongside (dual-sign) or is retired after a deprecation window.signs:withcmd: cosign). This is likely just config, not custom scripting.Acceptance criteria.
Unblocked: the CI migration this depends on landed, and the pipeline is live and green on the org runner (#47, first green run 2026-07-15). Findings for the signing design, from that work:
Two open questions gate any build work, and I have not settled either: (1) whether to provision a cosign keypair at all, and where its private half lives (repo secret, org secret, or offline with manual signing); (2) whether cosign coexists with PGP or eventually replaces it in the verification docs. Until those are settled this stays parked, and no code work is queued.
Parking this. Keyless/OIDC signing is impossible on the self-hosted runner. Key-based cosign duplicates the trust model of the PGP signing already shipping: a second long-lived private key to protect and rotate, bought for a modest verifier-UX win. Not worth the surface area right now.
Revisit triggers: keyless becomes possible on this stack (the runner grows an OIDC identity), or users actually ask for cosign/Rekor verification. Implementation stays cheap whenever that happens, because goreleaser has first-class cosign hooks, so it is config plus runbook.