Skip to content

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

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

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions