Skip to content

ci(release): signature verify gate + new-bundle-format fix + ADR-011 - #55

Merged
jmservera merged 1 commit into
mainfrom
release-signing/harden-verify
Jul 30, 2026
Merged

ci(release): signature verify gate + new-bundle-format fix + ADR-011#55
jmservera merged 1 commit into
mainfrom
release-signing/harden-verify

Conversation

@jmservera

Copy link
Copy Markdown
Owner

Hardening follow-up after the signed beta v0.4.0-beta.2 shipped and was verified independently.

Why

Independent verification of the published release exposed that the pipeline emits new Sigstore bundle-format signatures, while every cosign verify-blob site (installer, README, and the intended CI check) omitted --new-bundle-format. Those commands would have failed closed against real bundles.

Evidence:

  • Image: gh attestation verify oci://ghcr.io/jmservera/uberos/frontend:0.4.0-beta.2 --repo jmservera/UbeROSVerification succeeded.
  • Bundle: cosign verify-blob checksums.txt --new-bundle-format --bundle checksums.txt.cosign.bundle ...Verified OK (fails without the flag).
  • Bundle top-level keys: mediaType, verificationMaterial, messageSignature (new format).

What

  • CI verify gate (verify-signing job) in release.yml: on every tag, re-verifies the published frontend image attestation with gh attestation verify and the bundle signature with cosign verify-blob --new-bundle-format. Signing can no longer silently regress.
  • Format fix: --new-bundle-format added to install.sh, README.md, and both cosign sign-blob steps (explicit on both sides so a cosign default change cannot break the contract).
  • ADR-011 documents the keyless hybrid decision and the installer fail-closed-over-fail-open verification contract; index updated.

Validation

  • actionlint release.yml → clean.
  • sh -n install.sh + shellcheck --shell=sh install.sh → clean.
  • Live re-verify of v0.4.0-beta.2 bundle with the corrected flag → Verified OK.

Refs #15

Left for review, not self-merged. The verify-signing gate exercises on the next tag.

Independent verification of the v0.4.0-beta.2 release showed the pipeline emits new Sigstore bundle-format signatures, while every cosign verify-blob site omitted --new-bundle-format and would fail closed against real bundles.

- release.yml: add a verify-signing job that re-verifies the published image attestation (gh attestation verify) and the bundle signature (cosign verify-blob --new-bundle-format) on every tag

- release.yml: make --new-bundle-format explicit on both sign-blob steps

- install.sh, README.md: pass --new-bundle-format on verify-blob to match the emitted format

- docs: add ADR-011 (release artifact signing) and index row

Refs #15

🔏 - Generated by Copilot
Copilot AI review requested due to automatic review settings July 30, 2026 12:30

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR hardens the release signing pipeline and documentation after independent verification of v0.4.0-beta.2 revealed a mismatch with Sigstore’s new bundle format expectations, ensuring both CI and consumers can reliably verify published artifacts.

Changes:

  • Add --new-bundle-format to all cosign verify-blob usage sites (README + installer) to correctly verify modern bundle signatures.
  • Make the release workflow explicitly emit new-bundle-format bundles during signing (cosign sign-blob --new-bundle-format) to lock the contract on both the signing and verifying sides.
  • Add a verify-signing job to the release workflow to re-verify the published image attestation and the published bundle signature on every tag; document the decision in ADR-011 and index it.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.

Show a summary per file
File Description
README.md Updates the release verification instructions to include --new-bundle-format for cosign verify-blob.
install.sh Updates installer-time signature verification to include --new-bundle-format for fail-closed verification when cosign/signature are present.
docs/decisions/README.md Adds ADR-011 to the ADR index with implementation pointers.
docs/decisions/ADR-011-release-signing.md New ADR documenting the keyless hybrid approach, installer contract, and CI verification gate.
.github/workflows/release.yml Explicitly signs with new-bundle-format and adds a verify-signing job to prevent silent signing regressions.

@jmservera
jmservera merged commit 2458b6c into main Jul 30, 2026
15 checks passed
@jmservera
jmservera deleted the release-signing/harden-verify branch July 30, 2026 13:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants