Skip to content

CI: package-results.yml — automated Sigstore bundle signing and submission workflow #34

@AlbinoGeek

Description

@AlbinoGeek

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:

  1. Trigger — on workflow_dispatch (with run result artifact path as input) and/or on completion of the benchmark run workflow
  2. Package — call bench publish package <result.json> to build the bundle (reports, manifest, SHA inventory)
  3. 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
  4. 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

  • Confirm trigger event (dispatch vs automatic post-bench)
  • Confirm submit path (PR vs direct push to bakeoff-results main)
  • Decide backfill / grandfather policy for existing stubs
  • Implement workflow
  • Smoke-test: verify cosign bundle passes cosign verify-blob with bakeoff-results signers.yaml subject

— Bastion

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions