Context
Rethunk-AI/bakeoff-results CI (verify.yml) has an advisory cosign verify-blob step that checks Sigstore signatures on submitted bundles. It cannot be promoted to a hard gate until bundles are actually signed by this workflow.
bakeoff-results/signers.yaml expects the signing identity:
repo:Rethunk-AI/bakeoff:ref:refs/heads/main
via .github/workflows/package-results.yml
This file does not exist. That is the only reason the hard gate is blocked (tracked in bakeoff-results#23).
Current state of local signing
bench/publish.py already supports cosign sign-blob via --sign / _sign_result(). When called locally, it invokes cosign with whatever ambient OIDC credentials the operator has — producing a bundle whose subject will be the local identity, not repo:Rethunk-AI/bakeoff:ref:refs/heads/main. Signers.yaml won't accept it.
Existing stubs under submissions/*/signature.sigstore.json are placeholder files, not real Sigstore bundles.
Scope
Implement .github/workflows/package-results.yml in this repo. Responsibilities:
- Trigger — on workflow_dispatch (with run result artifact path as input) and/or on completion of the benchmark run workflow
- Package — call
bench publish package <result.json> to build the bundle (reports, manifest, SHA inventory)
- Sign — invoke
cosign sign-blob result.json --bundle signature.sigstore.json --yes under GitHub Actions OIDC (id-token: write permission); no long-lived keys, no secrets to rotate
- Submit — push the signed bundle to
Rethunk-AI/bakeoff-results (PR or direct push to main per policy) — bench publish submit handles the git mechanics
The workflow's OIDC subject will satisfy signers.yaml exactly as written once it runs from refs/heads/main.
Migration consideration
Existing stub bundles in bakeoff-results predate this workflow. When bakeoff-results#23 enforcement lands, those stubs will fail verification. Options:
- Retroactively re-sign via a one-shot backfill run of this workflow
- Add a
--allow-unsigned / grandfather window in the verify step covering pre-enforcement submission timestamps
Decision deferred to Phase 2 (bakeoff-results#23).
Blocks
Rethunk-AI/bakeoff-results#23 — Sigstore hard gate (Phase 2 waits on this)
Pending
— Bastion
Context
Rethunk-AI/bakeoff-resultsCI (verify.yml) has an advisorycosign verify-blobstep that checks Sigstore signatures on submitted bundles. It cannot be promoted to a hard gate until bundles are actually signed by this workflow.bakeoff-results/signers.yamlexpects the signing identity:This file does not exist. That is the only reason the hard gate is blocked (tracked in
bakeoff-results#23).Current state of local signing
bench/publish.pyalready supportscosign sign-blobvia--sign/_sign_result(). When called locally, it invokes cosign with whatever ambient OIDC credentials the operator has — producing a bundle whose subject will be the local identity, notrepo:Rethunk-AI/bakeoff:ref:refs/heads/main. Signers.yaml won't accept it.Existing stubs under
submissions/*/signature.sigstore.jsonare placeholder files, not real Sigstore bundles.Scope
Implement
.github/workflows/package-results.ymlin this repo. Responsibilities:bench publish package <result.json>to build the bundle (reports, manifest, SHA inventory)cosign sign-blob result.json --bundle signature.sigstore.json --yesunder GitHub Actions OIDC (id-token: writepermission); no long-lived keys, no secrets to rotateRethunk-AI/bakeoff-results(PR or direct push to main per policy) —bench publish submithandles the git mechanicsThe workflow's OIDC subject will satisfy
signers.yamlexactly as written once it runs fromrefs/heads/main.Migration consideration
Existing stub bundles in bakeoff-results predate this workflow. When
bakeoff-results#23enforcement lands, those stubs will fail verification. Options:--allow-unsigned/ grandfather window in the verify step covering pre-enforcement submission timestampsDecision deferred to Phase 2 (bakeoff-results#23).
Blocks
Rethunk-AI/bakeoff-results#23— Sigstore hard gate (Phase 2 waits on this)Pending
cosign verify-blobwith bakeoff-results signers.yaml subject— Bastion