Skip to content

Binary attestations: phase 1 – attested release binaries with provenance and SBOMs - #1435

Draft
prk-Jr wants to merge 31 commits into
mainfrom
feature/binary-attestations-phase1
Draft

prk-Jr wants to merge 31 commits into
mainfrom
feature/binary-attestations-phase1

Conversation

@prk-Jr

@prk-Jr prk-Jr commented Oct 22, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • ab6e549: publish seven binaries, SPDX 2.3, fourteen genuine signature bundles and SHA256SUMS (29 files).
  • Retain immutable source/target/package/variant facts, runtime Axum binding, digest-pinned native smokes and macOS 13 checks.
  • Include the reviewed startup diagnostics, bounded API reads, strict current-release verification and stronger build-facts/tag-gate tests.

Changes

Files Change
Release/test/format workflows; phase1* Isolated build/sign/publish, enablement/tag gates, exact handoffs and failure coverage
Core/CLI/Fastly/Axum Rust Build facts, runtime bind controls and visible startup refusal
Policies/cohort; guides/spec notes; AGENTS.md; domains.rs Deferred boundaries, operator verification and reference-host review

ab6e549 size: 37 new files / 10,132 lines; existing +642/−50. Code additions: 1,045 Rust + 2,524 workflow/script/test/cohort lines. Ceiling waived; scope unchanged.

Compatibility audit.

Closes

Part of #1235 until D7 (IAB settings) is complete.

Spec / Plan

Spec · Plan. The spec was reviewed in #1262 (two rounds) and is carried here with phase labels and Phase 1 notes; approving this PR approves the phased spec. #1235 asked for a separate spec PR; this PR combines them by agreement.

Test plan

ab6e549: hosted CI is green: 32 passed checks, seven builds; signing/publication skipped on the PR. Exact-head rehearsal .12 and full independent verification passed: 29 immutable prerelease files (not Latest), both predicates/identities online and offline for all seven binaries, SPDX equality, all asset/checksum checks, native smokes and CLI source identity. The prior .11 draft-create denial is recorded; .12 used the same reviewed code at the fork branch head, without source/settings/token changes.

#1235 Done when and exact signer commands
  • D1 Spec approval/merge — maintainer action; combined by agreement.
  • D2 No-config requirement and compile-time inventory — done; audit limitations stated.
  • D3 Immutable publication — .12 passed at this exact head; IAB settings remain D7.
  • D4 Every binary/predicate/asset verified — full .12 transcript above.
  • D5 Fresh npm and refusal of skip/prebuilt controls — done.
  • D6 Deploy verified release bytes — documented operator path; no deployment performed.
  • D7 IAB immutable releases and restricted v* tags — maintainer setting.
  • D8 CLI/operator docs and changelog — done.

The issue example pins release.yml; the reviewed signer is reusable release-build.yml. artifact-metadata: write is intentionally omitted (not needed for file attestations). Topology alone does not establish SLSA Build Level 3.

For each binary, run both predicates (https://slsa.dev/provenance/v1, https://spdx.dev/Document/v2.3) and these identities separately, with independently approved source pins:

checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json"
  --source-ref "refs/tags/$TAG" --source-digest "$COMMIT"
  --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
gh attestation verify "$asset" "${checks[@]}" \
  --signer-workflow "$REPO/.github/workflows/release-build.yml"
gh attestation verify "$asset" "${checks[@]}" \
  --cert-identity "https://github.com/$REPO/.github/workflows/release-build.yml@refs/tags/$TAG"

Allowlist changes needing maintainer review

Exact hosts: actions.github.io (SLSA buildType), slsa.dev (provenance), spdx.dev (SPDX), cli.github.com (verification docs). Reviewed per-line suppressions: cyclonedx.org (intermediate-format reference; removed from allowlist), api.github.com, uploads.github.com.

Phase 2 notes: producing-job binding remains deferred: a compromised build dependency on one runner could replace another job's artifact, equivalent to a compromised build of the same source; the later transfer-binding slice addresses this. Controlled composition/qualification and further Axum hardening remain deferred.

Human gates

Keep draft; no reviewers. Exact-head .12 verification is complete. Maintainers must enable immutable releases and the restricted v* ruleset before setting RELEASE_PUBLICATION_ENABLED=true; no settings token/API precheck, by review decision. Decide rc-branch tag eligibility; approve the spec/merge, reference hosts/suppressions and first production release. No IAB tags, releases or settings changes.

@prk-Jr prk-Jr self-assigned this Oct 22, 2026
@prk-Jr

prk-Jr commented Oct 22, 2026

Copy link
Copy Markdown
Collaborator Author

Rehearsal record at 41896cb0798f98e759c020965ed675fe1e8808dc, lightweight fork tag v0.0.0-rehearsal.2.

Run · immutable release. Release ID 420703797, 17 exact assets, no index/build-evidence/build-recipe/rebuild-check/inventory companions.

All four builds and signers passed. Publication, initial release-ID/immutability validation, gh release verify, and all 17 publisher asset checks passed. The job then failed at its final read-only API check with UND_ERR_SOCKET (other side closed). No publication retry, tag reuse or deletion has occurred. A minimal connection-header fix is being validated; the next workflow attempt needs a separately approved fresh tag.

Independent verification below completed with exit status 0: one release verification, 17 asset verifications, 16 attestation verifications (four binaries × provenance/SPDX × signer-prefix/exact tag-ref identity), 16 checksum entries and four signed-SPDX predicate comparisons. It uses the guide commands with only repository/tag/commit substitutions. Workflow CLI: 2.102.0; independent CLI: 2.97.0.

Full independent verification transcript — commands and output
gh version 2.97.0 (2026-07-31)
https://github.com/cli/cli/releases/tag/v2.97.0
+ set -euo pipefail
+ REPO=prk-Jr/trusted-server
+ TAG=v0.0.0-rehearsal.2
+ COMMIT=41896cb0798f98e759c020965ed675fe1e8808dc
+ ASSETS=(trusted-server-fastly.wasm ts-x86_64-unknown-linux-gnu ts-aarch64-apple-darwin ts-x86_64-apple-darwin)
+ gh release download v0.0.0-rehearsal.2 --repo prk-Jr/trusted-server --dir .
++ gh api repos/prk-Jr/trusted-server/releases/tags/v0.0.0-rehearsal.2 --jq .immutable
+ test true = true
+ gh release verify v0.0.0-rehearsal.2 --repo prk-Jr/trusted-server
Resolved tag v0.0.0-rehearsal.2 to sha1:41896cb0798f98e759c020965ed675fe1e8808dc
Loaded attestation from GitHub API
✓ Release v0.0.0-rehearsal.2 verified!

Assets
SHA256SUMS	sha256:476fb3a4f484fbd869ef2999641fec71bda78cbc7060869d781293bf6864f1a5
trusted-server-fastly.wasm	sha256:8631ba5258f70d5379bfa2d760c6942273567c49ca12e8bb887435c1252df544
trusted-server-fastly.wasm.provenance.sigstore.json	sha256:893330290b769329c3086e96cda7e8d26ab79f64e233598f80f21142d631e48b
trusted-server-fastly.wasm.sbom.sigstore.json	sha256:9e573493fcbc26ab5bc24a4be32319da1b0626dc51a24fc940a68f072682a45f
trusted-server-fastly.wasm.spdx.json	sha256:488ecb5253eb92b0ad0781f8cd96cd8c380acc45c05d25eeaf673c6846aec2c5
ts-aarch64-apple-darwin	sha256:e9c304e55fceb4d0e2f6ac14ac5be9bed368b2628d1a90d6f4539757e129469a
ts-aarch64-apple-darwin.provenance.sigstore.json	sha256:e760be21e32de4e56f3ff5f1fc010e9a1f868541a3c4a4b4ae85a6e6b57be94e
ts-aarch64-apple-darwin.sbom.sigstore.json	sha256:3ae4012afd48713ee795b9901bd82073477479e685a27f084a2fe562d8db7daf
ts-aarch64-apple-darwin.spdx.json	sha256:d2d91805e717da7e98535c99536b7040eafd308f793dfda01698f8388a05be1f
ts-x86_64-apple-darwin	sha256:5f7ac1d7f7cf879a08ac8a767aa5dc9f9c92994f2188b2613f2b4739e86de3b0
ts-x86_64-apple-darwin.provenance.sigstore.json	sha256:c7205112b4423c03112a119325a64c13f81ea64308b9112dea828ea7c56887a9
ts-x86_64-apple-darwin.sbom.sigstore.json	sha256:48f523a296fec23e65a87e7294690ae23cd3c5627b8c282714c370976b4e5b73
ts-x86_64-apple-darwin.spdx.json	sha256:d1febe34dc5be26837c9f7cdbbbaabfcf32ced4e18bcbde2e5117f46ae292725
ts-x86_64-unknown-linux-gnu	sha256:18a8ee34706eda39991991b3d69667aa368850e7995d8124389adad9c062794d
ts-x86_64-unknown-linux-gnu.provenance.sigstore.json	sha256:6a96392a7ab2257b51cef295ca755069e408e0fd14d31bee0839262d2fe40136
ts-x86_64-unknown-linux-gnu.sbom.sigstore.json	sha256:5b3f309286752369d3e6485283ffaa8b848d8322ed42e9ef5a4460a83cd175e6
ts-x86_64-unknown-linux-gnu.spdx.json	sha256:e30af27a8dc1df5b348c1a0c6e17bad9d7735178bda342fd857c660f299e464f

+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.2 trusted-server-fastly.wasm --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm: sha256:8631ba5258f70d5379bfa2d760c6942273567c49ca12e8bb887435c1252df544
Resolved tag v0.0.0-rehearsal.2 to sha1:41896cb0798f98e759c020965ed675fe1e8808dc
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm is present in release v0.0.0-rehearsal.2
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.2 trusted-server-fastly.wasm.spdx.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm.spdx.json: sha256:488ecb5253eb92b0ad0781f8cd96cd8c380acc45c05d25eeaf673c6846aec2c5
Resolved tag v0.0.0-rehearsal.2 to sha1:41896cb0798f98e759c020965ed675fe1e8808dc
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm.spdx.json is present in release v0.0.0-rehearsal.2
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.2 trusted-server-fastly.wasm.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm.provenance.sigstore.json: sha256:893330290b769329c3086e96cda7e8d26ab79f64e233598f80f21142d631e48b
Resolved tag v0.0.0-rehearsal.2 to sha1:41896cb0798f98e759c020965ed675fe1e8808dc
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm.provenance.sigstore.json is present in release v0.0.0-rehearsal.2
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.2 trusted-server-fastly.wasm.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm.sbom.sigstore.json: sha256:9e573493fcbc26ab5bc24a4be32319da1b0626dc51a24fc940a68f072682a45f
Resolved tag v0.0.0-rehearsal.2 to sha1:41896cb0798f98e759c020965ed675fe1e8808dc
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm.sbom.sigstore.json is present in release v0.0.0-rehearsal.2
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.2 ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu: sha256:18a8ee34706eda39991991b3d69667aa368850e7995d8124389adad9c062794d
Resolved tag v0.0.0-rehearsal.2 to sha1:41896cb0798f98e759c020965ed675fe1e8808dc
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu is present in release v0.0.0-rehearsal.2
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.2 ts-x86_64-unknown-linux-gnu.spdx.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu.spdx.json: sha256:e30af27a8dc1df5b348c1a0c6e17bad9d7735178bda342fd857c660f299e464f
Resolved tag v0.0.0-rehearsal.2 to sha1:41896cb0798f98e759c020965ed675fe1e8808dc
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.spdx.json is present in release v0.0.0-rehearsal.2
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.2 ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu.provenance.sigstore.json: sha256:6a96392a7ab2257b51cef295ca755069e408e0fd14d31bee0839262d2fe40136
Resolved tag v0.0.0-rehearsal.2 to sha1:41896cb0798f98e759c020965ed675fe1e8808dc
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.provenance.sigstore.json is present in release v0.0.0-rehearsal.2
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.2 ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu.sbom.sigstore.json: sha256:5b3f309286752369d3e6485283ffaa8b848d8322ed42e9ef5a4460a83cd175e6
Resolved tag v0.0.0-rehearsal.2 to sha1:41896cb0798f98e759c020965ed675fe1e8808dc
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.sbom.sigstore.json is present in release v0.0.0-rehearsal.2
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.2 ts-aarch64-apple-darwin --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin: sha256:e9c304e55fceb4d0e2f6ac14ac5be9bed368b2628d1a90d6f4539757e129469a
Resolved tag v0.0.0-rehearsal.2 to sha1:41896cb0798f98e759c020965ed675fe1e8808dc
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin is present in release v0.0.0-rehearsal.2
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.2 ts-aarch64-apple-darwin.spdx.json --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin.spdx.json: sha256:d2d91805e717da7e98535c99536b7040eafd308f793dfda01698f8388a05be1f
Resolved tag v0.0.0-rehearsal.2 to sha1:41896cb0798f98e759c020965ed675fe1e8808dc
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin.spdx.json is present in release v0.0.0-rehearsal.2
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.2 ts-aarch64-apple-darwin.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin.provenance.sigstore.json: sha256:e760be21e32de4e56f3ff5f1fc010e9a1f868541a3c4a4b4ae85a6e6b57be94e
Resolved tag v0.0.0-rehearsal.2 to sha1:41896cb0798f98e759c020965ed675fe1e8808dc
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin.provenance.sigstore.json is present in release v0.0.0-rehearsal.2
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.2 ts-aarch64-apple-darwin.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin.sbom.sigstore.json: sha256:3ae4012afd48713ee795b9901bd82073477479e685a27f084a2fe562d8db7daf
Resolved tag v0.0.0-rehearsal.2 to sha1:41896cb0798f98e759c020965ed675fe1e8808dc
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin.sbom.sigstore.json is present in release v0.0.0-rehearsal.2
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.2 ts-x86_64-apple-darwin --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin: sha256:5f7ac1d7f7cf879a08ac8a767aa5dc9f9c92994f2188b2613f2b4739e86de3b0
Resolved tag v0.0.0-rehearsal.2 to sha1:41896cb0798f98e759c020965ed675fe1e8808dc
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin is present in release v0.0.0-rehearsal.2
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.2 ts-x86_64-apple-darwin.spdx.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin.spdx.json: sha256:d1febe34dc5be26837c9f7cdbbbaabfcf32ced4e18bcbde2e5117f46ae292725
Resolved tag v0.0.0-rehearsal.2 to sha1:41896cb0798f98e759c020965ed675fe1e8808dc
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin.spdx.json is present in release v0.0.0-rehearsal.2
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.2 ts-x86_64-apple-darwin.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin.provenance.sigstore.json: sha256:c7205112b4423c03112a119325a64c13f81ea64308b9112dea828ea7c56887a9
Resolved tag v0.0.0-rehearsal.2 to sha1:41896cb0798f98e759c020965ed675fe1e8808dc
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin.provenance.sigstore.json is present in release v0.0.0-rehearsal.2
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.2 ts-x86_64-apple-darwin.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin.sbom.sigstore.json: sha256:48f523a296fec23e65a87e7294690ae23cd3c5627b8c282714c370976b4e5b73
Resolved tag v0.0.0-rehearsal.2 to sha1:41896cb0798f98e759c020965ed675fe1e8808dc
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin.sbom.sigstore.json is present in release v0.0.0-rehearsal.2
+ gh release verify-asset v0.0.0-rehearsal.2 SHA256SUMS --repo prk-Jr/trusted-server
Calculated digest for SHA256SUMS: sha256:476fb3a4f484fbd869ef2999641fec71bda78cbc7060869d781293bf6864f1a5
Resolved tag v0.0.0-rehearsal.2 to sha1:41896cb0798f98e759c020965ed675fe1e8808dc
Loaded attestation from GitHub API

✓ Verification succeeded! SHA256SUMS is present in release v0.0.0-rehearsal.2
+ shasum -a 256 --check SHA256SUMS
trusted-server-fastly.wasm: OK
trusted-server-fastly.wasm.spdx.json: OK
trusted-server-fastly.wasm.provenance.sigstore.json: OK
trusted-server-fastly.wasm.sbom.sigstore.json: OK
ts-aarch64-apple-darwin: OK
ts-aarch64-apple-darwin.spdx.json: OK
ts-aarch64-apple-darwin.provenance.sigstore.json: OK
ts-aarch64-apple-darwin.sbom.sigstore.json: OK
ts-x86_64-apple-darwin: OK
ts-x86_64-apple-darwin.spdx.json: OK
ts-x86_64-apple-darwin.provenance.sigstore.json: OK
ts-x86_64-apple-darwin.sbom.sigstore.json: OK
ts-x86_64-unknown-linux-gnu: OK
ts-x86_64-unknown-linux-gnu.spdx.json: OK
ts-x86_64-unknown-linux-gnu.provenance.sigstore.json: OK
ts-x86_64-unknown-linux-gnu.sbom.sigstore.json: OK
+ WORKFLOW=prk-Jr/trusted-server/.github/workflows/release-build.yml
+ for asset in "${ASSETS[@]}"
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.2 --source-digest 41896cb0798f98e759c020965ed675fe1e8808dc --signer-digest 41896cb0798f98e759c020965ed675fe1e8808dc --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.2 --source-digest 41896cb0798f98e759c020965ed675fe1e8808dc --signer-digest 41896cb0798f98e759c020965ed675fe1e8808dc --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ for asset in "${ASSETS[@]}"
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.2 --source-digest 41896cb0798f98e759c020965ed675fe1e8808dc --signer-digest 41896cb0798f98e759c020965ed675fe1e8808dc --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.2 --source-digest 41896cb0798f98e759c020965ed675fe1e8808dc --signer-digest 41896cb0798f98e759c020965ed675fe1e8808dc --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ for asset in "${ASSETS[@]}"
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.2 --source-digest 41896cb0798f98e759c020965ed675fe1e8808dc --signer-digest 41896cb0798f98e759c020965ed675fe1e8808dc --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.2 --source-digest 41896cb0798f98e759c020965ed675fe1e8808dc --signer-digest 41896cb0798f98e759c020965ed675fe1e8808dc --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ for asset in "${ASSETS[@]}"
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.2 --source-digest 41896cb0798f98e759c020965ed675fe1e8808dc --signer-digest 41896cb0798f98e759c020965ed675fe1e8808dc --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.2 --source-digest 41896cb0798f98e759c020965ed675fe1e8808dc --signer-digest 41896cb0798f98e759c020965ed675fe1e8808dc --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ IDENTITY=https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.2
+ for asset in "${ASSETS[@]}"
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.2 --source-ref refs/tags/v0.0.0-rehearsal.2 --source-digest 41896cb0798f98e759c020965ed675fe1e8808dc --signer-digest 41896cb0798f98e759c020965ed675fe1e8808dc --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.2 --source-ref refs/tags/v0.0.0-rehearsal.2 --source-digest 41896cb0798f98e759c020965ed675fe1e8808dc --signer-digest 41896cb0798f98e759c020965ed675fe1e8808dc --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ jq -e --slurpfile document trusted-server-fastly.wasm.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-fastly.wasm.sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.2 --source-ref refs/tags/v0.0.0-rehearsal.2 --source-digest 41896cb0798f98e759c020965ed675fe1e8808dc --signer-digest 41896cb0798f98e759c020965ed675fe1e8808dc --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.2 --source-ref refs/tags/v0.0.0-rehearsal.2 --source-digest 41896cb0798f98e759c020965ed675fe1e8808dc --signer-digest 41896cb0798f98e759c020965ed675fe1e8808dc --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ jq -e --slurpfile document ts-x86_64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-unknown-linux-gnu.sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.2 --source-ref refs/tags/v0.0.0-rehearsal.2 --source-digest 41896cb0798f98e759c020965ed675fe1e8808dc --signer-digest 41896cb0798f98e759c020965ed675fe1e8808dc --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.2 --source-ref refs/tags/v0.0.0-rehearsal.2 --source-digest 41896cb0798f98e759c020965ed675fe1e8808dc --signer-digest 41896cb0798f98e759c020965ed675fe1e8808dc --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ jq -e --slurpfile document ts-aarch64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-aarch64-apple-darwin.sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.2 --source-ref refs/tags/v0.0.0-rehearsal.2 --source-digest 41896cb0798f98e759c020965ed675fe1e8808dc --signer-digest 41896cb0798f98e759c020965ed675fe1e8808dc --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.2 --source-ref refs/tags/v0.0.0-rehearsal.2 --source-digest 41896cb0798f98e759c020965ed675fe1e8808dc --signer-digest 41896cb0798f98e759c020965ed675fe1e8808dc --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ jq -e --slurpfile document ts-x86_64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-apple-darwin.sbom-verification.json
true

Verification exit status: 0

@prk-Jr

prk-Jr commented Oct 22, 2026

Copy link
Copy Markdown
Collaborator Author

Successful rehearsal at ca902b6fea57f6cc37d2054687b4996687e9c476, explicitly approved lightweight fork tag v0.0.0-rehearsal.3.

Workflow — all jobs passed · immutable release · publisher log.

Release ID 420812096: immutable=true, draft=false, 17 exact nonempty assets (four binaries, four SPDX2.3 documents, eight real action-produced bundles and SHA256SUMS). No index, inventory, build-evidence, build-recipe or rebuild-check companions.

All four builds, all four isolated signing jobs, publication, cryptographic release/membership verification and the final release-ID/API read passed. The connection fix is exercised successfully; no mutation retry or tag reuse occurred. Immutable .2 remains untouched. No IAB tags, releases or settings were changed.

Independent verification completed with exit status 0 using checksum-verified GitHub CLI2.102.0, matching the publisher's recorded version: one release verification, 17 asset verifications, 16 attestation verifications (four binaries × provenance/SPDX × signer-prefix/exact tag-ref identity), all16 checksum entries and four signed-SPDX predicate comparisons. Commands are the guide's verification blocks with only repository/tag/commit substitutions.

Full verification transcript — commands and output
gh version 2.102.0 (2026-09-30)
https://github.com/cli/cli/releases/tag/v2.102.0
+ set -euo pipefail
+ REPO=prk-Jr/trusted-server
+ TAG=v0.0.0-rehearsal.3
+ COMMIT=ca902b6fea57f6cc37d2054687b4996687e9c476
+ ASSETS=(trusted-server-fastly.wasm ts-x86_64-unknown-linux-gnu ts-aarch64-apple-darwin ts-x86_64-apple-darwin)
+ gh release download v0.0.0-rehearsal.3 --repo prk-Jr/trusted-server --dir .
++ gh api repos/prk-Jr/trusted-server/releases/tags/v0.0.0-rehearsal.3 --jq .immutable
+ test true = true
+ gh release verify v0.0.0-rehearsal.3 --repo prk-Jr/trusted-server
Resolved tag v0.0.0-rehearsal.3 to sha1:ca902b6fea57f6cc37d2054687b4996687e9c476
Loaded attestation from GitHub API
✓ Release v0.0.0-rehearsal.3 verified!

Assets
SHA256SUMS	sha256:29686a2ae6ada2c3fd0ac199ae6de311f911833a8c54fa440dd1ea7b96af80fa
trusted-server-fastly.wasm	sha256:89d37e3c609352c02db926f84855207cced5bdbf20ebe64e749508201930839a
trusted-server-fastly.wasm.provenance.sigstore.json	sha256:5496be6f043325eb48825f7b4a47cad8101ece122b8079dd6de9cd0b594de027
trusted-server-fastly.wasm.sbom.sigstore.json	sha256:ed1cc14bc191263001bc223450d5e927f6190f94a87287fa91f0675248789685
trusted-server-fastly.wasm.spdx.json	sha256:39ce9539a54c3b429c63703bddcdad8003b7f82acee9fa65cb64f3dc7f1389fa
ts-aarch64-apple-darwin	sha256:e9c304e55fceb4d0e2f6ac14ac5be9bed368b2628d1a90d6f4539757e129469a
ts-aarch64-apple-darwin.provenance.sigstore.json	sha256:5077668b55b4d60c9da64e128898d168c40b08d4b0ed8c056f0b1cddcd4e03b9
ts-aarch64-apple-darwin.sbom.sigstore.json	sha256:abfdb64938a232d8bda4c9dea6a033b17ce8d99180bb45f0ff04f85db216ecc3
ts-aarch64-apple-darwin.spdx.json	sha256:829d68025e1819349df37f48dfc920f077987aafaae295be1dad3745c465b82b
ts-x86_64-apple-darwin	sha256:5f7ac1d7f7cf879a08ac8a767aa5dc9f9c92994f2188b2613f2b4739e86de3b0
ts-x86_64-apple-darwin.provenance.sigstore.json	sha256:33bff32c9168afd637f05d42dfebf5868f56df67bdb78311bbd10d3c94a95887
ts-x86_64-apple-darwin.sbom.sigstore.json	sha256:27fb0981574dccad90fd3727722791efa9f652c11123c582c6e0531c0a330e96
ts-x86_64-apple-darwin.spdx.json	sha256:4c526f338f566d390df2ed86161b77d5d56b7fef97f381200dbfd41e8b1e111c
ts-x86_64-unknown-linux-gnu	sha256:2e734d6373ff472eb9799cbdefff5c235c97a3689c2e9a41adbc9f6df3b36c22
ts-x86_64-unknown-linux-gnu.provenance.sigstore.json	sha256:090fa5ed56e352571ba8d56b7599ad315fdcf77c8227fd1aeb4dc320f3f6f150
ts-x86_64-unknown-linux-gnu.sbom.sigstore.json	sha256:c34a77631639638b47b779096fa866633e4a37fd8b19d52339e1b35362348ba1
ts-x86_64-unknown-linux-gnu.spdx.json	sha256:da354431226d3dd9f51bc9ec09cc8ab560cfa0bc231657dc3fde3b6b3d6ff549

+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.3 trusted-server-fastly.wasm --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm: sha256:89d37e3c609352c02db926f84855207cced5bdbf20ebe64e749508201930839a
Resolved tag v0.0.0-rehearsal.3 to sha1:ca902b6fea57f6cc37d2054687b4996687e9c476
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm is present in release v0.0.0-rehearsal.3
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.3 trusted-server-fastly.wasm.spdx.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm.spdx.json: sha256:39ce9539a54c3b429c63703bddcdad8003b7f82acee9fa65cb64f3dc7f1389fa
Resolved tag v0.0.0-rehearsal.3 to sha1:ca902b6fea57f6cc37d2054687b4996687e9c476
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm.spdx.json is present in release v0.0.0-rehearsal.3
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.3 trusted-server-fastly.wasm.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm.provenance.sigstore.json: sha256:5496be6f043325eb48825f7b4a47cad8101ece122b8079dd6de9cd0b594de027
Resolved tag v0.0.0-rehearsal.3 to sha1:ca902b6fea57f6cc37d2054687b4996687e9c476
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm.provenance.sigstore.json is present in release v0.0.0-rehearsal.3
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.3 trusted-server-fastly.wasm.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm.sbom.sigstore.json: sha256:ed1cc14bc191263001bc223450d5e927f6190f94a87287fa91f0675248789685
Resolved tag v0.0.0-rehearsal.3 to sha1:ca902b6fea57f6cc37d2054687b4996687e9c476
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm.sbom.sigstore.json is present in release v0.0.0-rehearsal.3
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.3 ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu: sha256:2e734d6373ff472eb9799cbdefff5c235c97a3689c2e9a41adbc9f6df3b36c22
Resolved tag v0.0.0-rehearsal.3 to sha1:ca902b6fea57f6cc37d2054687b4996687e9c476
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu is present in release v0.0.0-rehearsal.3
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.3 ts-x86_64-unknown-linux-gnu.spdx.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu.spdx.json: sha256:da354431226d3dd9f51bc9ec09cc8ab560cfa0bc231657dc3fde3b6b3d6ff549
Resolved tag v0.0.0-rehearsal.3 to sha1:ca902b6fea57f6cc37d2054687b4996687e9c476
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.spdx.json is present in release v0.0.0-rehearsal.3
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.3 ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu.provenance.sigstore.json: sha256:090fa5ed56e352571ba8d56b7599ad315fdcf77c8227fd1aeb4dc320f3f6f150
Resolved tag v0.0.0-rehearsal.3 to sha1:ca902b6fea57f6cc37d2054687b4996687e9c476
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.provenance.sigstore.json is present in release v0.0.0-rehearsal.3
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.3 ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu.sbom.sigstore.json: sha256:c34a77631639638b47b779096fa866633e4a37fd8b19d52339e1b35362348ba1
Resolved tag v0.0.0-rehearsal.3 to sha1:ca902b6fea57f6cc37d2054687b4996687e9c476
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.sbom.sigstore.json is present in release v0.0.0-rehearsal.3
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.3 ts-aarch64-apple-darwin --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin: sha256:e9c304e55fceb4d0e2f6ac14ac5be9bed368b2628d1a90d6f4539757e129469a
Resolved tag v0.0.0-rehearsal.3 to sha1:ca902b6fea57f6cc37d2054687b4996687e9c476
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin is present in release v0.0.0-rehearsal.3
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.3 ts-aarch64-apple-darwin.spdx.json --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin.spdx.json: sha256:829d68025e1819349df37f48dfc920f077987aafaae295be1dad3745c465b82b
Resolved tag v0.0.0-rehearsal.3 to sha1:ca902b6fea57f6cc37d2054687b4996687e9c476
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin.spdx.json is present in release v0.0.0-rehearsal.3
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.3 ts-aarch64-apple-darwin.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin.provenance.sigstore.json: sha256:5077668b55b4d60c9da64e128898d168c40b08d4b0ed8c056f0b1cddcd4e03b9
Resolved tag v0.0.0-rehearsal.3 to sha1:ca902b6fea57f6cc37d2054687b4996687e9c476
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin.provenance.sigstore.json is present in release v0.0.0-rehearsal.3
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.3 ts-aarch64-apple-darwin.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin.sbom.sigstore.json: sha256:abfdb64938a232d8bda4c9dea6a033b17ce8d99180bb45f0ff04f85db216ecc3
Resolved tag v0.0.0-rehearsal.3 to sha1:ca902b6fea57f6cc37d2054687b4996687e9c476
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin.sbom.sigstore.json is present in release v0.0.0-rehearsal.3
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.3 ts-x86_64-apple-darwin --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin: sha256:5f7ac1d7f7cf879a08ac8a767aa5dc9f9c92994f2188b2613f2b4739e86de3b0
Resolved tag v0.0.0-rehearsal.3 to sha1:ca902b6fea57f6cc37d2054687b4996687e9c476
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin is present in release v0.0.0-rehearsal.3
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.3 ts-x86_64-apple-darwin.spdx.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin.spdx.json: sha256:4c526f338f566d390df2ed86161b77d5d56b7fef97f381200dbfd41e8b1e111c
Resolved tag v0.0.0-rehearsal.3 to sha1:ca902b6fea57f6cc37d2054687b4996687e9c476
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin.spdx.json is present in release v0.0.0-rehearsal.3
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.3 ts-x86_64-apple-darwin.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin.provenance.sigstore.json: sha256:33bff32c9168afd637f05d42dfebf5868f56df67bdb78311bbd10d3c94a95887
Resolved tag v0.0.0-rehearsal.3 to sha1:ca902b6fea57f6cc37d2054687b4996687e9c476
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin.provenance.sigstore.json is present in release v0.0.0-rehearsal.3
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.3 ts-x86_64-apple-darwin.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin.sbom.sigstore.json: sha256:27fb0981574dccad90fd3727722791efa9f652c11123c582c6e0531c0a330e96
Resolved tag v0.0.0-rehearsal.3 to sha1:ca902b6fea57f6cc37d2054687b4996687e9c476
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin.sbom.sigstore.json is present in release v0.0.0-rehearsal.3
+ gh release verify-asset v0.0.0-rehearsal.3 SHA256SUMS --repo prk-Jr/trusted-server
Calculated digest for SHA256SUMS: sha256:29686a2ae6ada2c3fd0ac199ae6de311f911833a8c54fa440dd1ea7b96af80fa
Resolved tag v0.0.0-rehearsal.3 to sha1:ca902b6fea57f6cc37d2054687b4996687e9c476
Loaded attestation from GitHub API

✓ Verification succeeded! SHA256SUMS is present in release v0.0.0-rehearsal.3
+ shasum -a 256 --check SHA256SUMS
trusted-server-fastly.wasm: OK
trusted-server-fastly.wasm.spdx.json: OK
trusted-server-fastly.wasm.provenance.sigstore.json: OK
trusted-server-fastly.wasm.sbom.sigstore.json: OK
ts-aarch64-apple-darwin: OK
ts-aarch64-apple-darwin.spdx.json: OK
ts-aarch64-apple-darwin.provenance.sigstore.json: OK
ts-aarch64-apple-darwin.sbom.sigstore.json: OK
ts-x86_64-apple-darwin: OK
ts-x86_64-apple-darwin.spdx.json: OK
ts-x86_64-apple-darwin.provenance.sigstore.json: OK
ts-x86_64-apple-darwin.sbom.sigstore.json: OK
ts-x86_64-unknown-linux-gnu: OK
ts-x86_64-unknown-linux-gnu.spdx.json: OK
ts-x86_64-unknown-linux-gnu.provenance.sigstore.json: OK
ts-x86_64-unknown-linux-gnu.sbom.sigstore.json: OK
+ WORKFLOW=prk-Jr/trusted-server/.github/workflows/release-build.yml
+ for asset in "${ASSETS[@]}"
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.3 --source-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --signer-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.3 --source-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --signer-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ for asset in "${ASSETS[@]}"
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.3 --source-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --signer-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.3 --source-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --signer-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ for asset in "${ASSETS[@]}"
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.3 --source-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --signer-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.3 --source-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --signer-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ for asset in "${ASSETS[@]}"
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.3 --source-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --signer-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.3 --source-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --signer-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ IDENTITY=https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.3
+ for asset in "${ASSETS[@]}"
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.3 --source-ref refs/tags/v0.0.0-rehearsal.3 --source-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --signer-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.3 --source-ref refs/tags/v0.0.0-rehearsal.3 --source-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --signer-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ jq -e --slurpfile document trusted-server-fastly.wasm.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-fastly.wasm.sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.3 --source-ref refs/tags/v0.0.0-rehearsal.3 --source-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --signer-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.3 --source-ref refs/tags/v0.0.0-rehearsal.3 --source-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --signer-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ jq -e --slurpfile document ts-x86_64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-unknown-linux-gnu.sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.3 --source-ref refs/tags/v0.0.0-rehearsal.3 --source-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --signer-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.3 --source-ref refs/tags/v0.0.0-rehearsal.3 --source-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --signer-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ jq -e --slurpfile document ts-aarch64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-aarch64-apple-darwin.sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.3 --source-ref refs/tags/v0.0.0-rehearsal.3 --source-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --signer-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.3 --source-ref refs/tags/v0.0.0-rehearsal.3 --source-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --signer-digest ca902b6fea57f6cc37d2054687b4996687e9c476 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ jq -e --slurpfile document ts-x86_64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-apple-darwin.sbom-verification.json
true

Verification exit status: 0

@prk-Jr

prk-Jr commented Oct 22, 2026

Copy link
Copy Markdown
Collaborator Author

Rehearsal v0.0.0-rehearsal.4 — offline verification and local Fastly execution at 922c2211c0cc7941bfc8ffa9f775ef8ac0971232.

GitHub CLI 2.102.0 matches the publisher log. Its official macOS ARM archive was checksum-verified (SHA-256 da922c20d1792e5b2cbf375593d7a658acf034c12c84e007e71c76ef959c337e). Public trust roots were fetched once while online; SHA-256 65ca537f6ed8a47fd0e560c421baa1f6c1efb8b25fc200d8c5c02c0e92eb2b9c. Local directory paths below are normalized; flags, identities, digests and results are unchanged.

Offline proof

All four binaries passed provenance and SPDX verification under OS-enforced network denial, with both signer identity forms, exact source/ref/signer digest pins, self-hosted runners denied, and published-SPDX predicate equality. No --offline flag is used.

gh --version
gh attestation trusted-root > trusted_root.jsonl
shasum -a 256 trusted_root.jsonl
/usr/bin/sandbox-exec -p '(version 1)(allow default)(deny network*)' env GH_TOKEN=offline-verification-no-network bash -x offline-verify.sh
gh version 2.102.0 (2026-09-30)
https://github.com/cli/cli/releases/tag/v2.102.0

curl: (6) Could not resolve host: api.github.com
SUCCESS: network-denial control refused an external HTTPS request (curl exit 6).
Full offline commands and success output
+ set -euxo pipefail
+ REPO=prk-Jr/trusted-server
+ TAG=v0.0.0-rehearsal.4
+ COMMIT=922c2211c0cc7941bfc8ffa9f775ef8ac0971232
+ WORKFLOW=prk-Jr/trusted-server/.github/workflows/release-build.yml
+ IDENTITY=https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4
+ ASSETS=(trusted-server-fastly.wasm ts-x86_64-unknown-linux-gnu ts-aarch64-apple-darwin ts-x86_64-apple-darwin)
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-fastly.wasm
SUCCESS: gh attestation verify trusted-server-fastly.wasm with requested predicate, signer and source pins
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --format json
+ command gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-fastly.wasm
SUCCESS: gh attestation verify trusted-server-fastly.wasm with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-fastly.wasm
SUCCESS: gh attestation verify trusted-server-fastly.wasm with requested predicate, signer and source pins
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --format json
+ command gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-fastly.wasm
SUCCESS: gh attestation verify trusted-server-fastly.wasm with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-fastly.wasm.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-fastly.wasm.offline-sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify ts-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --format json
+ command gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify ts-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify ts-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --format json
+ command gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify ts-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-x86_64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-unknown-linux-gnu.offline-sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-aarch64-apple-darwin
SUCCESS: gh attestation verify ts-aarch64-apple-darwin with requested predicate, signer and source pins
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --format json
+ command gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-aarch64-apple-darwin
SUCCESS: gh attestation verify ts-aarch64-apple-darwin with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-aarch64-apple-darwin
SUCCESS: gh attestation verify ts-aarch64-apple-darwin with requested predicate, signer and source pins
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --format json
+ command gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-aarch64-apple-darwin
SUCCESS: gh attestation verify ts-aarch64-apple-darwin with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-aarch64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-aarch64-apple-darwin.offline-sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-apple-darwin
SUCCESS: gh attestation verify ts-x86_64-apple-darwin with requested predicate, signer and source pins
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --format json
+ command gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-apple-darwin
SUCCESS: gh attestation verify ts-x86_64-apple-darwin with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-apple-darwin
SUCCESS: gh attestation verify ts-x86_64-apple-darwin with requested predicate, signer and source pins
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --format json
+ command gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-apple-darwin
SUCCESS: gh attestation verify ts-x86_64-apple-darwin with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-x86_64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-apple-darwin.offline-sbom-verification.json
true
+ printf '%s\n' 'SUCCESS: all four binaries verified offline for provenance and SPDX, both signer identities, exact source pins, and SPDX predicate equality.'
SUCCESS: all four binaries verified offline for provenance and SPDX, both signer identities, exact source pins, and SPDX predicate equality.

Local verified Fastly route

The downloaded wasm and host CLI first passed provenance and immutable release membership checks. Viceroy 0.21.0, pinned in the source tree, served a real configured page: HTTP 200, fixture origin marker, injected JS and the exact full source SHA in x-ts-version. This is local execution only; no Fastly service was contacted or deployed. The first fixture attempt was correctly rejected for unchanged example-domain placeholders; the successful fixture below uses loopback publisher values and public development secrets. Both release binaries remain byte-identical to the published assets.

Complete local commands and output
set -euxo pipefail
REPO_ROOT=<source-checkout>
EVIDENCE=<evidence-directory>
WORK="$EVIDENCE/viceroy-smoke-2"
TS="$EVIDENCE/ts-aarch64-apple-darwin"
WASM="$EVIDENCE/trusted-server-fastly.wasm"
VICEROY=<pinned-runtime-tools>/viceroy
mkdir "$WORK"
for port in 18888 17676; do
  if lsof -nP -iTCP:"$port" -sTCP:LISTEN; then exit 1; fi
done
cp "$REPO_ROOT/edgezero.toml" "$REPO_ROOT/fastly.toml" "$WORK/"
cp "$REPO_ROOT/trusted-server.example.toml" "$WORK/app.toml"
ln -s "$REPO_ROOT/crates" "$WORK/crates"
node - "$WORK" <<'JS'
const fs=require('node:fs');const root=process.argv[2];
const path=`${root}/app.toml`;let text=fs.readFileSync(path,'utf8');text=text.replace('domain = "example.com"','domain = "127.0.0.1"').replace('cookie_domain = ".example.com"','cookie_domain = "127.0.0.1"');text=text.replace('origin_url = "https://origin.example.com"','origin_url = "http://127.0.0.1:18888"');if(!text.includes('origin_url = "http://127.0.0.1:18888"'))throw Error('Origin fixture replacement failed');fs.writeFileSync(path,text);
const fastly=`${root}/fastly.toml`;text=fs.readFileSync(fastly,'utf8').replace('env = "FASTLY_KEY"','data = "fictional-local-api-key"');fs.writeFileSync(fastly,text);
JS
chmod u+x "$TS"
"$TS" --version
(cd "$WORK" && "$TS" config push --adapter fastly --local \
 --manifest "$WORK/edgezero.toml" --app-config "$WORK/app.toml" --no-diff --yes)
"$VICEROY" --version
cat > "$WORK/origin.mjs" <<'JS'
import http from 'node:http';
http.createServer((req,res)=>{res.writeHead(200,{'content-type':'text/html'});res.end('<!doctype html><html><head><title>Local release proof</title></head><body>phase1-verified-origin-marker</body></html>');}).listen(18888,'127.0.0.1');
JS
node "$WORK/origin.mjs" > "$WORK/origin.log" 2>&1 &
origin_pid=$!
cleanup() {
  if [[ -n "${viceroy_pid:-}" ]]; then kill "$viceroy_pid" 2>/dev/null || true; wait "$viceroy_pid" 2>/dev/null || true; fi
  kill "$origin_pid" 2>/dev/null || true
  wait "$origin_pid" 2>/dev/null || true
}
trap cleanup EXIT
"$VICEROY" serve -C "$WORK/fastly.toml" --addr 127.0.0.1:17676 "$WASM" > "$WORK/viceroy.log" 2>&1 &
viceroy_pid=$!
curl --fail --silent --show-error --retry 20 --retry-connrefused --retry-delay 1 \
 --retry-max-time 45 --max-time 30 -H 'Host: 127.0.0.1' \
 -D "$WORK/headers.txt" -o "$WORK/body.html" http://127.0.0.1:17676/
cat "$WORK/headers.txt"
node - "$WORK" <<'JS'
const fs=require('node:fs');const assert=require('node:assert/strict');const crypto=require('node:crypto');const work=process.argv[2];const headers=fs.readFileSync(`${work}/headers.txt`,'utf8');const body=fs.readFileSync(`${work}/body.html`);assert.match(headers,/^HTTP\/1\.1 200/m);assert.match(headers,/^x-ts-version: 922c2211c0cc7941bfc8ffa9f775ef8ac0971232\r?$/im);assert.ok(body.includes('phase1-verified-origin-marker'));assert.ok(body.includes('/static/tsjs=tsjs-unified.min.js'));console.log(`SUCCESS: configured Viceroy page returned HTTP200, origin marker, injected JS and exact release source header; ${body.length} bytes, sha256=${crypto.createHash('sha256').update(body).digest('hex')}`);
JS
+ for asset in trusted-server-fastly.wasm ts-aarch64-apple-darwin
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ gh release verify-asset v0.0.0-rehearsal.4 trusted-server-fastly.wasm --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm: sha256:de00f637e3f2e7d85c86a4f4af3efb74b9f44db1932ceae9cfd7afb527cf2acc
Resolved tag v0.0.0-rehearsal.4 to sha1:922c2211c0cc7941bfc8ffa9f775ef8ac0971232
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm is present in release v0.0.0-rehearsal.4
+ for asset in trusted-server-fastly.wasm ts-aarch64-apple-darwin
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ gh release verify-asset v0.0.0-rehearsal.4 ts-aarch64-apple-darwin --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin: sha256:e9c304e55fceb4d0e2f6ac14ac5be9bed368b2628d1a90d6f4539757e129469a
Resolved tag v0.0.0-rehearsal.4 to sha1:922c2211c0cc7941bfc8ffa9f775ef8ac0971232
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin is present in release v0.0.0-rehearsal.4
+ REPO_ROOT=<source-checkout>
+ EVIDENCE=<evidence-directory>
+ WORK=<evidence-directory>/viceroy-smoke-2
+ TS=<evidence-directory>/ts-aarch64-apple-darwin
+ WASM=<evidence-directory>/trusted-server-fastly.wasm
+ VICEROY=<pinned-runtime-tools>/viceroy
+ mkdir <evidence-directory>/viceroy-smoke-2
+ for port in 18888 17676
+ lsof -nP -iTCP:18888 -sTCP:LISTEN
+ for port in 18888 17676
+ lsof -nP -iTCP:17676 -sTCP:LISTEN
+ cp <source-checkout>/edgezero.toml <source-checkout>/fastly.toml <evidence-directory>/viceroy-smoke-2/
+ cp <source-checkout>/trusted-server.example.toml <evidence-directory>/viceroy-smoke-2/app.toml
+ ln -s <source-checkout>/crates <evidence-directory>/viceroy-smoke-2/crates
+ node - <evidence-directory>/viceroy-smoke-2
+ chmod u+x <evidence-directory>/ts-aarch64-apple-darwin
+ <evidence-directory>/ts-aarch64-apple-darwin --version
ts 0.1.0
+ cd <evidence-directory>/viceroy-smoke-2
+ <evidence-directory>/ts-aarch64-apple-darwin config push --adapter fastly --local --manifest <evidence-directory>/viceroy-smoke-2/edgezero.toml --app-config <evidence-directory>/viceroy-smoke-2/app.toml --no-diff --yes
wrote 1 physical entries (1 logical) to `[local_server.config_stores.trusted_server_config.contents]` in <evidence-directory>/viceroy-smoke-2/fastly.toml (logical id `trusted_server_config`); restart `fastly compute serve` to pick up changes
pushed-key=trusted_server_config
pushed-store=trusted_server_config
+ <pinned-runtime-tools>/viceroy --version
viceroy 0.21.0
+ cat
+ origin_pid=74910
+ trap cleanup EXIT
+ node <evidence-directory>/viceroy-smoke-2/origin.mjs
+ viceroy_pid=74911
+ curl --fail --silent --show-error --retry 20 --retry-connrefused --retry-delay 1 --retry-max-time 45 --max-time 30 -H 'Host: 127.0.0.1' -D <evidence-directory>/viceroy-smoke-2/headers.txt -o <evidence-directory>/viceroy-smoke-2/body.html http://127.0.0.1:17676/
+ <pinned-runtime-tools>/viceroy serve -C <evidence-directory>/viceroy-smoke-2/fastly.toml --addr 127.0.0.1:17676 <evidence-directory>/trusted-server-fastly.wasm
curl: (7) Failed to connect to 127.0.0.1 port 17676 after 0 ms: Couldn't connect to server
curl: (7) Failed to connect to 127.0.0.1 port 17676 after 0 ms: Couldn't connect to server
+ cat <evidence-directory>/viceroy-smoke-2/headers.txt
HTTP/1.1 200 OK
content-type: text/html
date: Thu, 22 Oct 2026 16:53:48 GMT
connection: keep-alive
keep-alive: timeout=5
x-ts-fastly-version: 0
x-geo-city: San Francisco
x-geo-country: US
x-geo-continent: NorthAmerica
x-geo-coordinates: 37.77869,-122.39557
x-geo-region: CA
x-geo-info-available: true
x-ts-version: 922c2211c0cc7941bfc8ffa9f775ef8ac0971232
transfer-encoding: chunked

+ node - <evidence-directory>/viceroy-smoke-2
SUCCESS: configured Viceroy page returned HTTP200, origin marker, injected JS and exact release source header; 262 bytes, sha256=faafc52e92b3981f7a899b5bb3f6d85cebcb045618bce3727bbd1be3f1b869e2
+ cleanup
+ [[ -n 74911 ]]
+ kill 74911
+ wait 74911
+ true
+ kill 74910
+ wait 74910
+ true

@prk-Jr

prk-Jr commented Oct 22, 2026

Copy link
Copy Markdown
Collaborator Author

Rehearsal v0.0.0-rehearsal.4 passed at 922c2211c0cc7941bfc8ffa9f775ef8ac0971232.

  • Build/sign/publication run: success; all four builds and signing jobs passed. Read-only publisher checks passed; no transient retry was observed in this run.
  • Published immutable release: ID 420956687, draft=false, immutable=true, exactly 17 nonempty assets.
  • Independent GitHub CLI 2.102.0 verification passed: release, every one of 17 assets, all 16 checksum entries, provenance + SPDX for each binary with both signer checks and exact source pins, and all four SPDX predicate comparisons.
  • Complete offline verification and local Viceroy page proof also passed. Offline verification used OS-enforced network denial, with an external-request denial control.

Download record

The ordinary release download was interrupted because transfer throughput was too low. Read-only bounded range downloads fetched the same release URLs; complete assembled files matched the published SHA-256 metadata before verification. No binary was substituted from a CI artifact or another release. Small companions were independently digest-checked as well. Commands and output follow; scripts existed only in the temporary evidence directory.

Download commands and complete digest results
gh api repos/prk-Jr/trusted-server/releases/tags/v0.0.0-rehearsal.4 > release-metadata.json
node range-download.mjs
node small-download.mjs
import fs from 'node:fs';
import {promisify} from 'node:util';
import {execFile} from 'node:child_process';
import crypto from 'node:crypto';
const run=promisify(execFile);
const release=JSON.parse(fs.readFileSync('release-metadata.json'));
const binaries=release.assets.filter(a=> !a.name.includes('.') || a.name.endsWith('.wasm'));
fs.mkdirSync('ranges',{recursive:true});
const tasks=[]; const chunk=2*1024*1024;
for(const a of binaries) for(let offset=0;offset<a.size;offset+=chunk) tasks.push({a,offset,end:Math.min(a.size-1,offset+chunk-1)});
let done=0;
async function worker(){while(tasks.length){const {a,offset,end}=tasks.shift();const out=`ranges/${a.name}.${offset}`; await run('curl',['--fail','--silent','--show-error','--location','--retry','2','--max-time','180','--range',`${offset}-${end}`,'--max-filesize',String(end-offset+1),'--output',out,a.browser_download_url]);if(fs.statSync(out).size!==end-offset+1)throw Error(`Range size mismatch: ${a.name} ${offset}`);done++;if(done%16===0)console.log(`Downloaded ${done} ranges`);}}
await Promise.all(Array.from({length:16},worker));
for(const a of binaries){const dest=fs.openSync(`${a.name}.assembled`,'w');const hash=crypto.createHash('sha256');for(let o=0;o<a.size;o+=chunk){const b=fs.readFileSync(`ranges/${a.name}.${o}`);fs.writeSync(dest,b);hash.update(b);}fs.closeSync(dest);if(`sha256:${hash.digest('hex')}`!==a.digest)throw Error(`Digest mismatch: ${a.name}`);fs.renameSync(`${a.name}.assembled`,a.name);console.log(`SUCCESS: ${a.name}: ${a.size} bytes match ${a.digest}`);}
import fs from 'node:fs';import crypto from 'node:crypto';import {promisify} from 'node:util';import {execFile} from 'node:child_process';
const run=promisify(execFile);const {assets}=JSON.parse(fs.readFileSync('release-metadata.json'));await Promise.all(assets.filter(a=>a.size<2*1024*1024).map(async a=>{const valid=()=>fs.existsSync(a.name)&&`sha256:${crypto.createHash('sha256').update(fs.readFileSync(a.name)).digest('hex')}`===a.digest;if(!valid())await run('curl',['--fail','--silent','--show-error','--location','--max-time','180','--output',a.name,a.browser_download_url]);if(!valid())throw Error(`Bad asset: ${a.name}`);console.log(`SUCCESS: ${a.name} matches published digest`);}));
Downloaded 16 ranges
Downloaded 32 ranges
Downloaded 48 ranges
Downloaded 64 ranges
Downloaded 80 ranges
Downloaded 96 ranges
Downloaded 112 ranges
Downloaded 128 ranges
Downloaded 144 ranges
Downloaded 160 ranges
Downloaded 176 ranges
Downloaded 192 ranges
Downloaded 208 ranges
Downloaded 224 ranges
SUCCESS: SHA256SUMS: 1680 bytes match sha256:c8b4b31749f129f129030ccb5537291fe9252812ede3ed411e0bd5b23302fa11
SUCCESS: trusted-server-fastly.wasm: 79205388 bytes match sha256:de00f637e3f2e7d85c86a4f4af3efb74b9f44db1932ceae9cfd7afb527cf2acc
SUCCESS: ts-aarch64-apple-darwin: 41016160 bytes match sha256:e9c304e55fceb4d0e2f6ac14ac5be9bed368b2628d1a90d6f4539757e129469a
SUCCESS: ts-x86_64-apple-darwin: 43716264 bytes match sha256:5f7ac1d7f7cf879a08ac8a767aa5dc9f9c92994f2188b2613f2b4739e86de3b0
SUCCESS: ts-x86_64-unknown-linux-gnu: 301367192 bytes match sha256:31939021aae813bd9235f9e2d5e19b8aff2df829b802f3e231bb4218edddcd23

SUCCESS: SHA256SUMS matches published digest
SUCCESS: trusted-server-fastly.wasm.provenance.sigstore.json matches published digest
SUCCESS: trusted-server-fastly.wasm.sbom.sigstore.json matches published digest
SUCCESS: trusted-server-fastly.wasm.spdx.json matches published digest
SUCCESS: ts-aarch64-apple-darwin.provenance.sigstore.json matches published digest
SUCCESS: ts-aarch64-apple-darwin.sbom.sigstore.json matches published digest
SUCCESS: ts-aarch64-apple-darwin.spdx.json matches published digest
SUCCESS: ts-x86_64-apple-darwin.provenance.sigstore.json matches published digest
SUCCESS: ts-x86_64-apple-darwin.sbom.sigstore.json matches published digest
SUCCESS: ts-x86_64-apple-darwin.spdx.json matches published digest
SUCCESS: ts-x86_64-unknown-linux-gnu.provenance.sigstore.json matches published digest
SUCCESS: ts-x86_64-unknown-linux-gnu.sbom.sigstore.json matches published digest
SUCCESS: ts-x86_64-unknown-linux-gnu.spdx.json matches published digest

Full online verification transcript

A small shell wrapper prints an explicit success line after each successful attestation command; JSON results remain separate for predicate comparison.

gh version 2.102.0 (2026-09-30)
https://github.com/cli/cli/releases/tag/v2.102.0

+ set -euxo pipefail
+ REPO=prk-Jr/trusted-server
+ TAG=v0.0.0-rehearsal.4
+ COMMIT=922c2211c0cc7941bfc8ffa9f775ef8ac0971232
+ ASSETS=(trusted-server-fastly.wasm ts-x86_64-unknown-linux-gnu ts-aarch64-apple-darwin ts-x86_64-apple-darwin)
++ gh api repos/prk-Jr/trusted-server/releases/tags/v0.0.0-rehearsal.4 --jq .immutable
++ command gh api repos/prk-Jr/trusted-server/releases/tags/v0.0.0-rehearsal.4 --jq .immutable
++ [[ api repos/prk-Jr/trusted-server/releases/tags/v0.0.0-rehearsal.4 == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ test true = true
+ gh release verify v0.0.0-rehearsal.4 --repo prk-Jr/trusted-server
+ command gh release verify v0.0.0-rehearsal.4 --repo prk-Jr/trusted-server
Resolved tag v0.0.0-rehearsal.4 to sha1:922c2211c0cc7941bfc8ffa9f775ef8ac0971232
Loaded attestation from GitHub API
✓ Release v0.0.0-rehearsal.4 verified!

Assets
SHA256SUMS	sha256:c8b4b31749f129f129030ccb5537291fe9252812ede3ed411e0bd5b23302fa11
trusted-server-fastly.wasm	sha256:de00f637e3f2e7d85c86a4f4af3efb74b9f44db1932ceae9cfd7afb527cf2acc
trusted-server-fastly.wasm.provenance.sigstore.json	sha256:1bb8bc84fce4ea8fac5aa25d6c17d07e2414dce03f21ac83601612bd35a11b0f
trusted-server-fastly.wasm.sbom.sigstore.json	sha256:11e72f0e7cd734ccf00474dfc9286e8d17026b9a749eacd0ffaeb26fc72ef399
trusted-server-fastly.wasm.spdx.json	sha256:0061b1312ecc193f708443f4eb3e1331aeca29e37359f86b7fbacae80259d28a
ts-aarch64-apple-darwin	sha256:e9c304e55fceb4d0e2f6ac14ac5be9bed368b2628d1a90d6f4539757e129469a
ts-aarch64-apple-darwin.provenance.sigstore.json	sha256:72af781b8d2e78dad49cda954d6353c592ec26fbb4b1352a4ca8bc044887a546
ts-aarch64-apple-darwin.sbom.sigstore.json	sha256:904c2dbbabef22767b5410c214e5a7408e2cba7fed4257b4e87d6a6571616b6c
ts-aarch64-apple-darwin.spdx.json	sha256:cffc12d7a497e28351f55b983fe4597c8de403ffaae47a2710f15517c02420ca
ts-x86_64-apple-darwin	sha256:5f7ac1d7f7cf879a08ac8a767aa5dc9f9c92994f2188b2613f2b4739e86de3b0
ts-x86_64-apple-darwin.provenance.sigstore.json	sha256:b7c4bf502d821cd9394b51964cf0ebaaae1e80065612d331ac8259bfdad8da47
ts-x86_64-apple-darwin.sbom.sigstore.json	sha256:cd5b5825949fc766908d9642f73d21f694e6017e043d316e1a67a1285e0fa708
ts-x86_64-apple-darwin.spdx.json	sha256:e50e59da87302c2580cb913fd139536eae6e7ee25355d99aaf423f0523955302
ts-x86_64-unknown-linux-gnu	sha256:31939021aae813bd9235f9e2d5e19b8aff2df829b802f3e231bb4218edddcd23
ts-x86_64-unknown-linux-gnu.provenance.sigstore.json	sha256:290204585ee557d7f597ff0733ac2b0b4430b1ede1a19020f0a9f2c1aa55c15a
ts-x86_64-unknown-linux-gnu.sbom.sigstore.json	sha256:4faf079fdf6bfea38f13fde5bda87e295bfe0570ff3a78ce700d59edb6b4c6bd
ts-x86_64-unknown-linux-gnu.spdx.json	sha256:d6374385364d06cc6a35223c71b586ba265a8af93084547690085378e394909c

+ [[ release verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.4 trusted-server-fastly.wasm --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.4 trusted-server-fastly.wasm --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm: sha256:de00f637e3f2e7d85c86a4f4af3efb74b9f44db1932ceae9cfd7afb527cf2acc
Resolved tag v0.0.0-rehearsal.4 to sha1:922c2211c0cc7941bfc8ffa9f775ef8ac0971232
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm is present in release v0.0.0-rehearsal.4
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.4 trusted-server-fastly.wasm.spdx.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.4 trusted-server-fastly.wasm.spdx.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm.spdx.json: sha256:0061b1312ecc193f708443f4eb3e1331aeca29e37359f86b7fbacae80259d28a
Resolved tag v0.0.0-rehearsal.4 to sha1:922c2211c0cc7941bfc8ffa9f775ef8ac0971232
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm.spdx.json is present in release v0.0.0-rehearsal.4
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.4 trusted-server-fastly.wasm.provenance.sigstore.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.4 trusted-server-fastly.wasm.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm.provenance.sigstore.json: sha256:1bb8bc84fce4ea8fac5aa25d6c17d07e2414dce03f21ac83601612bd35a11b0f
Resolved tag v0.0.0-rehearsal.4 to sha1:922c2211c0cc7941bfc8ffa9f775ef8ac0971232
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm.provenance.sigstore.json is present in release v0.0.0-rehearsal.4
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.4 trusted-server-fastly.wasm.sbom.sigstore.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.4 trusted-server-fastly.wasm.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm.sbom.sigstore.json: sha256:11e72f0e7cd734ccf00474dfc9286e8d17026b9a749eacd0ffaeb26fc72ef399
Resolved tag v0.0.0-rehearsal.4 to sha1:922c2211c0cc7941bfc8ffa9f775ef8ac0971232
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm.sbom.sigstore.json is present in release v0.0.0-rehearsal.4
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.4 ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.4 ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu: sha256:31939021aae813bd9235f9e2d5e19b8aff2df829b802f3e231bb4218edddcd23
Resolved tag v0.0.0-rehearsal.4 to sha1:922c2211c0cc7941bfc8ffa9f775ef8ac0971232
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu is present in release v0.0.0-rehearsal.4
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.4 ts-x86_64-unknown-linux-gnu.spdx.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.4 ts-x86_64-unknown-linux-gnu.spdx.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu.spdx.json: sha256:d6374385364d06cc6a35223c71b586ba265a8af93084547690085378e394909c
Resolved tag v0.0.0-rehearsal.4 to sha1:922c2211c0cc7941bfc8ffa9f775ef8ac0971232
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.spdx.json is present in release v0.0.0-rehearsal.4
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.4 ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.4 ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu.provenance.sigstore.json: sha256:290204585ee557d7f597ff0733ac2b0b4430b1ede1a19020f0a9f2c1aa55c15a
Resolved tag v0.0.0-rehearsal.4 to sha1:922c2211c0cc7941bfc8ffa9f775ef8ac0971232
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.provenance.sigstore.json is present in release v0.0.0-rehearsal.4
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.4 ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.4 ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu.sbom.sigstore.json: sha256:4faf079fdf6bfea38f13fde5bda87e295bfe0570ff3a78ce700d59edb6b4c6bd
Resolved tag v0.0.0-rehearsal.4 to sha1:922c2211c0cc7941bfc8ffa9f775ef8ac0971232
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.sbom.sigstore.json is present in release v0.0.0-rehearsal.4
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.4 ts-aarch64-apple-darwin --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.4 ts-aarch64-apple-darwin --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin: sha256:e9c304e55fceb4d0e2f6ac14ac5be9bed368b2628d1a90d6f4539757e129469a
Resolved tag v0.0.0-rehearsal.4 to sha1:922c2211c0cc7941bfc8ffa9f775ef8ac0971232
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin is present in release v0.0.0-rehearsal.4
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.4 ts-aarch64-apple-darwin.spdx.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.4 ts-aarch64-apple-darwin.spdx.json --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin.spdx.json: sha256:cffc12d7a497e28351f55b983fe4597c8de403ffaae47a2710f15517c02420ca
Resolved tag v0.0.0-rehearsal.4 to sha1:922c2211c0cc7941bfc8ffa9f775ef8ac0971232
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin.spdx.json is present in release v0.0.0-rehearsal.4
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.4 ts-aarch64-apple-darwin.provenance.sigstore.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.4 ts-aarch64-apple-darwin.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin.provenance.sigstore.json: sha256:72af781b8d2e78dad49cda954d6353c592ec26fbb4b1352a4ca8bc044887a546
Resolved tag v0.0.0-rehearsal.4 to sha1:922c2211c0cc7941bfc8ffa9f775ef8ac0971232
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin.provenance.sigstore.json is present in release v0.0.0-rehearsal.4
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.4 ts-aarch64-apple-darwin.sbom.sigstore.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.4 ts-aarch64-apple-darwin.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin.sbom.sigstore.json: sha256:904c2dbbabef22767b5410c214e5a7408e2cba7fed4257b4e87d6a6571616b6c
Resolved tag v0.0.0-rehearsal.4 to sha1:922c2211c0cc7941bfc8ffa9f775ef8ac0971232
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin.sbom.sigstore.json is present in release v0.0.0-rehearsal.4
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.4 ts-x86_64-apple-darwin --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.4 ts-x86_64-apple-darwin --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin: sha256:5f7ac1d7f7cf879a08ac8a767aa5dc9f9c92994f2188b2613f2b4739e86de3b0
Resolved tag v0.0.0-rehearsal.4 to sha1:922c2211c0cc7941bfc8ffa9f775ef8ac0971232
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin is present in release v0.0.0-rehearsal.4
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.4 ts-x86_64-apple-darwin.spdx.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.4 ts-x86_64-apple-darwin.spdx.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin.spdx.json: sha256:e50e59da87302c2580cb913fd139536eae6e7ee25355d99aaf423f0523955302
Resolved tag v0.0.0-rehearsal.4 to sha1:922c2211c0cc7941bfc8ffa9f775ef8ac0971232
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin.spdx.json is present in release v0.0.0-rehearsal.4
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.4 ts-x86_64-apple-darwin.provenance.sigstore.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.4 ts-x86_64-apple-darwin.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin.provenance.sigstore.json: sha256:b7c4bf502d821cd9394b51964cf0ebaaae1e80065612d331ac8259bfdad8da47
Resolved tag v0.0.0-rehearsal.4 to sha1:922c2211c0cc7941bfc8ffa9f775ef8ac0971232
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin.provenance.sigstore.json is present in release v0.0.0-rehearsal.4
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.4 ts-x86_64-apple-darwin.sbom.sigstore.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.4 ts-x86_64-apple-darwin.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin.sbom.sigstore.json: sha256:cd5b5825949fc766908d9642f73d21f694e6017e043d316e1a67a1285e0fa708
Resolved tag v0.0.0-rehearsal.4 to sha1:922c2211c0cc7941bfc8ffa9f775ef8ac0971232
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin.sbom.sigstore.json is present in release v0.0.0-rehearsal.4
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ gh release verify-asset v0.0.0-rehearsal.4 SHA256SUMS --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.4 SHA256SUMS --repo prk-Jr/trusted-server
Calculated digest for SHA256SUMS: sha256:c8b4b31749f129f129030ccb5537291fe9252812ede3ed411e0bd5b23302fa11
Resolved tag v0.0.0-rehearsal.4 to sha1:922c2211c0cc7941bfc8ffa9f775ef8ac0971232
Loaded attestation from GitHub API

✓ Verification succeeded! SHA256SUMS is present in release v0.0.0-rehearsal.4
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ shasum -a 256 --check SHA256SUMS
trusted-server-fastly.wasm: OK
trusted-server-fastly.wasm.spdx.json: OK
trusted-server-fastly.wasm.provenance.sigstore.json: OK
trusted-server-fastly.wasm.sbom.sigstore.json: OK
ts-aarch64-apple-darwin: OK
ts-aarch64-apple-darwin.spdx.json: OK
ts-aarch64-apple-darwin.provenance.sigstore.json: OK
ts-aarch64-apple-darwin.sbom.sigstore.json: OK
ts-x86_64-apple-darwin: OK
ts-x86_64-apple-darwin.spdx.json: OK
ts-x86_64-apple-darwin.provenance.sigstore.json: OK
ts-x86_64-apple-darwin.sbom.sigstore.json: OK
ts-x86_64-unknown-linux-gnu: OK
ts-x86_64-unknown-linux-gnu.spdx.json: OK
ts-x86_64-unknown-linux-gnu.provenance.sigstore.json: OK
ts-x86_64-unknown-linux-gnu.sbom.sigstore.json: OK
+ WORKFLOW=prk-Jr/trusted-server/.github/workflows/release-build.yml
+ for asset in "${ASSETS[@]}"
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ command gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-fastly.wasm
SUCCESS: gh attestation verify trusted-server-fastly.wasm with requested predicate, signer and source pins
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ command gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-fastly.wasm
SUCCESS: gh attestation verify trusted-server-fastly.wasm with requested predicate, signer and source pins
+ for asset in "${ASSETS[@]}"
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ command gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify ts-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ command gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify ts-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ for asset in "${ASSETS[@]}"
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ command gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-aarch64-apple-darwin
SUCCESS: gh attestation verify ts-aarch64-apple-darwin with requested predicate, signer and source pins
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ command gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-aarch64-apple-darwin
SUCCESS: gh attestation verify ts-aarch64-apple-darwin with requested predicate, signer and source pins
+ for asset in "${ASSETS[@]}"
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ command gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-apple-darwin
SUCCESS: gh attestation verify ts-x86_64-apple-darwin with requested predicate, signer and source pins
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ command gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-apple-darwin
SUCCESS: gh attestation verify ts-x86_64-apple-darwin with requested predicate, signer and source pins
+ IDENTITY=https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4
+ for asset in "${ASSETS[@]}"
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ command gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-fastly.wasm
SUCCESS: gh attestation verify trusted-server-fastly.wasm with requested predicate, signer and source pins
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ command gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-fastly.wasm
SUCCESS: gh attestation verify trusted-server-fastly.wasm with requested predicate, signer and source pins
+ jq -e --slurpfile document trusted-server-fastly.wasm.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-fastly.wasm.sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ command gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify ts-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ command gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify ts-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ jq -e --slurpfile document ts-x86_64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-unknown-linux-gnu.sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ command gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-aarch64-apple-darwin
SUCCESS: gh attestation verify ts-aarch64-apple-darwin with requested predicate, signer and source pins
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ command gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-aarch64-apple-darwin
SUCCESS: gh attestation verify ts-aarch64-apple-darwin with requested predicate, signer and source pins
+ jq -e --slurpfile document ts-aarch64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-aarch64-apple-darwin.sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ command gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-apple-darwin
SUCCESS: gh attestation verify ts-x86_64-apple-darwin with requested predicate, signer and source pins
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ command gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.4 --source-ref refs/tags/v0.0.0-rehearsal.4 --source-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --signer-digest 922c2211c0cc7941bfc8ffa9f775ef8ac0971232 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-apple-darwin
SUCCESS: gh attestation verify ts-x86_64-apple-darwin with requested predicate, signer and source pins
+ jq -e --slurpfile document ts-x86_64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-apple-darwin.sbom-verification.json
true
+ printf '%s\n' 'SUCCESS: release, all 17 assets, 16 checksums, both predicates and both signer identities for each binary, and four SPDX predicate comparisons verified.'
SUCCESS: release, all 17 assets, 16 checksums, both predicates and both signer identities for each binary, and four SPDX predicate comparisons verified.

@prk-Jr

prk-Jr commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator Author

Rehearsal v0.0.0-rehearsal.5 passed at exact implementation SHA 937214a632f9387601dba94f996de78b2e6ee424.

Build/sign/publication run passed all seven builds/signing jobs and immutable publication. Published release: ID 421431085, draft=false, immutable=true, exactly 29 nonempty assets. The 28 checksum entries exclude SHA256SUMS itself. Local directory paths are normalized below; commands, flags, identities, digests and results are unchanged.

Full online verification transcript, part 1. A wrapper prints explicit success after each successful attestation command; JSON output stays separate for SPDX equality.

+ REPO=prk-Jr/trusted-server
+ TAG=v0.0.0-rehearsal.5
+ COMMIT=937214a632f9387601dba94f996de78b2e6ee424
+ ASSETS=(trusted-server-fastly.wasm ts-x86_64-unknown-linux-gnu ts-aarch64-apple-darwin ts-x86_64-apple-darwin trusted-server-axum-x86_64-unknown-linux-gnu trusted-server-axum-x86_64-unknown-linux-musl trusted-server-axum-aarch64-unknown-linux-gnu)
++ gh api repos/prk-Jr/trusted-server/releases/tags/v0.0.0-rehearsal.5 --jq .immutable
++ command gh api repos/prk-Jr/trusted-server/releases/tags/v0.0.0-rehearsal.5 --jq .immutable
++ [[ api repos/prk-Jr/trusted-server/releases/tags/v0.0.0-rehearsal.5 == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ test true = true
+ gh release verify v0.0.0-rehearsal.5 --repo prk-Jr/trusted-server
+ command gh release verify v0.0.0-rehearsal.5 --repo prk-Jr/trusted-server
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API
✓ Release v0.0.0-rehearsal.5 verified!

Assets
SHA256SUMS	sha256:3f38663ad78cef4c1ea44c44efad58f406946382f5b2f997df556eada1d56c79
trusted-server-axum-aarch64-unknown-linux-gnu	sha256:f8f7c3cfd7853f545a38e08bf0a396dd201d241bd3c6b0511d99d0f938022079
trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json	sha256:4b76d82e6b093a46ce43c014e42056c8aed9fd8172fc7993831178bd34af6cc7
trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json	sha256:a8a3002e5e693efd21f467dea052d7f1b22c7e65589fb47b7b0321657b2e805b
trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json	sha256:a46a7f00fe0618d0d158e56629eb0a4fc73771658bf946addb605cf48e8855d0
trusted-server-axum-x86_64-unknown-linux-gnu	sha256:b85a2cc54c8639d66d79186cf49771161e712762631596cb6f213afa83abd030
trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json	sha256:9df3528ad8ec7857c713abe7a3b2bfdc29311eecf7b43d1ff84b2a533233aab2
trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json	sha256:bcfa163bf41792a363adfbe47b43675fcc2093c97585d8d3917c636d0de55568
trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json	sha256:a02059e57b64245d046385cdedb93a767f8153fadfb887fec2fdd230e91dee9f
trusted-server-axum-x86_64-unknown-linux-musl	sha256:0216ea9f103a0d79db666ff6351bb29d5391921fa29e971b4d68a76359a40210
trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json	sha256:28a3f816f399d8fcad31e687eb895c0f4157e75798d493c73e50f72dbb3fe714
trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json	sha256:552f9f3278327a5ce2a3b28479afacd2271fb77c5e49ddf43ad23e901d5932de
trusted-server-axum-x86_64-unknown-linux-musl.spdx.json	sha256:28ea8ffd121056a2f51accfd4b19a9c1e20cf4001e9850ae1d5c15c6f059b1be
trusted-server-fastly.wasm	sha256:bed94df95e5cb29e8ab3255321bd8bf00aa56ffd60e5de60875323ad433169f0
trusted-server-fastly.wasm.provenance.sigstore.json	sha256:ada20d6cfab75df65c806f0d409a94e20fc98d530f37b8754793bfc4b9675f7b
trusted-server-fastly.wasm.sbom.sigstore.json	sha256:09df79d511a245eef3ecc475b4aed2fbee6fb5d5f28ecffce080786b4ae67734
trusted-server-fastly.wasm.spdx.json	sha256:8a9151f823605956b1e5cb6a71f7b3c44b30326daa1fc71e0efc74a7fe47d861
ts-aarch64-apple-darwin	sha256:e9c304e55fceb4d0e2f6ac14ac5be9bed368b2628d1a90d6f4539757e129469a
ts-aarch64-apple-darwin.provenance.sigstore.json	sha256:6c8457aca6a32ad2ee1aaacc3e487cd128f91ddde01a8fd890cb44c1445ec28e
ts-aarch64-apple-darwin.sbom.sigstore.json	sha256:9381d35091d84d584abaa2e818faa5669412c5cd9a7577835d6ab4185dea7d1d
ts-aarch64-apple-darwin.spdx.json	sha256:2f84d645eea59ec314d1f7c4ab14b2be3bc430b783bfa09dfadb97c02d428934
ts-x86_64-apple-darwin	sha256:5f7ac1d7f7cf879a08ac8a767aa5dc9f9c92994f2188b2613f2b4739e86de3b0
ts-x86_64-apple-darwin.provenance.sigstore.json	sha256:0dadcf76761adbb724be84959ce7fcae745ac53707947d005f02efa414570378
ts-x86_64-apple-darwin.sbom.sigstore.json	sha256:9621f16ffaef815664aeefcb3af8185e83ac676c87af018c365cbae75f1eb0a5
ts-x86_64-apple-darwin.spdx.json	sha256:31e1e2356e5bdcb2390147cdf4b0eaef2f2c317ac4abc7eb7c0ff2e6873cdf8b
ts-x86_64-unknown-linux-gnu	sha256:1a5945133d5270855c501176cdc098da00d5439f9ecc33a0c07b3c84bf574944
ts-x86_64-unknown-linux-gnu.provenance.sigstore.json	sha256:e798fe2f208c1d2946b38cb6da8b426c90901581298d2125dffa65a69e889484
ts-x86_64-unknown-linux-gnu.sbom.sigstore.json	sha256:6efad56f336a17c1ca68cde1e38b97dac80446d95570f3afdaecfe45d291f606
ts-x86_64-unknown-linux-gnu.spdx.json	sha256:7e930e468e6b7cfd0726fabccd00be11e24286a54bc4f9c814baa82eb4058387

+ [[ release verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 trusted-server-fastly.wasm --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 trusted-server-fastly.wasm --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm: sha256:bed94df95e5cb29e8ab3255321bd8bf00aa56ffd60e5de60875323ad433169f0
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 trusted-server-fastly.wasm.spdx.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 trusted-server-fastly.wasm.spdx.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm.spdx.json: sha256:8a9151f823605956b1e5cb6a71f7b3c44b30326daa1fc71e0efc74a7fe47d861
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm.spdx.json is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 trusted-server-fastly.wasm.provenance.sigstore.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 trusted-server-fastly.wasm.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm.provenance.sigstore.json: sha256:ada20d6cfab75df65c806f0d409a94e20fc98d530f37b8754793bfc4b9675f7b
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm.provenance.sigstore.json is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 trusted-server-fastly.wasm.sbom.sigstore.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 trusted-server-fastly.wasm.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm.sbom.sigstore.json: sha256:09df79d511a245eef3ecc475b4aed2fbee6fb5d5f28ecffce080786b4ae67734
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm.sbom.sigstore.json is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu: sha256:1a5945133d5270855c501176cdc098da00d5439f9ecc33a0c07b3c84bf574944
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 ts-x86_64-unknown-linux-gnu.spdx.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 ts-x86_64-unknown-linux-gnu.spdx.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu.spdx.json: sha256:7e930e468e6b7cfd0726fabccd00be11e24286a54bc4f9c814baa82eb4058387
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.spdx.json is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu.provenance.sigstore.json: sha256:e798fe2f208c1d2946b38cb6da8b426c90901581298d2125dffa65a69e889484
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.provenance.sigstore.json is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu.sbom.sigstore.json: sha256:6efad56f336a17c1ca68cde1e38b97dac80446d95570f3afdaecfe45d291f606
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.sbom.sigstore.json is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 ts-aarch64-apple-darwin --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 ts-aarch64-apple-darwin --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin: sha256:e9c304e55fceb4d0e2f6ac14ac5be9bed368b2628d1a90d6f4539757e129469a
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 ts-aarch64-apple-darwin.spdx.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 ts-aarch64-apple-darwin.spdx.json --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin.spdx.json: sha256:2f84d645eea59ec314d1f7c4ab14b2be3bc430b783bfa09dfadb97c02d428934
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin.spdx.json is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 ts-aarch64-apple-darwin.provenance.sigstore.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 ts-aarch64-apple-darwin.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin.provenance.sigstore.json: sha256:6c8457aca6a32ad2ee1aaacc3e487cd128f91ddde01a8fd890cb44c1445ec28e
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin.provenance.sigstore.json is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 ts-aarch64-apple-darwin.sbom.sigstore.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 ts-aarch64-apple-darwin.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin.sbom.sigstore.json: sha256:9381d35091d84d584abaa2e818faa5669412c5cd9a7577835d6ab4185dea7d1d
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin.sbom.sigstore.json is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 ts-x86_64-apple-darwin --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 ts-x86_64-apple-darwin --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin: sha256:5f7ac1d7f7cf879a08ac8a767aa5dc9f9c92994f2188b2613f2b4739e86de3b0
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 ts-x86_64-apple-darwin.spdx.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 ts-x86_64-apple-darwin.spdx.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin.spdx.json: sha256:31e1e2356e5bdcb2390147cdf4b0eaef2f2c317ac4abc7eb7c0ff2e6873cdf8b
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin.spdx.json is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 ts-x86_64-apple-darwin.provenance.sigstore.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 ts-x86_64-apple-darwin.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin.provenance.sigstore.json: sha256:0dadcf76761adbb724be84959ce7fcae745ac53707947d005f02efa414570378
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin.provenance.sigstore.json is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 ts-x86_64-apple-darwin.sbom.sigstore.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 ts-x86_64-apple-darwin.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin.sbom.sigstore.json: sha256:9621f16ffaef815664aeefcb3af8185e83ac676c87af018c365cbae75f1eb0a5
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin.sbom.sigstore.json is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu: sha256:b85a2cc54c8639d66d79186cf49771161e712762631596cb6f213afa83abd030
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json: sha256:a02059e57b64245d046385cdedb93a767f8153fadfb887fec2fdd230e91dee9f
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json: sha256:9df3528ad8ec7857c713abe7a3b2bfdc29311eecf7b43d1ff84b2a533233aab2
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json: sha256:bcfa163bf41792a363adfbe47b43675fcc2093c97585d8d3917c636d0de55568
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl: sha256:0216ea9f103a0d79db666ff6351bb29d5391921fa29e971b4d68a76359a40210
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 trusted-server-axum-x86_64-unknown-linux-musl.spdx.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 trusted-server-axum-x86_64-unknown-linux-musl.spdx.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl.spdx.json: sha256:28ea8ffd121056a2f51accfd4b19a9c1e20cf4001e9850ae1d5c15c6f059b1be
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl.spdx.json is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json: sha256:28a3f816f399d8fcad31e687eb895c0f4157e75798d493c73e50f72dbb3fe714
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json: sha256:552f9f3278327a5ce2a3b28479afacd2271fb77c5e49ddf43ad23e901d5932de
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu: sha256:f8f7c3cfd7853f545a38e08bf0a396dd201d241bd3c6b0511d99d0f938022079
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json: sha256:a46a7f00fe0618d0d158e56629eb0a4fc73771658bf946addb605cf48e8855d0
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json: sha256:4b76d82e6b093a46ce43c014e42056c8aed9fd8172fc7993831178bd34af6cc7
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.5 trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json: sha256:a8a3002e5e693efd21f467dea052d7f1b22c7e65589fb47b7b0321657b2e805b
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ gh release verify-asset v0.0.0-rehearsal.5 SHA256SUMS --repo prk-Jr/trusted-server
+ command gh release verify-asset v0.0.0-rehearsal.5 SHA256SUMS --repo prk-Jr/trusted-server
Calculated digest for SHA256SUMS: sha256:3f38663ad78cef4c1ea44c44efad58f406946382f5b2f997df556eada1d56c79
Resolved tag v0.0.0-rehearsal.5 to sha1:937214a632f9387601dba94f996de78b2e6ee424
Loaded attestation from GitHub API

✓ Verification succeeded! SHA256SUMS is present in release v0.0.0-rehearsal.5
+ [[ release verify-asset == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ shasum -a 256 --check SHA256SUMS
trusted-server-axum-x86_64-unknown-linux-gnu: OK
trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json: OK
trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json: OK
trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json: OK
trusted-server-axum-x86_64-unknown-linux-musl: OK
trusted-server-axum-x86_64-unknown-linux-musl.spdx.json: OK
trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json: OK
trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json: OK
trusted-server-axum-aarch64-unknown-linux-gnu: OK
trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json: OK
trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json: OK
trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json: OK
trusted-server-fastly.wasm: OK
trusted-server-fastly.wasm.spdx.json: OK
trusted-server-fastly.wasm.provenance.sigstore.json: OK
trusted-server-fastly.wasm.sbom.sigstore.json: OK
ts-aarch64-apple-darwin: OK
ts-aarch64-apple-darwin.spdx.json: OK
ts-aarch64-apple-darwin.provenance.sigstore.json: OK
ts-aarch64-apple-darwin.sbom.sigstore.json: OK
ts-x86_64-apple-darwin: OK
ts-x86_64-apple-darwin.spdx.json: OK
ts-x86_64-apple-darwin.provenance.sigstore.json: OK
ts-x86_64-apple-darwin.sbom.sigstore.json: OK
ts-x86_64-unknown-linux-gnu: OK
ts-x86_64-unknown-linux-gnu.spdx.json: OK
ts-x86_64-unknown-linux-gnu.provenance.sigstore.json: OK
ts-x86_64-unknown-linux-gnu.sbom.sigstore.json: OK
+ WORKFLOW=prk-Jr/trusted-server/.github/workflows/release-build.yml
+ for asset in "${ASSETS[@]}"
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ command gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-fastly.wasm
SUCCESS: gh attestation verify trusted-server-fastly.wasm with requested predicate, signer and source pins
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ command gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-fastly.wasm
SUCCESS: gh attestation verify trusted-server-fastly.wasm with requested predicate, signer and source pins
+ for asset in "${ASSETS[@]}"
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ command gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify ts-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ command gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify ts-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ for asset in "${ASSETS[@]}"
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ command gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-aarch64-apple-darwin
SUCCESS: gh attestation verify ts-aarch64-apple-darwin with requested predicate, signer and source pins
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ command gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-aarch64-apple-darwin
SUCCESS: gh attestation verify ts-aarch64-apple-darwin with requested predicate, signer and source pins
+ for asset in "${ASSETS[@]}"
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ command gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-apple-darwin
SUCCESS: gh attestation verify ts-x86_64-apple-darwin with requested predicate, signer and source pins
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ command gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-apple-darwin
SUCCESS: gh attestation verify ts-x86_64-apple-darwin with requested predicate, signer and source pins
+ for asset in "${ASSETS[@]}"
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ for asset in "${ASSETS[@]}"
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-musl
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl with requested predicate, signer and source pins
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-musl
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl with requested predicate, signer and source pins
+ for asset in "${ASSETS[@]}"
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ command gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-aarch64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ command gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-aarch64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu with requested predicate, signer and source pins
+ IDENTITY=https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5
+ for asset in "${ASSETS[@]}"
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ command gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-fastly.wasm
SUCCESS: gh attestation verify trusted-server-fastly.wasm with requested predicate, signer and source pins
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ command gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-fastly.wasm
SUCCESS: gh attestation verify trusted-server-fastly.wasm with requested predicate, signer and source pins
+ jq -e --slurpfile document trusted-server-fastly.wasm.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-fastly.wasm.sbom-verification.json
true
+ for asset in "${ASSETS[@]}"

@prk-Jr

prk-Jr commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator Author

Rehearsal v0.0.0-rehearsal.5 passed at exact implementation SHA 937214a632f9387601dba94f996de78b2e6ee424.

Build/sign/publication run passed all seven builds/signing jobs and immutable publication. Published release: ID 421431085, draft=false, immutable=true, exactly 29 nonempty assets. The 28 checksum entries exclude SHA256SUMS itself. Local directory paths are normalized below; commands, flags, identities, digests and results are unchanged.

Full online verification transcript, part 2.

+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ command gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify ts-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ command gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify ts-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ jq -e --slurpfile document ts-x86_64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-unknown-linux-gnu.sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ command gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-aarch64-apple-darwin
SUCCESS: gh attestation verify ts-aarch64-apple-darwin with requested predicate, signer and source pins
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ command gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-aarch64-apple-darwin
SUCCESS: gh attestation verify ts-aarch64-apple-darwin with requested predicate, signer and source pins
+ jq -e --slurpfile document ts-aarch64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-aarch64-apple-darwin.sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ command gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-apple-darwin
SUCCESS: gh attestation verify ts-x86_64-apple-darwin with requested predicate, signer and source pins
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ command gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-apple-darwin
SUCCESS: gh attestation verify ts-x86_64-apple-darwin with requested predicate, signer and source pins
+ jq -e --slurpfile document ts-x86_64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-apple-darwin.sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ jq -e --slurpfile document trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-x86_64-unknown-linux-gnu.sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-musl
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl with requested predicate, signer and source pins
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-musl
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl with requested predicate, signer and source pins
+ jq -e --slurpfile document trusted-server-axum-x86_64-unknown-linux-musl.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-x86_64-unknown-linux-musl.sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ command gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-aarch64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ command gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-aarch64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu with requested predicate, signer and source pins
+ jq -e --slurpfile document trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-aarch64-unknown-linux-gnu.sbom-verification.json
true
+ printf '%s\n' 'SUCCESS: release, all 29 assets, 28 checksums, both predicates and both signer identities for each binary, and seven SPDX predicate comparisons verified.'
SUCCESS: release, all 29 assets, 28 checksums, both predicates and both signer identities for each binary, and seven SPDX predicate comparisons verified.

@prk-Jr

prk-Jr commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator Author

Rehearsal v0.0.0-rehearsal.5 passed at exact implementation SHA 937214a632f9387601dba94f996de78b2e6ee424.

Build/sign/publication run passed all seven builds/signing jobs and immutable publication. Published release: ID 421431085, draft=false, immutable=true, exactly 29 nonempty assets. The 28 checksum entries exclude SHA256SUMS itself. Local directory paths are normalized below; commands, flags, identities, digests and results are unchanged.

All seven binaries passed provenance and SPDX verification with both signer identity forms, exact source/ref/signer pins, self-hosted runners denied and published-SPDX predicate equality under OS-enforced network denial. No --offline flag is used. GitHub CLI 2.102.0 matches the publisher; its official ARM macOS archive SHA-256 is da922c20d1792e5b2cbf375593d7a658acf034c12c84e007e71c76ef959c337e. Public trust roots were fetched once online.

gh version 2.102.0 (2026-09-30)
https://github.com/cli/cli/releases/tag/v2.102.0

65ca537f6ed8a47fd0e560c421baa1f6c1efb8b25fc200d8c5c02c0e92eb2b9c  <evidence-directory>/trusted_root.jsonl
gh attestation trusted-root > trusted_root.jsonl
shasum -a 256 trusted_root.jsonl
/usr/bin/sandbox-exec -p '(version 1)(allow default)(deny network*)' env GH_TOKEN=offline-verification-no-network bash -x offline-verify.sh
curl: (6) Could not resolve host: example.com
SUCCESS: OS network-denial control blocked external HTTPS; curl exit 6
+ REPO=prk-Jr/trusted-server
+ TAG=v0.0.0-rehearsal.5
+ COMMIT=937214a632f9387601dba94f996de78b2e6ee424
+ WORKFLOW=prk-Jr/trusted-server/.github/workflows/release-build.yml
+ IDENTITY=https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5
+ ASSETS=(trusted-server-fastly.wasm ts-x86_64-unknown-linux-gnu ts-aarch64-apple-darwin ts-x86_64-apple-darwin trusted-server-axum-x86_64-unknown-linux-gnu trusted-server-axum-x86_64-unknown-linux-musl trusted-server-axum-aarch64-unknown-linux-gnu)
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-fastly.wasm
SUCCESS: gh attestation verify trusted-server-fastly.wasm with requested predicate, signer and source pins
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ command gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-fastly.wasm
SUCCESS: gh attestation verify trusted-server-fastly.wasm with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-fastly.wasm
SUCCESS: gh attestation verify trusted-server-fastly.wasm with requested predicate, signer and source pins
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ command gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-fastly.wasm
SUCCESS: gh attestation verify trusted-server-fastly.wasm with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-fastly.wasm.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-fastly.wasm.offline-sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify ts-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ command gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify ts-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify ts-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ command gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify ts-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-x86_64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-unknown-linux-gnu.offline-sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-aarch64-apple-darwin
SUCCESS: gh attestation verify ts-aarch64-apple-darwin with requested predicate, signer and source pins
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ command gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-aarch64-apple-darwin
SUCCESS: gh attestation verify ts-aarch64-apple-darwin with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-aarch64-apple-darwin
SUCCESS: gh attestation verify ts-aarch64-apple-darwin with requested predicate, signer and source pins
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ command gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-aarch64-apple-darwin
SUCCESS: gh attestation verify ts-aarch64-apple-darwin with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-aarch64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-aarch64-apple-darwin.offline-sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-apple-darwin
SUCCESS: gh attestation verify ts-x86_64-apple-darwin with requested predicate, signer and source pins
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ command gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-apple-darwin
SUCCESS: gh attestation verify ts-x86_64-apple-darwin with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-apple-darwin
SUCCESS: gh attestation verify ts-x86_64-apple-darwin with requested predicate, signer and source pins
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ command gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-apple-darwin
SUCCESS: gh attestation verify ts-x86_64-apple-darwin with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-x86_64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-apple-darwin.offline-sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-x86_64-unknown-linux-gnu.offline-sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-musl
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl with requested predicate, signer and source pins
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-musl
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-musl
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl with requested predicate, signer and source pins
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-musl
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-x86_64-unknown-linux-musl.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-x86_64-unknown-linux-musl.offline-sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-aarch64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ command gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-aarch64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-aarch64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ command gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.5 --source-digest 937214a632f9387601dba94f996de78b2e6ee424 --signer-digest 937214a632f9387601dba94f996de78b2e6ee424 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.5 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-aarch64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-aarch64-unknown-linux-gnu.offline-sbom-verification.json
true
+ printf '%s\n' 'SUCCESS: all seven binaries verified offline for provenance and SPDX, both signer identities, exact source pins, and SPDX predicate equality.'
SUCCESS: all seven binaries verified offline for provenance and SPDX, both signer identities, exact source pins, and SPDX predicate equality.

@prk-Jr

prk-Jr commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator Author

Rehearsal v0.0.0-rehearsal.5 passed at exact implementation SHA 937214a632f9387601dba94f996de78b2e6ee424.

Build/sign/publication run passed all seven builds/signing jobs and immutable publication. Published release: ID 421431085, draft=false, immutable=true, exactly 29 nonempty assets. The 28 checksum entries exclude SHA256SUMS itself. Local directory paths are normalized below; commands, flags, identities, digests and results are unchanged.

Verified release wasm and host CLI were executed locally with pinned Viceroy 0.21.0, fictional loopback configuration and a local Node origin. A real page returned HTTP200, origin marker, injected JS and the exact full source SHA in x-ts-version. No Fastly service was contacted or deployed. GNU startup smokes cover Debian12/Ubuntu22.04/UBI9; ARM uses native Debian12; static musl uses pinned Alpine and a scratch-like rootfs with read-only runtime CA data. These are startup checks, not complete runtime/load qualification.

set -euxo pipefail
REPO_ROOT=<source-checkout>
EVIDENCE=<evidence-directory>
WORK="$EVIDENCE/viceroy-smoke"
TS="$EVIDENCE/ts-aarch64-apple-darwin"
WASM="$EVIDENCE/trusted-server-fastly.wasm"
VICEROY=<pinned-runtime-tools>/viceroy
mkdir "$WORK"
for port in 18888 17676; do
  if lsof -nP -iTCP:"$port" -sTCP:LISTEN; then exit 1; fi
done
cp "$REPO_ROOT/edgezero.toml" "$REPO_ROOT/fastly.toml" "$WORK/"
cp "$REPO_ROOT/trusted-server.example.toml" "$WORK/app.toml"
ln -s "$REPO_ROOT/crates" "$WORK/crates"
node - "$WORK" <<'JS'
const fs=require('node:fs');const root=process.argv[2];
const path=`${root}/app.toml`;let text=fs.readFileSync(path,'utf8');text=text.replace('domain = "example.com"','domain = "127.0.0.1"').replace('cookie_domain = ".example.com"','cookie_domain = "127.0.0.1"');text=text.replace('origin_url = "https://origin.example.com"','origin_url = "http://127.0.0.1:18888"');if(!text.includes('origin_url = "http://127.0.0.1:18888"'))throw Error('Origin fixture replacement failed');fs.writeFileSync(path,text);
const fastly=`${root}/fastly.toml`;text=fs.readFileSync(fastly,'utf8').replace('env = "FASTLY_KEY"','data = "fictional-local-api-key"');fs.writeFileSync(fastly,text);
JS
chmod u+x "$TS"
"$TS" --version
(cd "$WORK" && "$TS" config push --adapter fastly --local \
 --manifest "$WORK/edgezero.toml" --app-config "$WORK/app.toml" --no-diff --yes)
"$VICEROY" --version
cat > "$WORK/origin.mjs" <<'JS'
import http from 'node:http';
http.createServer((req,res)=>{res.writeHead(200,{'content-type':'text/html'});res.end('<!doctype html><html><head><title>Local release proof</title></head><body>phase1-verified-origin-marker</body></html>');}).listen(18888,'127.0.0.1');
JS
node "$WORK/origin.mjs" > "$WORK/origin.log" 2>&1 &
origin_pid=$!
cleanup() {
  if [[ -n "${viceroy_pid:-}" ]]; then kill "$viceroy_pid" 2>/dev/null || true; wait "$viceroy_pid" 2>/dev/null || true; fi
  kill "$origin_pid" 2>/dev/null || true
  wait "$origin_pid" 2>/dev/null || true
}
trap cleanup EXIT
"$VICEROY" serve -C "$WORK/fastly.toml" --addr 127.0.0.1:17676 "$WASM" > "$WORK/viceroy.log" 2>&1 &
viceroy_pid=$!
curl --fail --silent --show-error --retry 20 --retry-connrefused --retry-delay 1 \
 --retry-max-time 45 --max-time 30 -H 'Host: 127.0.0.1' \
 -D "$WORK/headers.txt" -o "$WORK/body.html" http://127.0.0.1:17676/
cat "$WORK/headers.txt"
node - "$WORK" <<'JS'
const fs=require('node:fs');const assert=require('node:assert/strict');const crypto=require('node:crypto');const work=process.argv[2];const headers=fs.readFileSync(`${work}/headers.txt`,'utf8');const body=fs.readFileSync(`${work}/body.html`);assert.match(headers,/^HTTP\/1\.1 200/m);assert.match(headers,/^x-ts-version: 937214a632f9387601dba94f996de78b2e6ee424\r?$/im);assert.ok(body.includes('phase1-verified-origin-marker'));assert.ok(body.includes('/static/tsjs=tsjs-unified.min.js'));console.log(`SUCCESS: configured Viceroy page returned HTTP200, origin marker, injected JS and exact release source header; ${body.length} bytes, sha256=${crypto.createHash('sha256').update(body).digest('hex')}`);
JS
+ REPO_ROOT=<source-checkout>
+ EVIDENCE=<evidence-directory>
+ WORK=<evidence-directory>/viceroy-smoke
+ TS=<evidence-directory>/ts-aarch64-apple-darwin
+ WASM=<evidence-directory>/trusted-server-fastly.wasm
+ VICEROY=<pinned-runtime-tools>/viceroy
+ mkdir <evidence-directory>/viceroy-smoke
+ for port in 18888 17676
+ lsof -nP -iTCP:18888 -sTCP:LISTEN
+ for port in 18888 17676
+ lsof -nP -iTCP:17676 -sTCP:LISTEN
+ cp <source-checkout>/edgezero.toml <source-checkout>/fastly.toml <evidence-directory>/viceroy-smoke/
+ cp <source-checkout>/trusted-server.example.toml <evidence-directory>/viceroy-smoke/app.toml
+ ln -s <source-checkout>/crates <evidence-directory>/viceroy-smoke/crates
+ node - <evidence-directory>/viceroy-smoke
+ chmod u+x <evidence-directory>/ts-aarch64-apple-darwin
+ <evidence-directory>/ts-aarch64-apple-darwin --version
ts 0.1.0
+ cd <evidence-directory>/viceroy-smoke
+ <evidence-directory>/ts-aarch64-apple-darwin config push --adapter fastly --local --manifest <evidence-directory>/viceroy-smoke/edgezero.toml --app-config <evidence-directory>/viceroy-smoke/app.toml --no-diff --yes
wrote 1 physical entries (1 logical) to `[local_server.config_stores.trusted_server_config.contents]` in <evidence-directory>/viceroy-smoke/fastly.toml (logical id `trusted_server_config`); restart `fastly compute serve` to pick up changes
pushed-key=trusted_server_config
pushed-store=trusted_server_config
+ <pinned-runtime-tools>/viceroy --version
viceroy 0.21.0
+ cat
+ origin_pid=10234
+ trap cleanup EXIT
+ node <evidence-directory>/viceroy-smoke/origin.mjs
+ viceroy_pid=10235
+ curl --fail --silent --show-error --retry 20 --retry-connrefused --retry-delay 1 --retry-max-time 45 --max-time 30 -H 'Host: 127.0.0.1' -D <evidence-directory>/viceroy-smoke/headers.txt -o <evidence-directory>/viceroy-smoke/body.html http://127.0.0.1:17676/
+ <pinned-runtime-tools>/viceroy serve -C <evidence-directory>/viceroy-smoke/fastly.toml --addr 127.0.0.1:17676 <evidence-directory>/trusted-server-fastly.wasm
curl: (7) Failed to connect to 127.0.0.1 port 17676 after 0 ms: Couldn't connect to server
curl: (7) Failed to connect to 127.0.0.1 port 17676 after 0 ms: Couldn't connect to server
+ cat <evidence-directory>/viceroy-smoke/headers.txt
HTTP/1.1 200 OK
content-type: text/html
date: Fri, 23 Oct 2026 04:21:06 GMT
connection: keep-alive
keep-alive: timeout=5
x-ts-fastly-version: 0
x-geo-city: San Francisco
x-geo-country: US
x-geo-continent: NorthAmerica
x-geo-coordinates: 37.77869,-122.39557
x-geo-region: CA
x-geo-info-available: true
x-ts-version: 937214a632f9387601dba94f996de78b2e6ee424
transfer-encoding: chunked

+ node - <evidence-directory>/viceroy-smoke
SUCCESS: configured Viceroy page returned HTTP200, origin marker, injected JS and exact release source header; 262 bytes, sha256=faafc52e92b3981f7a899b5bb3f6d85cebcb045618bce3727bbd1be3f1b869e2
+ cleanup
+ [[ -n 10235 ]]
+ kill 10235
+ wait 10235
+ true
+ kill 10234
+ wait 10234
+ true
Rehearsal .5 build/startup output at 937214a632f9387601dba94f996de78b2e6ee424.
Extracts retain every final-byte/version/health SUCCESS and image identity line; full job logs are linked. Axum receives a fictional runtime envelope/secrets and a read-only system CA bundle; no operator values enter build inputs.

trusted-server-fastly.wasm
https://github.com/prk-Jr/trusted-server/actions/runs/39894486002/job/120221655801
2026-10-23T03:23:39.4388773Z SUCCESS: final-byte checks wasm32-wasip1 

ts-x86_64-unknown-linux-gnu
https://github.com/prk-Jr/trusted-server/actions/runs/39894486002/job/120221655819
2026-10-23T03:21:32.9161053Z GNU builder: registry.access.redhat.com/ubi9/ubi:9.6@sha256:dec374e05cc13ebbc0975c9f521f3db6942d27f8ccdf06b180160490eef8bdbc sha256:3bc5d61e715a6a4591cd1736ef9af2f3cec3e3006545b48ac3fc01f82dfbe202
2026-10-23T03:21:33.1134831Z ldd (GNU libc) 2.34
2026-10-23T03:28:36.0807215Z SUCCESS: final-byte checks x86_64-unknown-linux-gnu GLIBC_2.34 GLIBC_2.2.5 GLIBC_2.14 GLIBC_2.3 GLIBC_2.29 GLIBC_2.3.4 GLIBC_2.33 GLIBC_2.28 GLIBC_2.7 GLIBC_2.16 GLIBC_2.10 GLIBC_2.3.2 GLIBC_2.9 GLIBC_2.30 GLIBC_2.4 GLIBC_2.17 GLIBC_2.15 GLIBC_2.32 GLIBC_2.25 GLIBC_2.18 GLIBC_2.5 GLIBC_2.27
2026-10-23T03:28:36.0842547Z SUCCESS: ts 0.1.0
2026-10-23T03:28:37.7940213Z Runtime image: debian:12-slim sha256:8da84df25d28176be84164040cd45e128c6b4c6a80b7d7cbe17fe2b9f198efc2
2026-10-23T03:28:38.6111438Z SUCCESS: ts 0.1.0
2026-10-23T03:28:40.2337502Z Runtime image: ubuntu:22.04 sha256:cee13550f97b8a595506e8e4ca74263ba44924248779a4ba4f942e197652acff
2026-10-23T03:28:40.4147597Z SUCCESS: ts 0.1.0
2026-10-23T03:28:42.3890028Z Runtime image: registry.access.redhat.com/ubi9/ubi-minimal:9.6 sha256:a2c5a85865a585c3bc8b10f6c269358fdf89fe32be4232885166889d85c76421
2026-10-23T03:28:42.5618567Z SUCCESS: ts 0.1.0

ts-aarch64-apple-darwin
https://github.com/prk-Jr/trusted-server/actions/runs/39894486002/job/120221655878
2026-10-23T03:28:41.3891200Z SUCCESS: final-byte checks aarch64-apple-darwin 
2026-10-23T03:28:41.4092670Z SUCCESS: ts 0.1.0

ts-x86_64-apple-darwin
https://github.com/prk-Jr/trusted-server/actions/runs/39894486002/job/120221655820
2026-10-23T03:45:58.2123180Z SUCCESS: final-byte checks x86_64-apple-darwin 
2026-10-23T03:45:58.2307710Z SUCCESS: ts 0.1.0

trusted-server-axum-x86_64-unknown-linux-gnu
https://github.com/prk-Jr/trusted-server/actions/runs/39894486002/job/120221655935
2026-10-23T03:21:44.0810858Z GNU builder: registry.access.redhat.com/ubi9/ubi:9.6@sha256:dec374e05cc13ebbc0975c9f521f3db6942d27f8ccdf06b180160490eef8bdbc sha256:436362b004a1b2e1aad25ecd39169461d46ea5804516c634890ff627b8b03a21
2026-10-23T03:21:44.2780888Z ldd (GNU libc) 2.34
2026-10-23T03:25:42.9566707Z SUCCESS: final-byte checks x86_64-unknown-linux-gnu GLIBC_2.34 GLIBC_2.2.5 GLIBC_2.14 GLIBC_2.3 GLIBC_2.27 GLIBC_2.29 GLIBC_2.7 GLIBC_2.16 GLIBC_2.33 GLIBC_2.3.4 GLIBC_2.10 GLIBC_2.3.2 GLIBC_2.9 GLIBC_2.30 GLIBC_2.17 GLIBC_2.32 GLIBC_2.28 GLIBC_2.25 GLIBC_2.18
2026-10-23T03:25:45.5004618Z Runtime image: debian:12-slim sha256:8da84df25d28176be84164040cd45e128c6b4c6a80b7d7cbe17fe2b9f198efc2
2026-10-23T03:25:45.9554948Z SUCCESS: configured Axum health returned 200 ok: debian:12-slim sha256:8da84df25d28176be84164040cd45e128c6b4c6a80b7d7cbe17fe2b9f198efc2
2026-10-23T03:25:48.4541057Z Runtime image: ubuntu:22.04 sha256:cee13550f97b8a595506e8e4ca74263ba44924248779a4ba4f942e197652acff
2026-10-23T03:25:48.6225796Z SUCCESS: configured Axum health returned 200 ok: ubuntu:22.04 sha256:cee13550f97b8a595506e8e4ca74263ba44924248779a4ba4f942e197652acff
2026-10-23T03:25:51.2992569Z Runtime image: registry.access.redhat.com/ubi9/ubi-minimal:9.6 sha256:a2c5a85865a585c3bc8b10f6c269358fdf89fe32be4232885166889d85c76421
2026-10-23T03:25:51.4595006Z SUCCESS: configured Axum health returned 200 ok: registry.access.redhat.com/ubi9/ubi-minimal:9.6 sha256:a2c5a85865a585c3bc8b10f6c269358fdf89fe32be4232885166889d85c76421

trusted-server-axum-x86_64-unknown-linux-musl
https://github.com/prk-Jr/trusted-server/actions/runs/39894486002/job/120221655764
2026-10-23T03:21:18.2570786Z 13.3.0
2026-10-23T03:23:42.7273213Z SUCCESS: final-byte checks x86_64-unknown-linux-musl 
2026-10-23T03:23:43.6509821Z Runtime image: alpine:3.22.2@sha256:4b7ce07002c69e8f3d704a9c5d6fd3053be500b7f1c69fc0d80990c2ad8dd412 sha256:706db57fb2063f39f69632c5b5c9c439633fda35110e65587c5d85553fd1cc38
2026-10-23T03:23:46.1214767Z SUCCESS: configured Axum health returned 200 ok: alpine:3.22.2@sha256:4b7ce07002c69e8f3d704a9c5d6fd3053be500b7f1c69fc0d80990c2ad8dd412 sha256:706db57fb2063f39f69632c5b5c9c439633fda35110e65587c5d85553fd1cc38
2026-10-23T03:23:46.1958094Z Runtime image: scratch sha256:adc64582cbdfe5d17151d1937d4aac3a35f1d9f1dd71993e977b710d1efc9fb6
2026-10-23T03:23:46.2787583Z SUCCESS: configured Axum health returned 200 ok: scratch sha256:adc64582cbdfe5d17151d1937d4aac3a35f1d9f1dd71993e977b710d1efc9fb6

trusted-server-axum-aarch64-unknown-linux-gnu
https://github.com/prk-Jr/trusted-server/actions/runs/39894486002/job/120221656167
2026-10-23T03:21:29.3448553Z GNU builder: registry.access.redhat.com/ubi9/ubi:9.6@sha256:dec374e05cc13ebbc0975c9f521f3db6942d27f8ccdf06b180160490eef8bdbc sha256:0391b18e549b49d4296a8de7fd651884f26ab6029dc1a297446d0cdae96f738f
2026-10-23T03:21:29.4912420Z ldd (GNU libc) 2.34
2026-10-23T03:24:19.9998959Z SUCCESS: final-byte checks aarch64-unknown-linux-gnu GLIBC_2.17 GLIBC_2.33 GLIBC_2.34 GLIBC_2.29 GLIBC_2.28 GLIBC_2.30 GLIBC_2.27 GLIBC_2.18 GLIBC_2.25 GLIBC_2.32
2026-10-23T03:24:21.6483013Z Runtime image: debian:12-slim sha256:28fe65558df3e10c89e7d685cb86544cdc138f242d12100c5b0981f92aae0853
2026-10-23T03:24:22.4995813Z SUCCESS: configured Axum health returned 200 ok: debian:12-slim sha256:28fe65558df3e10c89e7d685cb86544cdc138f242d12100c5b0981f92aae0853

@prk-Jr

prk-Jr commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator Author

Rehearsal v0.0.0-rehearsal.5 passed at exact implementation SHA 937214a632f9387601dba94f996de78b2e6ee424.

Build/sign/publication run passed all seven builds/signing jobs and immutable publication. Published release: ID 421431085, draft=false, immutable=true, exactly 29 nonempty assets. The 28 checksum entries exclude SHA256SUMS itself. Local directory paths are normalized below; commands, flags, identities, digests and results are unchanged.

All 29 published files were downloaded from this release. Bounded range downloads were assembled and checked against the published SHA-256 metadata; small companions were independently digest-checked. No earlier release or CI artifact substituted for a binary.

gh api repos/prk-Jr/trusted-server/releases/tags/v0.0.0-rehearsal.5 > release-metadata.json
node range-download.mjs
node small-download.mjs
node check-downloads.mjs
import fs from 'node:fs';
import {promisify} from 'node:util';
import {execFile} from 'node:child_process';
import crypto from 'node:crypto';
const run=promisify(execFile);
const release=JSON.parse(fs.readFileSync('release-metadata.json'));
const binaries=release.assets.filter(a=> a.size>=2*1024*1024);
fs.mkdirSync('ranges',{recursive:true});
const tasks=[]; const chunk=2*1024*1024;
for(const a of binaries) for(let offset=0;offset<a.size;offset+=chunk) tasks.push({a,offset,end:Math.min(a.size-1,offset+chunk-1)});
let done=0;
async function worker(){while(tasks.length){const {a,offset,end}=tasks.shift();const out=`ranges/${a.name}.${offset}`; await run('curl',['--fail','--silent','--show-error','--location','--retry','2','--max-time','180','--range',`${offset}-${end}`,'--max-filesize',String(end-offset+1),'--output',out,a.browser_download_url]);if(fs.statSync(out).size!==end-offset+1)throw Error(`Range size mismatch: ${a.name} ${offset}`);done++;if(done%32===0)console.log(`Downloaded ${done} ranges`);}}
await Promise.all(Array.from({length:32},worker));
for(const a of binaries){const dest=fs.openSync(`${a.name}.assembled`,'w');const hash=crypto.createHash('sha256');for(let o=0;o<a.size;o+=chunk){const b=fs.readFileSync(`ranges/${a.name}.${o}`);fs.writeSync(dest,b);hash.update(b);}fs.closeSync(dest);if(`sha256:${hash.digest('hex')}`!==a.digest)throw Error(`Digest mismatch: ${a.name}`);fs.renameSync(`${a.name}.assembled`,a.name);console.log(`SUCCESS: ${a.name}: ${a.size} bytes match ${a.digest}`);}
import fs from 'node:fs';import crypto from 'node:crypto';import {promisify} from 'node:util';import {execFile} from 'node:child_process';
const run=promisify(execFile);const {assets}=JSON.parse(fs.readFileSync('release-metadata.json'));await Promise.all(assets.filter(a=>a.size<2*1024*1024).map(async a=>{const valid=()=>fs.existsSync(a.name)&&`sha256:${crypto.createHash('sha256').update(fs.readFileSync(a.name)).digest('hex')}`===a.digest;if(!valid())await run('curl',['--fail','--silent','--show-error','--location','--max-time','180','--output',a.name,a.browser_download_url]);if(!valid())throw Error(`Bad asset: ${a.name}`);console.log(`SUCCESS: ${a.name} matches published digest`);}));
import fs from'node:fs';import assert from'node:assert/strict';import crypto from'node:crypto';
const release=JSON.parse(fs.readFileSync('release-metadata.json'));const expected=JSON.parse(fs.readFileSync('expected-assets.json'));
assert.equal(release.immutable,true);assert.equal(release.draft,false);assert.deepEqual(release.assets.map(a=>a.name).sort(),expected);assert.equal(expected.length,29);
for(const a of release.assets){assert(fs.lstatSync(a.name).isFile());const bytes=fs.readFileSync(a.name);assert(bytes.length>0);assert.equal(bytes.length,a.size);assert.equal('sha256:'+crypto.createHash('sha256').update(bytes).digest('hex'),a.digest);}
const sums=fs.readFileSync('SHA256SUMS','utf8').trim().split('\n');assert.equal(sums.length,28);assert.deepEqual(sums.map(line=>line.match(/^[a-f0-9]{64}  (.+)$/)[1]).sort(),expected.filter(a=>a!=='SHA256SUMS'));
console.log('SUCCESS: immutable published release contains exactly29 nonempty assets with published digests; SHA256SUMS covers exactly28 companions and binaries, excluding itself.');
Downloaded 32 ranges
Downloaded 64 ranges
Downloaded 96 ranges
Downloaded 128 ranges
Downloaded 160 ranges
Downloaded 192 ranges
Downloaded 224 ranges
Downloaded 256 ranges
Downloaded 288 ranges
Downloaded 320 ranges
Downloaded 352 ranges
Downloaded 384 ranges
Downloaded 416 ranges
SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu: 136522176 bytes match sha256:f8f7c3cfd7853f545a38e08bf0a396dd201d241bd3c6b0511d99d0f938022079
SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu: 136384928 bytes match sha256:b85a2cc54c8639d66d79186cf49771161e712762631596cb6f213afa83abd030
SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl: 135732912 bytes match sha256:0216ea9f103a0d79db666ff6351bb29d5391921fa29e971b4d68a76359a40210
SUCCESS: trusted-server-fastly.wasm: 79205388 bytes match sha256:bed94df95e5cb29e8ab3255321bd8bf00aa56ffd60e5de60875323ad433169f0
SUCCESS: ts-aarch64-apple-darwin: 41016160 bytes match sha256:e9c304e55fceb4d0e2f6ac14ac5be9bed368b2628d1a90d6f4539757e129469a
SUCCESS: ts-x86_64-apple-darwin: 43716264 bytes match sha256:5f7ac1d7f7cf879a08ac8a767aa5dc9f9c92994f2188b2613f2b4739e86de3b0
SUCCESS: ts-x86_64-unknown-linux-gnu: 299996528 bytes match sha256:1a5945133d5270855c501176cdc098da00d5439f9ecc33a0c07b3c84bf574944

SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json matches published digest
SUCCESS: SHA256SUMS matches published digest
SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json matches published digest
SUCCESS: trusted-server-fastly.wasm.provenance.sigstore.json matches published digest
SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json matches published digest
SUCCESS: ts-aarch64-apple-darwin.provenance.sigstore.json matches published digest
SUCCESS: ts-x86_64-unknown-linux-gnu.provenance.sigstore.json matches published digest
SUCCESS: ts-x86_64-apple-darwin.provenance.sigstore.json matches published digest
SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json matches published digest
SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json matches published digest
SUCCESS: trusted-server-fastly.wasm.sbom.sigstore.json matches published digest
SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json matches published digest
SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json matches published digest
SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl.spdx.json matches published digest
SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json matches published digest
SUCCESS: ts-x86_64-unknown-linux-gnu.sbom.sigstore.json matches published digest
SUCCESS: trusted-server-fastly.wasm.spdx.json matches published digest
SUCCESS: ts-aarch64-apple-darwin.sbom.sigstore.json matches published digest
SUCCESS: ts-x86_64-unknown-linux-gnu.spdx.json matches published digest
SUCCESS: ts-aarch64-apple-darwin.spdx.json matches published digest
SUCCESS: ts-x86_64-apple-darwin.spdx.json matches published digest
SUCCESS: ts-x86_64-apple-darwin.sbom.sigstore.json matches published digest

SUCCESS: immutable published release contains exactly29 nonempty assets with published digests; SHA256SUMS covers exactly28 companions and binaries, excluding itself.

@prk-Jr

prk-Jr commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator Author

Rehearsal v0.0.0-rehearsal.5 passed at exact implementation SHA 937214a632f9387601dba94f996de78b2e6ee424. The fresh tag is lightweight.

  • Implementation CI: 31 checks passed; signing/publication correctly skipped on the PR.
  • Fork rehearsal: all seven builds, seven signing jobs, immutable publication and post-publish checks passed. No transient read retry was observed.
  • Immutable release, ID 421431085: draft=false, immutable=true, exactly 29 nonempty assets. No upstream tags, releases or settings changed.
  • Independent GitHub CLI 2.102.0 verification passed immutable membership for every asset, 28 checksum entries, provenance + SPDX for each of seven binaries, both exact signer identity forms, source/ref/signer digest pins, self-hosted runners denied, and seven published-SPDX predicate comparisons.
  • Offline attestation verification passed under OS-enforced network denial, including both signer forms and SPDX equality for all seven binaries.
  • Startup/image-ID evidence passed for the GNU baseline, static musl and native CLI targets. Verified release wasm and host CLI served a real configured page in pinned Viceroy 0.21.0: HTTP200, origin marker, injected JS and exact full source header. Runtime CA data is explicitly supplied to Axum smokes.

Full commands and explicit success output:

  1. Online verification: part 1, part 2.
  2. Complete offline verification and network-denial control.
  3. All build/startup outputs, image IDs and local Viceroy proof.
  4. Download commands, complete file digests and checksum coverage.

Any following documentation-only head retains this exact rehearsed implementation SHA. The PR remains draft; no reviewers requested. Maintainer production-release/settings and allowlist review gates remain.

@prk-Jr

prk-Jr commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator Author

Rehearsal .6 online verification transcript, part 1/2, exact source 39a769c. Independent read-only checks passed: documented download, immutable prerelease/not Latest, release verification, all 29 verify-asset calls, 28 checksums, both predicates and signer forms for all seven binaries WITH bundles and WITHOUT bundles, SPDX equality, macOS minimum OS and CLI source labels. The original workflow remains failed; see the failure/build/runtime record and offline transcript. Pinned gh 2.102.0.

+ set -euo pipefail
+ REPO=prk-Jr/trusted-server
+ TAG=v0.0.0-rehearsal.6
+ COMMIT=39a769c3e3d6476395fa7a215bd0a5e74a760f3e
+ ASSETS=(trusted-server-fastly.wasm ts-x86_64-unknown-linux-gnu ts-aarch64-apple-darwin ts-x86_64-apple-darwin trusted-server-axum-x86_64-unknown-linux-gnu trusted-server-axum-x86_64-unknown-linux-musl trusted-server-axum-aarch64-unknown-linux-gnu)
+ WORKFLOW=prk-Jr/trusted-server/.github/workflows/release-build.yml
+ IDENTITY=https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6
+ gh release download v0.0.0-rehearsal.6 --repo prk-Jr/trusted-server
+ gh api repos/prk-Jr/trusted-server/releases/tags/v0.0.0-rehearsal.6 --jq '{tag_name,draft,immutable,prerelease}'
{"draft":false,"immutable":true,"prerelease":true,"tag_name":"v0.0.0-rehearsal.6"}
++ gh api repos/prk-Jr/trusted-server/releases/tags/v0.0.0-rehearsal.6 --jq '[.draft == false,.immutable == true,.prerelease == true] | all'
+ test true = true
++ gh api repos/prk-Jr/trusted-server/releases/latest --jq .tag_name
+ test v0.0.0-rehearsal.5 '!=' v0.0.0-rehearsal.6
+ echo 'SUCCESS: published immutable prerelease; not Latest'
SUCCESS: published immutable prerelease; not Latest
+ gh release verify v0.0.0-rehearsal.6 --repo prk-Jr/trusted-server
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API
✓ Release v0.0.0-rehearsal.6 verified!

Assets
SHA256SUMS	sha256:8631d6f9450cae58adecdbee1ec6b25a4da0193f0ff98db1d59e8267a0702add
trusted-server-axum-aarch64-unknown-linux-gnu	sha256:4101e33313dee7be41bf3ace7bf9adc729979742c4a952a0b3f4a9c7caaf3841
trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json	sha256:fb65bc8ca788545841823c335c82bab365c8364353e849fbe9a46d8d3904ad49
trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json	sha256:ea2dce16163a4cc5e56fe77f9171d9747f5db9aeb3f420f24ab4c94378e79d73
trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json	sha256:9e46f0f15ee481d36acfd388ed07dfc3065ded17a79a5e400d55bd11248c80f7
trusted-server-axum-x86_64-unknown-linux-gnu	sha256:aa89e2bf687cc8ad0109e95f10b8bb8c0445889c8afee77087ed710bec7b86d9
trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json	sha256:012a9389317a480f0eca83ceaaca782c5215eccf00d4ce9828a21c2106c6ed4b
trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json	sha256:59024594d48d2ba22422644023a055e65033b2edbbe58a51c24d0d9fab990569
trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json	sha256:5efd251ff6270f8272b39dcca66f06e61c9905edbb1f4cf3976c3c9965ba9d14
trusted-server-axum-x86_64-unknown-linux-musl	sha256:e83ce48eb88a4c87c9ee42503de8ed706ad64ceb478a62bf3fda9574c0354293
trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json	sha256:7b5ec8d285cd5216a3f15f8e9e25024be584232877cd170dae89deac9ee7c648
trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json	sha256:fc6bfbfea3c55157649600e86cdf54bc0979266e0640a19d1a8a940f5563bc5e
trusted-server-axum-x86_64-unknown-linux-musl.spdx.json	sha256:f61542e5aa05825393cc34938637ac314237207698e6874f744519c76bbda554
trusted-server-fastly.wasm	sha256:08ceb344875fdee07bc8c7d32f41c474b476b82c6a65ca2ecfd3a998479d9e35
trusted-server-fastly.wasm.provenance.sigstore.json	sha256:4d1bb751bdcf6fa437ac6005401e66d7f39f7f571da7eb1fed62bcbadd5ae4d1
trusted-server-fastly.wasm.sbom.sigstore.json	sha256:15abe971f708bd7f7ccc95b4b76d4cab561f9c3e458e7360501861833d5605e3
trusted-server-fastly.wasm.spdx.json	sha256:ebcfecc3c2717cbd33ef23b0a11eb2089a5aa303a74769b33a39493b3d68653d
ts-aarch64-apple-darwin	sha256:99ec2bf81e093964b21e9cdc2f15a2a8c0458fc45475f9f4889dd1eb2724b918
ts-aarch64-apple-darwin.provenance.sigstore.json	sha256:5c85fe08a59fc977a8dbc58f06dd39122b2ac7ba3d1e48194ec240e8a31cf527
ts-aarch64-apple-darwin.sbom.sigstore.json	sha256:61c9a159b734635cfaae3188e1cca79b17887ef6281b723c04e054a53074f8a2
ts-aarch64-apple-darwin.spdx.json	sha256:abc16739a148f8afaf91ff57cba1ed00963e44ad1f1f8fd7b05004b65d5c5046
ts-x86_64-apple-darwin	sha256:639be68c17a4d420961012fc09dc34234fae08875b1b70683b74276e581b9e21
ts-x86_64-apple-darwin.provenance.sigstore.json	sha256:0dc65bdac8deffd508d131c2709efa2363c068eebcf457617585cad81af7d053
ts-x86_64-apple-darwin.sbom.sigstore.json	sha256:a1cf90c6452e1bcc73f6b0a6b9238b0f55fb183712a1614326843cbf369a2b7a
ts-x86_64-apple-darwin.spdx.json	sha256:52ef5ac3981b492fdc99964a91e33876a82fb3149ec6d17084b93caae51fb39e
ts-x86_64-unknown-linux-gnu	sha256:eb7b17cb7373796b09a290f9c6c7cc8ada6cf96d7865018ce5bca827f4748fe7
ts-x86_64-unknown-linux-gnu.provenance.sigstore.json	sha256:5c10004df30a4b885f4eac2a711ace8146253d36dbf862b5002c1dfc9b737843
ts-x86_64-unknown-linux-gnu.sbom.sigstore.json	sha256:0c08d8fde146912e9a928ec2b4ccf89603e852b400233a6357c4399078a7e8b7
ts-x86_64-unknown-linux-gnu.spdx.json	sha256:d8f71221bab2e18561a148306c2e24fb8eb0707963737a0f91df12bb5bf910b7

+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 trusted-server-fastly.wasm --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm: sha256:08ceb344875fdee07bc8c7d32f41c474b476b82c6a65ca2ecfd3a998479d9e35
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm is present in release v0.0.0-rehearsal.6
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 trusted-server-fastly.wasm.spdx.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm.spdx.json: sha256:ebcfecc3c2717cbd33ef23b0a11eb2089a5aa303a74769b33a39493b3d68653d
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm.spdx.json is present in release v0.0.0-rehearsal.6
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 trusted-server-fastly.wasm.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm.provenance.sigstore.json: sha256:4d1bb751bdcf6fa437ac6005401e66d7f39f7f571da7eb1fed62bcbadd5ae4d1
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm.provenance.sigstore.json is present in release v0.0.0-rehearsal.6
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 trusted-server-fastly.wasm.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm.sbom.sigstore.json: sha256:15abe971f708bd7f7ccc95b4b76d4cab561f9c3e458e7360501861833d5605e3
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm.sbom.sigstore.json is present in release v0.0.0-rehearsal.6
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ echo 'SUCCESS: trusted-server-fastly.wasm provenance verified with both exact signer identities and source pins'
SUCCESS: trusted-server-fastly.wasm provenance verified with both exact signer identities and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ echo 'SUCCESS: trusted-server-fastly.wasm sbom verified with both exact signer identities and source pins'
SUCCESS: trusted-server-fastly.wasm sbom verified with both exact signer identities and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-fastly.wasm.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-fastly.wasm.sbom.verified.json
true
+ echo 'SUCCESS: trusted-server-fastly.wasm attested SPDX predicate equals published companion'
SUCCESS: trusted-server-fastly.wasm attested SPDX predicate equals published companion
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu: sha256:eb7b17cb7373796b09a290f9c6c7cc8ada6cf96d7865018ce5bca827f4748fe7
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu is present in release v0.0.0-rehearsal.6
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 ts-x86_64-unknown-linux-gnu.spdx.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu.spdx.json: sha256:d8f71221bab2e18561a148306c2e24fb8eb0707963737a0f91df12bb5bf910b7
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.spdx.json is present in release v0.0.0-rehearsal.6
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu.provenance.sigstore.json: sha256:5c10004df30a4b885f4eac2a711ace8146253d36dbf862b5002c1dfc9b737843
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.provenance.sigstore.json is present in release v0.0.0-rehearsal.6
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu.sbom.sigstore.json: sha256:0c08d8fde146912e9a928ec2b4ccf89603e852b400233a6357c4399078a7e8b7
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.sbom.sigstore.json is present in release v0.0.0-rehearsal.6
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ echo 'SUCCESS: ts-x86_64-unknown-linux-gnu provenance verified with both exact signer identities and source pins'
SUCCESS: ts-x86_64-unknown-linux-gnu provenance verified with both exact signer identities and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ echo 'SUCCESS: ts-x86_64-unknown-linux-gnu sbom verified with both exact signer identities and source pins'
SUCCESS: ts-x86_64-unknown-linux-gnu sbom verified with both exact signer identities and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-x86_64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-unknown-linux-gnu.sbom.verified.json
true
+ echo 'SUCCESS: ts-x86_64-unknown-linux-gnu attested SPDX predicate equals published companion'
SUCCESS: ts-x86_64-unknown-linux-gnu attested SPDX predicate equals published companion
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 ts-aarch64-apple-darwin --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin: sha256:99ec2bf81e093964b21e9cdc2f15a2a8c0458fc45475f9f4889dd1eb2724b918
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin is present in release v0.0.0-rehearsal.6
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 ts-aarch64-apple-darwin.spdx.json --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin.spdx.json: sha256:abc16739a148f8afaf91ff57cba1ed00963e44ad1f1f8fd7b05004b65d5c5046
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin.spdx.json is present in release v0.0.0-rehearsal.6
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 ts-aarch64-apple-darwin.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin.provenance.sigstore.json: sha256:5c85fe08a59fc977a8dbc58f06dd39122b2ac7ba3d1e48194ec240e8a31cf527
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin.provenance.sigstore.json is present in release v0.0.0-rehearsal.6
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 ts-aarch64-apple-darwin.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin.sbom.sigstore.json: sha256:61c9a159b734635cfaae3188e1cca79b17887ef6281b723c04e054a53074f8a2
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin.sbom.sigstore.json is present in release v0.0.0-rehearsal.6
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ echo 'SUCCESS: ts-aarch64-apple-darwin provenance verified with both exact signer identities and source pins'
SUCCESS: ts-aarch64-apple-darwin provenance verified with both exact signer identities and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ echo 'SUCCESS: ts-aarch64-apple-darwin sbom verified with both exact signer identities and source pins'
SUCCESS: ts-aarch64-apple-darwin sbom verified with both exact signer identities and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-aarch64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-aarch64-apple-darwin.sbom.verified.json
true
+ echo 'SUCCESS: ts-aarch64-apple-darwin attested SPDX predicate equals published companion'
SUCCESS: ts-aarch64-apple-darwin attested SPDX predicate equals published companion
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 ts-x86_64-apple-darwin --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin: sha256:639be68c17a4d420961012fc09dc34234fae08875b1b70683b74276e581b9e21
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin is present in release v0.0.0-rehearsal.6
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 ts-x86_64-apple-darwin.spdx.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin.spdx.json: sha256:52ef5ac3981b492fdc99964a91e33876a82fb3149ec6d17084b93caae51fb39e
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin.spdx.json is present in release v0.0.0-rehearsal.6
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 ts-x86_64-apple-darwin.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin.provenance.sigstore.json: sha256:0dc65bdac8deffd508d131c2709efa2363c068eebcf457617585cad81af7d053
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin.provenance.sigstore.json is present in release v0.0.0-rehearsal.6
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 ts-x86_64-apple-darwin.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin.sbom.sigstore.json: sha256:a1cf90c6452e1bcc73f6b0a6b9238b0f55fb183712a1614326843cbf369a2b7a
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin.sbom.sigstore.json is present in release v0.0.0-rehearsal.6
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ echo 'SUCCESS: ts-x86_64-apple-darwin provenance verified with both exact signer identities and source pins'
SUCCESS: ts-x86_64-apple-darwin provenance verified with both exact signer identities and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ echo 'SUCCESS: ts-x86_64-apple-darwin sbom verified with both exact signer identities and source pins'
SUCCESS: ts-x86_64-apple-darwin sbom verified with both exact signer identities and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-x86_64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-apple-darwin.sbom.verified.json
true
+ echo 'SUCCESS: ts-x86_64-apple-darwin attested SPDX predicate equals published companion'
SUCCESS: ts-x86_64-apple-darwin attested SPDX predicate equals published companion
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu: sha256:aa89e2bf687cc8ad0109e95f10b8bb8c0445889c8afee77087ed710bec7b86d9
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu is present in release v0.0.0-rehearsal.6
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json: sha256:5efd251ff6270f8272b39dcca66f06e61c9905edbb1f4cf3976c3c9965ba9d14
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json is present in release v0.0.0-rehearsal.6
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json: sha256:012a9389317a480f0eca83ceaaca782c5215eccf00d4ce9828a21c2106c6ed4b
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json is present in release v0.0.0-rehearsal.6
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json: sha256:59024594d48d2ba22422644023a055e65033b2edbbe58a51c24d0d9fab990569
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json is present in release v0.0.0-rehearsal.6
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu provenance verified with both exact signer identities and source pins'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu provenance verified with both exact signer identities and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu sbom verified with both exact signer identities and source pins'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu sbom verified with both exact signer identities and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-x86_64-unknown-linux-gnu.sbom.verified.json
true
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu attested SPDX predicate equals published companion'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu attested SPDX predicate equals published companion
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl: sha256:e83ce48eb88a4c87c9ee42503de8ed706ad64ceb478a62bf3fda9574c0354293
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl is present in release v0.0.0-rehearsal.6
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 trusted-server-axum-x86_64-unknown-linux-musl.spdx.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl.spdx.json: sha256:f61542e5aa05825393cc34938637ac314237207698e6874f744519c76bbda554
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl.spdx.json is present in release v0.0.0-rehearsal.6
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json: sha256:7b5ec8d285cd5216a3f15f8e9e25024be584232877cd170dae89deac9ee7c648
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json is present in release v0.0.0-rehearsal.6
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json: sha256:fc6bfbfea3c55157649600e86cdf54bc0979266e0640a19d1a8a940f5563bc5e
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json is present in release v0.0.0-rehearsal.6
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl provenance verified with both exact signer identities and source pins'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl provenance verified with both exact signer identities and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl sbom verified with both exact signer identities and source pins'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl sbom verified with both exact signer identities and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-x86_64-unknown-linux-musl.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-x86_64-unknown-linux-musl.sbom.verified.json
true
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl attested SPDX predicate equals published companion'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl attested SPDX predicate equals published companion
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu: sha256:4101e33313dee7be41bf3ace7bf9adc729979742c4a952a0b3f4a9c7caaf3841
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e

@prk-Jr

prk-Jr commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator Author

Rehearsal .6 online verification transcript, part 2/2, exact source 39a769c. Independent read-only checks passed: documented download, immutable prerelease/not Latest, release verification, all 29 verify-asset calls, 28 checksums, both predicates and signer forms for all seven binaries WITH bundles and WITHOUT bundles, SPDX equality, macOS minimum OS and CLI source labels. The original workflow remains failed; see the failure/build/runtime record and offline transcript. Pinned gh 2.102.0.

Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu is present in release v0.0.0-rehearsal.6
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json: sha256:9e46f0f15ee481d36acfd388ed07dfc3065ded17a79a5e400d55bd11248c80f7
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json is present in release v0.0.0-rehearsal.6
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json: sha256:fb65bc8ca788545841823c335c82bab365c8364353e849fbe9a46d8d3904ad49
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json is present in release v0.0.0-rehearsal.6
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.6 trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json: sha256:ea2dce16163a4cc5e56fe77f9171d9747f5db9aeb3f420f24ab4c94378e79d73
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json is present in release v0.0.0-rehearsal.6
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ echo 'SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu provenance verified with both exact signer identities and source pins'
SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu provenance verified with both exact signer identities and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ echo 'SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu sbom verified with both exact signer identities and source pins'
SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu sbom verified with both exact signer identities and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-aarch64-unknown-linux-gnu.sbom.verified.json
true
+ echo 'SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu attested SPDX predicate equals published companion'
SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu attested SPDX predicate equals published companion
+ gh release verify-asset v0.0.0-rehearsal.6 SHA256SUMS --repo prk-Jr/trusted-server
Calculated digest for SHA256SUMS: sha256:8631d6f9450cae58adecdbee1ec6b25a4da0193f0ff98db1d59e8267a0702add
Resolved tag v0.0.0-rehearsal.6 to sha1:39a769c3e3d6476395fa7a215bd0a5e74a760f3e
Loaded attestation from GitHub API

✓ Verification succeeded! SHA256SUMS is present in release v0.0.0-rehearsal.6
+ shasum -a 256 --check SHA256SUMS
trusted-server-axum-x86_64-unknown-linux-gnu: OK
trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json: OK
trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json: OK
trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json: OK
trusted-server-axum-x86_64-unknown-linux-musl: OK
trusted-server-axum-x86_64-unknown-linux-musl.spdx.json: OK
trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json: OK
trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json: OK
trusted-server-axum-aarch64-unknown-linux-gnu: OK
trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json: OK
trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json: OK
trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json: OK
trusted-server-fastly.wasm: OK
trusted-server-fastly.wasm.spdx.json: OK
trusted-server-fastly.wasm.provenance.sigstore.json: OK
trusted-server-fastly.wasm.sbom.sigstore.json: OK
ts-aarch64-apple-darwin: OK
ts-aarch64-apple-darwin.spdx.json: OK
ts-aarch64-apple-darwin.provenance.sigstore.json: OK
ts-aarch64-apple-darwin.sbom.sigstore.json: OK
ts-x86_64-apple-darwin: OK
ts-x86_64-apple-darwin.spdx.json: OK
ts-x86_64-apple-darwin.provenance.sigstore.json: OK
ts-x86_64-apple-darwin.sbom.sigstore.json: OK
ts-x86_64-unknown-linux-gnu: OK
ts-x86_64-unknown-linux-gnu.spdx.json: OK
ts-x86_64-unknown-linux-gnu.provenance.sigstore.json: OK
ts-x86_64-unknown-linux-gnu.sbom.sigstore.json: OK
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ [[ provenance == sbom ]]
+ echo 'SUCCESS: trusted-server-fastly.wasm provenance verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: trusted-server-fastly.wasm provenance verified online WITHOUT --bundle using both exact signer identities and source pins
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-fastly.wasm.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-fastly.wasm.sbom.online-store.json
true
+ echo 'SUCCESS: trusted-server-fastly.wasm sbom verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: trusted-server-fastly.wasm sbom verified online WITHOUT --bundle using both exact signer identities and source pins
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ [[ provenance == sbom ]]
+ echo 'SUCCESS: ts-x86_64-unknown-linux-gnu provenance verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: ts-x86_64-unknown-linux-gnu provenance verified online WITHOUT --bundle using both exact signer identities and source pins
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-x86_64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-unknown-linux-gnu.sbom.online-store.json
true
+ echo 'SUCCESS: ts-x86_64-unknown-linux-gnu sbom verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: ts-x86_64-unknown-linux-gnu sbom verified online WITHOUT --bundle using both exact signer identities and source pins
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ [[ provenance == sbom ]]
+ echo 'SUCCESS: ts-aarch64-apple-darwin provenance verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: ts-aarch64-apple-darwin provenance verified online WITHOUT --bundle using both exact signer identities and source pins
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-aarch64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-aarch64-apple-darwin.sbom.online-store.json
true
+ echo 'SUCCESS: ts-aarch64-apple-darwin sbom verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: ts-aarch64-apple-darwin sbom verified online WITHOUT --bundle using both exact signer identities and source pins
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ [[ provenance == sbom ]]
+ echo 'SUCCESS: ts-x86_64-apple-darwin provenance verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: ts-x86_64-apple-darwin provenance verified online WITHOUT --bundle using both exact signer identities and source pins
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-x86_64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-apple-darwin.sbom.online-store.json
true
+ echo 'SUCCESS: ts-x86_64-apple-darwin sbom verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: ts-x86_64-apple-darwin sbom verified online WITHOUT --bundle using both exact signer identities and source pins
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ [[ provenance == sbom ]]
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu provenance verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu provenance verified online WITHOUT --bundle using both exact signer identities and source pins
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-x86_64-unknown-linux-gnu.sbom.online-store.json
true
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu sbom verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu sbom verified online WITHOUT --bundle using both exact signer identities and source pins
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ [[ provenance == sbom ]]
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl provenance verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl provenance verified online WITHOUT --bundle using both exact signer identities and source pins
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-x86_64-unknown-linux-musl.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-x86_64-unknown-linux-musl.sbom.online-store.json
true
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl sbom verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl sbom verified online WITHOUT --bundle using both exact signer identities and source pins
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ [[ provenance == sbom ]]
+ echo 'SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu provenance verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu provenance verified online WITHOUT --bundle using both exact signer identities and source pins
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.6 --source-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --signer-digest 39a769c3e3d6476395fa7a215bd0a5e74a760f3e --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.6 --format json
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-aarch64-unknown-linux-gnu.sbom.online-store.json
true
+ echo 'SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu sbom verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu sbom verified online WITHOUT --bundle using both exact signer identities and source pins
+ for asset in ts-aarch64-apple-darwin ts-x86_64-apple-darwin
+ /usr/bin/vtool -show-build ts-aarch64-apple-darwin
ts-aarch64-apple-darwin:
Load command 11
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform MACOS
    minos 13.0
      sdk 15.5
   ntools 1
     tool LD
  version 1167.5
+ for asset in ts-aarch64-apple-darwin ts-x86_64-apple-darwin
+ /usr/bin/vtool -show-build ts-x86_64-apple-darwin
ts-x86_64-apple-darwin:
Load command 11
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform MACOS
    minos 13.0
      sdk 15.5
   ntools 1
     tool LD
  version 1167.5
+ chmod u+x ts-aarch64-apple-darwin
+ ./ts-aarch64-apple-darwin --version
ts package=0.1.0 source=39a769c3e3d6476395fa7a215bd0a5e74a760f3e target=aarch64-apple-darwin variant=default
++ ./ts-aarch64-apple-darwin --version
+ test 'ts package=0.1.0 source=39a769c3e3d6476395fa7a215bd0a5e74a760f3e target=aarch64-apple-darwin variant=default' = 'ts package=0.1.0 source=39a769c3e3d6476395fa7a215bd0a5e74a760f3e target=aarch64-apple-darwin variant=default'
+ echo 'SUCCESS: CLI package/source/target/variant exactly match the approved release source'
SUCCESS: CLI package/source/target/variant exactly match the approved release source
+ echo 'SUCCESS: release, all 29 assets, 28 checksums, both predicates, both signer identities, bundle verification, all-seven online store lookup and SPDX comparisons passed'
SUCCESS: release, all 29 assets, 28 checksums, both predicates, both signer identities, bundle verification, all-seven online store lookup and SPDX comparisons passed

@prk-Jr

prk-Jr commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator Author

Rehearsal v0.0.0-rehearsal.7 at 7a05940: failed infrastructure rehearsal; workflow cancelled. Run. Upstream CI passed all seven builds and all six workflows at this exact reviewed head before the fresh lightweight tag was pushed.

GitHub cancelled the Apple Silicon job after about 15 minutes waiting for a hosted runner. It acquired no runner and executed no steps. The annotations explicitly report hosted-runner acquisition failure and macOS ARM capacity constraints. Once that made successful publication impossible, the remaining Intel build was cancelled to avoid wasted runner work. Five builds passed.

Signing and publication executed no steps. No draft or published release exists for this tag, so release/asset/attestation verification and Fastly packaging were not run for .7. The lightweight .7 tag is retained unchanged. This does not count as a successful rehearsal. The next attempt uses fresh .8 at the same CI-green reviewed commit under standing approval; no implementation or runner-setting change is required for this infrastructure failure.

Job Final result
build / checks success
build / Build trusted-server-axum-aarch64-unknown-linux-gnu success
build / Build ts-x86_64-apple-darwin cancelled
build / Build ts-aarch64-apple-darwin cancelled
build / Build trusted-server-fastly.wasm success
build / Build trusted-server-axum-x86_64-unknown-linux-gnu success
build / Build trusted-server-axum-x86_64-unknown-linux-musl success
build / Build ts-x86_64-unknown-linux-gnu success
build / sign cancelled
release cancelled

Cancellation annotations:

[
  {
    "level": "failure",
    "message": "The job was not acquired by Runner of type hosted even after multiple attempts"
  },
  {
    "level": "notice",
    "message": "Due to capacity constraints, jobs targeting macOS arm64 runners may experience longer queue times."
  },
  {
    "level": "notice",
    "message": "Due to capacity constraints, jobs targeting macOS arm64 runners may experience longer queue times."
  },
  {
    "level": "notice",
    "message": "Due to capacity constraints, jobs targeting macOS arm64 runners may experience longer queue times."
  }
]

Release-state readback:

workflow status=completed conclusion=cancelled
matching draft/published releases for v0.0.0-rehearsal.7: []
signing job executed steps: 0
release job executed steps: 0
tag object.type=commit
source=7a05940e2f7b10c459bdd2d3949f265b755ce42c

@prk-Jr

prk-Jr commented Oct 23, 2026 •

Copy link
Copy Markdown
Collaborator Author

Rehearsal v0.0.0-rehearsal.8 at 7a05940: passed. Fork run. Fresh lightweight tag; exact reviewed head; all seven builds/signing jobs and the publisher passed. The full independent verification also passed.

The publisher found the release attestation on its first availability check; no availability wait was needed in this run. Failure-path tests cover the bounded 2s/5s waits and immediate rejection cases. The release has exactly 29 assets, draft=false, immutable=true, prerelease=true and is not Latest. The documented gh release download command succeeded. All 29 verify-asset checks and 28 SHA256SUMS entries passed. All seven binaries passed provenance and SPDX verification, both signer forms, exact tag/source/signer pins and deny-self-hosted-runners, both with bundles and via online attestation-store lookup without bundles. Networking-denied offline verification passed with an independent binary SHA-256 pin for each asset; every attested SBOM predicate equalled its shipped SPDX document.

Both macOS minimum-OS checks and all CLI package/source/target/variant checks passed. All Axum container smokes reached the non-loopback bind through a host-published port. Pinned Fastly 16.0.0 packed, validated, inspected and byte-compared the verified wasm without deployment. Viceroy returned the expected page/source header and confirmed no Build facts log in default single mode. Full command/output transcripts follow in separate comments. Temporary local paths are redacted.

This supersedes the failed .6 workflow (independent checks passed afterward) and the .7 runner-capacity cancellation. Their tags/releases remain unchanged. Any subsequent review-head update must be docs-only and retain this exact rehearsed implementation SHA. The PR remains draft with no reviewers.

SUCCESS: immutable published release contains exactly29 nonempty assets with published digests; SHA256SUMS covers exactly28 companions and binaries, excluding itself.
Rehearsal .8 build/startup proof at 7a05940e2f7b10c459bdd2d3949f265b755ce42c.
All final-byte, CLI version, macOS minimum-OS, non-loopback Axum health and image identity lines are retained; full job logs are linked.

trusted-server-axum-aarch64-unknown-linux-gnu
https://github.com/prk-Jr/trusted-server/actions/runs/39929220935/job/120333100403
build / Build trusted-server-axum-aarch64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T09:05:37.7483691Z GNU builder: registry.access.redhat.com/ubi9/ubi:9.6@sha256:dec374e05cc13ebbc0975c9f521f3db6942d27f8ccdf06b180160490eef8bdbc sha256:90d6390635ffe0aa44da2347c584650b5da97479f1911c89f4fb28e336087fcb
build / Build trusted-server-axum-aarch64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T09:05:37.8882538Z ldd (GNU libc) 2.34
build / Build trusted-server-axum-aarch64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T09:08:33.1610378Z SUCCESS: final-byte checks aarch64-unknown-linux-gnu GLIBC_2.17 GLIBC_2.33 GLIBC_2.34 GLIBC_2.29 GLIBC_2.28 GLIBC_2.30 GLIBC_2.27 GLIBC_2.18 GLIBC_2.25 GLIBC_2.32
build / Build trusted-server-axum-aarch64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T09:08:34.7622607Z Runtime image: debian:12-slim@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8 sha256:28fe65558df3e10c89e7d685cb86544cdc138f242d12100c5b0981f92aae0853
build / Build trusted-server-axum-aarch64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T09:08:35.7328995Z SUCCESS: Axum bound to 0.0.0.0; host reached published container port, HTTP 200 ok: debian:12-slim@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8 sha256:28fe65558df3e10c89e7d685cb86544cdc138f242d12100c5b0981f92aae0853

ts-aarch64-apple-darwin
https://github.com/prk-Jr/trusted-server/actions/runs/39929220935/job/120333100416
build / Build ts-aarch64-apple-darwin	UNKNOWN STEP	2026-10-23T09:17:05.3854740Z SUCCESS: Mach-O target and macOS minimum OS 13.0: aarch64-apple-darwin
build / Build ts-aarch64-apple-darwin	UNKNOWN STEP	2026-10-23T09:17:05.3862510Z SUCCESS: final-byte checks aarch64-apple-darwin 
build / Build ts-aarch64-apple-darwin	UNKNOWN STEP	2026-10-23T09:17:05.4032070Z SUCCESS: ts package=0.1.0 source=7a05940e2f7b10c459bdd2d3949f265b755ce42c target=aarch64-apple-darwin variant=default

ts-x86_64-apple-darwin
https://github.com/prk-Jr/trusted-server/actions/runs/39929220935/job/120333100425
build / Build ts-x86_64-apple-darwin	UNKNOWN STEP	2026-10-23T09:29:34.6858440Z SUCCESS: Mach-O target and macOS minimum OS 13.0: x86_64-apple-darwin
build / Build ts-x86_64-apple-darwin	UNKNOWN STEP	2026-10-23T09:29:34.6860450Z SUCCESS: final-byte checks x86_64-apple-darwin 
build / Build ts-x86_64-apple-darwin	UNKNOWN STEP	2026-10-23T09:29:34.7021990Z SUCCESS: ts package=0.1.0 source=7a05940e2f7b10c459bdd2d3949f265b755ce42c target=x86_64-apple-darwin variant=default

ts-x86_64-unknown-linux-gnu
https://github.com/prk-Jr/trusted-server/actions/runs/39929220935/job/120333100451
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T09:05:42.8519952Z GNU builder: registry.access.redhat.com/ubi9/ubi:9.6@sha256:dec374e05cc13ebbc0975c9f521f3db6942d27f8ccdf06b180160490eef8bdbc sha256:4f38c808e650ad43a9878dc8a0abf535b5af7fd4f97d1e540d779b6b9fe05926
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T09:05:43.0562895Z ldd (GNU libc) 2.34
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T09:12:49.0583088Z SUCCESS: final-byte checks x86_64-unknown-linux-gnu GLIBC_2.34 GLIBC_2.2.5 GLIBC_2.14 GLIBC_2.3 GLIBC_2.29 GLIBC_2.3.4 GLIBC_2.33 GLIBC_2.28 GLIBC_2.7 GLIBC_2.16 GLIBC_2.10 GLIBC_2.3.2 GLIBC_2.9 GLIBC_2.30 GLIBC_2.4 GLIBC_2.17 GLIBC_2.15 GLIBC_2.32 GLIBC_2.25 GLIBC_2.18 GLIBC_2.5 GLIBC_2.27
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T09:12:49.0620483Z SUCCESS: ts package=0.1.0 source=7a05940e2f7b10c459bdd2d3949f265b755ce42c target=x86_64-unknown-linux-gnu variant=default
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T09:12:51.7277455Z Runtime image: debian:12-slim@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8 sha256:8da84df25d28176be84164040cd45e128c6b4c6a80b7d7cbe17fe2b9f198efc2
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T09:12:52.5202963Z SUCCESS: ts package=0.1.0 source=7a05940e2f7b10c459bdd2d3949f265b755ce42c target=x86_64-unknown-linux-gnu variant=default
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T09:12:55.0942674Z Runtime image: ubuntu:22.04@sha256:0a9887931b0e38af2e3487ed39e29436b0535c4f3f52e57745baaf79d1898956 sha256:cee13550f97b8a595506e8e4ca74263ba44924248779a4ba4f942e197652acff
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T09:12:55.2686041Z SUCCESS: ts package=0.1.0 source=7a05940e2f7b10c459bdd2d3949f265b755ce42c target=x86_64-unknown-linux-gnu variant=default
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T09:12:56.7643724Z Runtime image: registry.access.redhat.com/ubi9/ubi-minimal:9.6@sha256:34880b64c07f28f64d95737f82f891516de9a3b43583f39970f7bf8e4cfa48b7 sha256:a2c5a85865a585c3bc8b10f6c269358fdf89fe32be4232885166889d85c76421
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T09:12:56.9385195Z SUCCESS: ts package=0.1.0 source=7a05940e2f7b10c459bdd2d3949f265b755ce42c target=x86_64-unknown-linux-gnu variant=default

trusted-server-fastly.wasm
https://github.com/prk-Jr/trusted-server/actions/runs/39929220935/job/120333100467
build / Build trusted-server-fastly.wasm	UNKNOWN STEP	2026-10-23T09:07:07.5960129Z SUCCESS: final-byte checks wasm32-wasip1 

trusted-server-axum-x86_64-unknown-linux-musl
https://github.com/prk-Jr/trusted-server/actions/runs/39929220935/job/120333100563
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-23T09:09:22.1172609Z SUCCESS: final-byte checks x86_64-unknown-linux-musl 
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-23T09:09:23.4885347Z Runtime image: alpine:3.22.2@sha256:4b7ce07002c69e8f3d704a9c5d6fd3053be500b7f1c69fc0d80990c2ad8dd412 sha256:706db57fb2063f39f69632c5b5c9c439633fda35110e65587c5d85553fd1cc38
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-23T09:09:24.5298460Z SUCCESS: Axum bound to 0.0.0.0; host reached published container port, HTTP 200 ok: alpine:3.22.2@sha256:4b7ce07002c69e8f3d704a9c5d6fd3053be500b7f1c69fc0d80990c2ad8dd412 sha256:706db57fb2063f39f69632c5b5c9c439633fda35110e65587c5d85553fd1cc38
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-23T09:09:24.6878288Z Runtime image: scratch sha256:1a77706ab48ce4c3194d2ff4dcc8f067959d39b42b445f57dce3282bee60f8d3
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-23T09:09:24.8520411Z SUCCESS: Axum bound to 0.0.0.0; host reached published container port, HTTP 200 ok: scratch sha256:1a77706ab48ce4c3194d2ff4dcc8f067959d39b42b445f57dce3282bee60f8d3

trusted-server-axum-x86_64-unknown-linux-gnu
https://github.com/prk-Jr/trusted-server/actions/runs/39929220935/job/120333100588
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T09:05:48.6960273Z GNU builder: registry.access.redhat.com/ubi9/ubi:9.6@sha256:dec374e05cc13ebbc0975c9f521f3db6942d27f8ccdf06b180160490eef8bdbc sha256:007771996c9942342557e65ce1ddd62f816733a16ca12b36751868aa6fb7e8fe
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T09:05:49.1205143Z ldd (GNU libc) 2.34
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T09:08:44.0429061Z SUCCESS: final-byte checks x86_64-unknown-linux-gnu GLIBC_2.34 GLIBC_2.2.5 GLIBC_2.14 GLIBC_2.3 GLIBC_2.27 GLIBC_2.29 GLIBC_2.7 GLIBC_2.16 GLIBC_2.33 GLIBC_2.3.4 GLIBC_2.10 GLIBC_2.3.2 GLIBC_2.9 GLIBC_2.30 GLIBC_2.17 GLIBC_2.32 GLIBC_2.28 GLIBC_2.25 GLIBC_2.18
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T09:08:45.7163275Z Runtime image: debian:12-slim@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8 sha256:8da84df25d28176be84164040cd45e128c6b4c6a80b7d7cbe17fe2b9f198efc2
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T09:08:47.9454307Z SUCCESS: Axum bound to 0.0.0.0; host reached published container port, HTTP 200 ok: debian:12-slim@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8 sha256:8da84df25d28176be84164040cd45e128c6b4c6a80b7d7cbe17fe2b9f198efc2
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T09:08:49.5700471Z Runtime image: ubuntu:22.04@sha256:0a9887931b0e38af2e3487ed39e29436b0535c4f3f52e57745baaf79d1898956 sha256:cee13550f97b8a595506e8e4ca74263ba44924248779a4ba4f942e197652acff
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T09:08:50.0373295Z SUCCESS: Axum bound to 0.0.0.0; host reached published container port, HTTP 200 ok: ubuntu:22.04@sha256:0a9887931b0e38af2e3487ed39e29436b0535c4f3f52e57745baaf79d1898956 sha256:cee13550f97b8a595506e8e4ca74263ba44924248779a4ba4f942e197652acff
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T09:08:51.4716963Z Runtime image: registry.access.redhat.com/ubi9/ubi-minimal:9.6@sha256:34880b64c07f28f64d95737f82f891516de9a3b43583f39970f7bf8e4cfa48b7 sha256:a2c5a85865a585c3bc8b10f6c269358fdf89fe32be4232885166889d85c76421
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T09:08:52.0334703Z SUCCESS: Axum bound to 0.0.0.0; host reached published container port, HTTP 200 ok: registry.access.redhat.com/ubi9/ubi-minimal:9.6@sha256:34880b64c07f28f64d95737f82f891516de9a3b43583f39970f7bf8e4cfa48b7 sha256:a2c5a85865a585c3bc8b10f6c269358fdf89fe32be4232885166889d85c76421
+ EVIDENCE=<evidence>
+ WORK=<evidence>/fastly-package
+ IMAGE=debian:12-slim@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8
+ mkdir <evidence>/fastly-package
+ cp <evidence>/trusted-server-fastly.wasm <evidence>/fastly-package/
+ printf 'manifest_version = 3\nname = "example-app"\n'
+ chmod 777 <evidence>/fastly-package
+ trap 'podman machine stop podman-machine-default >/dev/null 2>&1 || true' EXIT
+ podman machine start podman-machine-default
Starting machine "podman-machine-default"

This machine is currently configured in rootless mode. If your containers
require root permissions (e.g. ports < 1024), or if you run into compatibility
issues with non-podman clients, you can switch using the following command:

	podman machine set --rootful

API forwarding listening on: /var/run/docker.sock
Docker API clients default to this address. You do not need to set DOCKER_HOST.

Machine "podman-machine-default" started successfully
+ podman pull debian:12-slim@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8
Trying to pull docker.io/library/debian@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8...
Getting image source signatures
Copying blob sha256:41b2195c355367079ebad200f9591fe3c2cb886c3b1e67abaaf2090dc11c04d9
Copying config sha256:28fe65558df3e10c89e7d685cb86544cdc138f242d12100c5b0981f92aae0853
Writing manifest to image destination
28fe65558df3e10c89e7d685cb86544cdc138f242d12100c5b0981f92aae0853
+ podman image inspect debian:12-slim@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8 --format '{{.Id}}'
28fe65558df3e10c89e7d685cb86544cdc138f242d12100c5b0981f92aae0853
+ podman run --rm --network=none --read-only --cap-drop=ALL --security-opt=no-new-privileges --user=65534:65534 --tmpfs /tmp:rw --env XDG_CONFIG_HOME=/tmp/fastly-config --workdir /work --mount type=bind,src=<evidence>/fastly-package,dst=/work --mount type=bind,src=<evidence>/fastly-linux/fastly,dst=/usr/local/bin/fastly,readonly debian:12-slim@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8 sh -ec '
    fastly version
    fastly compute pack --wasm-binary ./trusted-server-fastly.wasm
    fastly compute validate --package ./pkg/example-app.tar.gz
    tar -tzf ./pkg/example-app.tar.gz
    tar -xOzf ./pkg/example-app.tar.gz example-app/bin/main.wasm > packaged.wasm
    cmp trusted-server-fastly.wasm packaged.wasm
    tar -xOzf ./pkg/example-app.tar.gz example-app/fastly.toml > packaged.toml
    cmp fastly.toml packaged.toml
    sha256sum trusted-server-fastly.wasm packaged.wasm fastly.toml packaged.toml pkg/example-app.tar.gz
    echo "SUCCESS: pinned Fastly 16.0.0 packed and validated the verified release wasm; inspected package members and both byte comparisons passed; network disabled and no deployment"
  '
Fastly CLI version v16.0.0 (34cef1b0)
Built with go version go1.26.5 linux/arm64 (2026-10-23)
| Copying wasm binary...
/ Copying wasm binary...
✓ Copying wasm binary
| Copying manifest...
/ Copying manifest...
✓ Copying manifest
| Creating example-app.tar.gz file...
/ Creating example-app.tar.gz file...
✓ Creating example-app.tar.gz file
SUCCESS: Validated package /work/pkg/example-app.tar.gz
example-app
example-app/bin
example-app/bin/main.wasm
example-app/fastly.toml
51d5b6b838ef437c7fe283a0effc7ed6d7e36661440093a756cf4d4d149c26b1  trusted-server-fastly.wasm
51d5b6b838ef437c7fe283a0effc7ed6d7e36661440093a756cf4d4d149c26b1  packaged.wasm
21b3c0d6f0a329838b23ad87a1d42840cceaff25d0247c1ac9aa5b34784360b2  fastly.toml
21b3c0d6f0a329838b23ad87a1d42840cceaff25d0247c1ac9aa5b34784360b2  packaged.toml
8b00de618f492d10aaade21b469400845f3cc03f9a2f2841e264ef1ed9474b7c  pkg/example-app.tar.gz
SUCCESS: pinned Fastly 16.0.0 packed and validated the verified release wasm; inspected package members and both byte comparisons passed; network disabled and no deployment
+ chmod 755 <evidence>/fastly-package
+ podman machine stop podman-machine-default
+ REPO_ROOT=<checkout>
+ EVIDENCE=<evidence>
+ WORK=<evidence>/viceroy-smoke
+ TS=<evidence>/ts-aarch64-apple-darwin
+ WASM=<evidence>/trusted-server-fastly.wasm
+ VICEROY=<pinned-tools>/viceroy
+ mkdir <evidence>/viceroy-smoke
+ for port in 18888 17676
+ lsof -nP -iTCP:18888 -sTCP:LISTEN
+ for port in 18888 17676
+ lsof -nP -iTCP:17676 -sTCP:LISTEN
+ cp <checkout>/edgezero.toml <checkout>/fastly.toml <evidence>/viceroy-smoke/
+ cp <checkout>/trusted-server.example.toml <evidence>/viceroy-smoke/app.toml
+ ln -s <checkout>/crates <evidence>/viceroy-smoke/crates
+ node - <evidence>/viceroy-smoke
+ chmod u+x <evidence>/ts-aarch64-apple-darwin
+ <evidence>/ts-aarch64-apple-darwin --version
ts package=0.1.0 source=7a05940e2f7b10c459bdd2d3949f265b755ce42c target=aarch64-apple-darwin variant=default
+ cd <evidence>/viceroy-smoke
+ <evidence>/ts-aarch64-apple-darwin config push --adapter fastly --local --manifest <evidence>/viceroy-smoke/edgezero.toml --app-config <evidence>/viceroy-smoke/app.toml --no-diff --yes
wrote 1 physical entries (1 logical) to `[local_server.config_stores.trusted_server_config.contents]` in <evidence>/viceroy-smoke/fastly.toml (logical id `trusted_server_config`); restart `fastly compute serve` to pick up changes
pushed-key=trusted_server_config
pushed-store=trusted_server_config
+ <pinned-tools>/viceroy --version
viceroy 0.21.0
+ cat
+ origin_pid=72542
+ trap cleanup EXIT
+ node <evidence>/viceroy-smoke/origin.mjs
+ viceroy_pid=72543
+ curl --fail --silent --show-error --retry 20 --retry-connrefused --retry-delay 1 --retry-max-time 45 --max-time 30 -H 'Host: 127.0.0.1' -D <evidence>/viceroy-smoke/headers.txt -o <evidence>/viceroy-smoke/body.html http://127.0.0.1:17676/
+ <pinned-tools>/viceroy serve -C <evidence>/viceroy-smoke/fastly.toml --addr 127.0.0.1:17676 <evidence>/trusted-server-fastly.wasm
curl: (7) Failed to connect to 127.0.0.1 port 17676 after 0 ms: Couldn't connect to server
curl: (7) Failed to connect to 127.0.0.1 port 17676 after 0 ms: Couldn't connect to server
+ cat <evidence>/viceroy-smoke/headers.txt
HTTP/1.1 200 OK
content-type: text/html
date: Fri, 23 Oct 2026 09:51:12 GMT
connection: keep-alive
keep-alive: timeout=5
x-ts-fastly-version: 0
x-geo-city: San Francisco
x-geo-country: US
x-geo-continent: NorthAmerica
x-geo-coordinates: 37.77869,-122.39557
x-geo-region: CA
x-geo-info-available: true
x-ts-version: 7a05940e2f7b10c459bdd2d3949f265b755ce42c
transfer-encoding: chunked

+ node - <evidence>/viceroy-smoke
SUCCESS: default single mode emits no Build facts log
SUCCESS: configured Viceroy page returned HTTP200, origin marker, injected JS and exact release source header; 262 bytes, sha256=faafc52e92b3981f7a899b5bb3f6d85cebcb045618bce3727bbd1be3f1b869e2
+ cleanup
+ [[ -n 72543 ]]
+ kill 72543
+ wait 72543
+ true
+ kill 72542
+ wait 72542
+ true

Full transcript: online 1 · online 2 · offline 1 · offline 2 · publisher 1

@prk-Jr

prk-Jr commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator Author

Rehearsal v0.0.0-rehearsal.8 at 7a05940: passed. Fork run. Fresh lightweight tag; exact reviewed head; all seven builds/signing jobs and the publisher passed. The full independent verification also passed.

online transcript, part 1. Documented download, release/asset verification, checksums, all-seven bundle and online-store verification, both signer forms, both predicates and SPDX equality.

+ set -euo pipefail
+ REPO=prk-Jr/trusted-server
+ TAG=v0.0.0-rehearsal.8
+ COMMIT=7a05940e2f7b10c459bdd2d3949f265b755ce42c
+ ASSETS=(trusted-server-fastly.wasm ts-x86_64-unknown-linux-gnu ts-aarch64-apple-darwin ts-x86_64-apple-darwin trusted-server-axum-x86_64-unknown-linux-gnu trusted-server-axum-x86_64-unknown-linux-musl trusted-server-axum-aarch64-unknown-linux-gnu)
+ WORKFLOW=prk-Jr/trusted-server/.github/workflows/release-build.yml
+ IDENTITY=https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8
+ gh release download v0.0.0-rehearsal.8 --repo prk-Jr/trusted-server
+ gh api repos/prk-Jr/trusted-server/releases/tags/v0.0.0-rehearsal.8 --jq '{tag_name,draft,immutable,prerelease}'
{"draft":false,"immutable":true,"prerelease":true,"tag_name":"v0.0.0-rehearsal.8"}
++ gh api repos/prk-Jr/trusted-server/releases/tags/v0.0.0-rehearsal.8 --jq '[.draft == false,.immutable == true,.prerelease == true] | all'
+ test true = true
++ gh api repos/prk-Jr/trusted-server/releases/latest --jq .tag_name
+ latest=v0.0.0-rehearsal.5
+ test v0.0.0-rehearsal.5 '!=' v0.0.0-rehearsal.8
+ echo 'SUCCESS: published immutable prerelease; not Latest'
SUCCESS: published immutable prerelease; not Latest
+ gh release verify v0.0.0-rehearsal.8 --repo prk-Jr/trusted-server
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API
✓ Release v0.0.0-rehearsal.8 verified!

Assets
SHA256SUMS	sha256:1166c222c7e219b3f7136699bc4f25286453311cc5e81025649aacd6f4d968ae
trusted-server-axum-aarch64-unknown-linux-gnu	sha256:9b145899c50cf7b417e71b4bb9acfddfced4fb8e96e9f1611489d79f9f9631db
trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json	sha256:924d8b5f75cee015273b36b31ab00a946fe18cee5718db7c212fc568453952d8
trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json	sha256:8838c42653dce694a87f097c5e6845a1f3715baa898b64eaba6f81303b4de3ac
trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json	sha256:eb2a98f00b58c297768c3c4d6614927586c15192eb8ebd44b886a85944cd3afb
trusted-server-axum-x86_64-unknown-linux-gnu	sha256:253aa1d67d36e80f1ac27da264466234f5c16f2a523db82719cb050107db1b87
trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json	sha256:cd01d9373536fc59bfdca6d0791b7672b3fe10a6b2bc741e1b1e29d9cb26c420
trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json	sha256:e8418b68bb48eaaa3f5a691e9ae38a6904e5152f1c978511b0c8721bcf6768a7
trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json	sha256:839ba91dd06c1e967d2d7a86d4dc3f7f80892714359bc685255f178f2b1b8781
trusted-server-axum-x86_64-unknown-linux-musl	sha256:228b515a17e636c84587a24820d4897439dc9cd18f12e36576c9174875c2565f
trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json	sha256:9088b4c77723f02646d236f13559f31532dcd11a6d65c233aefe2edcb7db472d
trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json	sha256:b61550370354d46dabed2c79f9305868e087b719f2ed581ca03146d5c3c44481
trusted-server-axum-x86_64-unknown-linux-musl.spdx.json	sha256:085986085d0ba11ecfd3938f4133cfad1b68bbb01241b583be47a04bf1591d47
trusted-server-fastly.wasm	sha256:51d5b6b838ef437c7fe283a0effc7ed6d7e36661440093a756cf4d4d149c26b1
trusted-server-fastly.wasm.provenance.sigstore.json	sha256:204f035b5054a3794b7aa856c8cc8b23e2caee11ffb431db0a4962404957b6bd
trusted-server-fastly.wasm.sbom.sigstore.json	sha256:a80a5b069ffcb7838b78c8cd2a3d25cf717bb4e43f40ce9b6ccfb8058f04fdd1
trusted-server-fastly.wasm.spdx.json	sha256:7866b8684ababf84baf372adb24c1d9ca627c31a343a4841af847c16e8098037
ts-aarch64-apple-darwin	sha256:bc73648d99bd5336cf9e0cf5ab6a827174178da4be43009272bde80f847f71cf
ts-aarch64-apple-darwin.provenance.sigstore.json	sha256:9f59cdc95b84bb0f204017b94b5f9585280764cce0fcf8468c3a0a8cc2563d44
ts-aarch64-apple-darwin.sbom.sigstore.json	sha256:08b031e553ff89b692d410d1fe6cc99835744a24222f1932e934ccff52eb610c
ts-aarch64-apple-darwin.spdx.json	sha256:5334f6996673ab966c02f2dbe92d91512ffcfc1a2c092711639c16f006e71082
ts-x86_64-apple-darwin	sha256:4efe721d2b7e08a6d9f780b45bc68b20f0ee5092e9634a765a549e163c555902
ts-x86_64-apple-darwin.provenance.sigstore.json	sha256:8064f9eac64f18cf2a724726240fd45b79aa07ade80261e423f579fc63389c23
ts-x86_64-apple-darwin.sbom.sigstore.json	sha256:bc71cc9dd409875573dcf74ab6d1178dc68785c99d4272bda80c9cd6df270694
ts-x86_64-apple-darwin.spdx.json	sha256:3509dc4aac0347184e19fac13c3320518165ff761382ceca603755ecc1b9d477
ts-x86_64-unknown-linux-gnu	sha256:b77c6c1a114c66dd502ae90960b68f261a021002a20cd29d27fa8343d18db176
ts-x86_64-unknown-linux-gnu.provenance.sigstore.json	sha256:0fa4fe8052f9a7740a75e6b817d1dd189d57fe346c6ce8c4249a322bffbc1a2f
ts-x86_64-unknown-linux-gnu.sbom.sigstore.json	sha256:1063a9d3ced3d38b314f5ea85e7cd9fa0b3fcd2b12f4b14077d4384f96cd181a
ts-x86_64-unknown-linux-gnu.spdx.json	sha256:e359734e2e29adf861272888941969ee968cc0d815459b1f982d5771191e9e29

+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 trusted-server-fastly.wasm --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm: sha256:51d5b6b838ef437c7fe283a0effc7ed6d7e36661440093a756cf4d4d149c26b1
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm is present in release v0.0.0-rehearsal.8
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 trusted-server-fastly.wasm.spdx.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm.spdx.json: sha256:7866b8684ababf84baf372adb24c1d9ca627c31a343a4841af847c16e8098037
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm.spdx.json is present in release v0.0.0-rehearsal.8
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 trusted-server-fastly.wasm.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm.provenance.sigstore.json: sha256:204f035b5054a3794b7aa856c8cc8b23e2caee11ffb431db0a4962404957b6bd
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm.provenance.sigstore.json is present in release v0.0.0-rehearsal.8
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 trusted-server-fastly.wasm.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm.sbom.sigstore.json: sha256:a80a5b069ffcb7838b78c8cd2a3d25cf717bb4e43f40ce9b6ccfb8058f04fdd1
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm.sbom.sigstore.json is present in release v0.0.0-rehearsal.8
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ echo 'SUCCESS: trusted-server-fastly.wasm provenance verified with both exact signer identities and source pins'
SUCCESS: trusted-server-fastly.wasm provenance verified with both exact signer identities and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ echo 'SUCCESS: trusted-server-fastly.wasm sbom verified with both exact signer identities and source pins'
SUCCESS: trusted-server-fastly.wasm sbom verified with both exact signer identities and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-fastly.wasm.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-fastly.wasm.sbom.verified.json
true
+ echo 'SUCCESS: trusted-server-fastly.wasm attested SPDX predicate equals published companion'
SUCCESS: trusted-server-fastly.wasm attested SPDX predicate equals published companion
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu: sha256:b77c6c1a114c66dd502ae90960b68f261a021002a20cd29d27fa8343d18db176
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu is present in release v0.0.0-rehearsal.8
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 ts-x86_64-unknown-linux-gnu.spdx.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu.spdx.json: sha256:e359734e2e29adf861272888941969ee968cc0d815459b1f982d5771191e9e29
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.spdx.json is present in release v0.0.0-rehearsal.8
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu.provenance.sigstore.json: sha256:0fa4fe8052f9a7740a75e6b817d1dd189d57fe346c6ce8c4249a322bffbc1a2f
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.provenance.sigstore.json is present in release v0.0.0-rehearsal.8
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu.sbom.sigstore.json: sha256:1063a9d3ced3d38b314f5ea85e7cd9fa0b3fcd2b12f4b14077d4384f96cd181a
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.sbom.sigstore.json is present in release v0.0.0-rehearsal.8
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ echo 'SUCCESS: ts-x86_64-unknown-linux-gnu provenance verified with both exact signer identities and source pins'
SUCCESS: ts-x86_64-unknown-linux-gnu provenance verified with both exact signer identities and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ echo 'SUCCESS: ts-x86_64-unknown-linux-gnu sbom verified with both exact signer identities and source pins'
SUCCESS: ts-x86_64-unknown-linux-gnu sbom verified with both exact signer identities and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-x86_64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-unknown-linux-gnu.sbom.verified.json
true
+ echo 'SUCCESS: ts-x86_64-unknown-linux-gnu attested SPDX predicate equals published companion'
SUCCESS: ts-x86_64-unknown-linux-gnu attested SPDX predicate equals published companion
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 ts-aarch64-apple-darwin --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin: sha256:bc73648d99bd5336cf9e0cf5ab6a827174178da4be43009272bde80f847f71cf
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin is present in release v0.0.0-rehearsal.8
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 ts-aarch64-apple-darwin.spdx.json --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin.spdx.json: sha256:5334f6996673ab966c02f2dbe92d91512ffcfc1a2c092711639c16f006e71082
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin.spdx.json is present in release v0.0.0-rehearsal.8
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 ts-aarch64-apple-darwin.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin.provenance.sigstore.json: sha256:9f59cdc95b84bb0f204017b94b5f9585280764cce0fcf8468c3a0a8cc2563d44
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin.provenance.sigstore.json is present in release v0.0.0-rehearsal.8
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 ts-aarch64-apple-darwin.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin.sbom.sigstore.json: sha256:08b031e553ff89b692d410d1fe6cc99835744a24222f1932e934ccff52eb610c
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin.sbom.sigstore.json is present in release v0.0.0-rehearsal.8
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ echo 'SUCCESS: ts-aarch64-apple-darwin provenance verified with both exact signer identities and source pins'
SUCCESS: ts-aarch64-apple-darwin provenance verified with both exact signer identities and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ echo 'SUCCESS: ts-aarch64-apple-darwin sbom verified with both exact signer identities and source pins'
SUCCESS: ts-aarch64-apple-darwin sbom verified with both exact signer identities and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-aarch64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-aarch64-apple-darwin.sbom.verified.json
true
+ echo 'SUCCESS: ts-aarch64-apple-darwin attested SPDX predicate equals published companion'
SUCCESS: ts-aarch64-apple-darwin attested SPDX predicate equals published companion
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 ts-x86_64-apple-darwin --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin: sha256:4efe721d2b7e08a6d9f780b45bc68b20f0ee5092e9634a765a549e163c555902
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin is present in release v0.0.0-rehearsal.8
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 ts-x86_64-apple-darwin.spdx.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin.spdx.json: sha256:3509dc4aac0347184e19fac13c3320518165ff761382ceca603755ecc1b9d477
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin.spdx.json is present in release v0.0.0-rehearsal.8
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 ts-x86_64-apple-darwin.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin.provenance.sigstore.json: sha256:8064f9eac64f18cf2a724726240fd45b79aa07ade80261e423f579fc63389c23
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin.provenance.sigstore.json is present in release v0.0.0-rehearsal.8
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 ts-x86_64-apple-darwin.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin.sbom.sigstore.json: sha256:bc71cc9dd409875573dcf74ab6d1178dc68785c99d4272bda80c9cd6df270694
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin.sbom.sigstore.json is present in release v0.0.0-rehearsal.8
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ echo 'SUCCESS: ts-x86_64-apple-darwin provenance verified with both exact signer identities and source pins'
SUCCESS: ts-x86_64-apple-darwin provenance verified with both exact signer identities and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ echo 'SUCCESS: ts-x86_64-apple-darwin sbom verified with both exact signer identities and source pins'
SUCCESS: ts-x86_64-apple-darwin sbom verified with both exact signer identities and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-x86_64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-apple-darwin.sbom.verified.json
true
+ echo 'SUCCESS: ts-x86_64-apple-darwin attested SPDX predicate equals published companion'
SUCCESS: ts-x86_64-apple-darwin attested SPDX predicate equals published companion
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu: sha256:253aa1d67d36e80f1ac27da264466234f5c16f2a523db82719cb050107db1b87
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu is present in release v0.0.0-rehearsal.8
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json: sha256:839ba91dd06c1e967d2d7a86d4dc3f7f80892714359bc685255f178f2b1b8781
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json is present in release v0.0.0-rehearsal.8
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json: sha256:cd01d9373536fc59bfdca6d0791b7672b3fe10a6b2bc741e1b1e29d9cb26c420
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json is present in release v0.0.0-rehearsal.8
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json: sha256:e8418b68bb48eaaa3f5a691e9ae38a6904e5152f1c978511b0c8721bcf6768a7
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json is present in release v0.0.0-rehearsal.8
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu provenance verified with both exact signer identities and source pins'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu provenance verified with both exact signer identities and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu sbom verified with both exact signer identities and source pins'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu sbom verified with both exact signer identities and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-x86_64-unknown-linux-gnu.sbom.verified.json
true
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu attested SPDX predicate equals published companion'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu attested SPDX predicate equals published companion
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl: sha256:228b515a17e636c84587a24820d4897439dc9cd18f12e36576c9174875c2565f
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl is present in release v0.0.0-rehearsal.8
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 trusted-server-axum-x86_64-unknown-linux-musl.spdx.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl.spdx.json: sha256:085986085d0ba11ecfd3938f4133cfad1b68bbb01241b583be47a04bf1591d47
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl.spdx.json is present in release v0.0.0-rehearsal.8
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json: sha256:9088b4c77723f02646d236f13559f31532dcd11a6d65c233aefe2edcb7db472d
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json is present in release v0.0.0-rehearsal.8
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json: sha256:b61550370354d46dabed2c79f9305868e087b719f2ed581ca03146d5c3c44481
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json is present in release v0.0.0-rehearsal.8
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl provenance verified with both exact signer identities and source pins'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl provenance verified with both exact signer identities and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl sbom verified with both exact signer identities and source pins'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl sbom verified with both exact signer identities and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-x86_64-unknown-linux-musl.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-x86_64-unknown-linux-musl.sbom.verified.json
true
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl attested SPDX predicate equals published companion'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl attested SPDX predicate equals published companion
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu: sha256:9b145899c50cf7b417e71b4bb9acfddfced4fb8e96e9f1611489d79f9f9631db

@prk-Jr

prk-Jr commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator Author

Rehearsal v0.0.0-rehearsal.8 at 7a05940: passed. Fork run. Fresh lightweight tag; exact reviewed head; all seven builds/signing jobs and the publisher passed. The full independent verification also passed.

online transcript, part 2. Documented download, release/asset verification, checksums, all-seven bundle and online-store verification, both signer forms, both predicates and SPDX equality.

Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu is present in release v0.0.0-rehearsal.8
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json: sha256:eb2a98f00b58c297768c3c4d6614927586c15192eb8ebd44b886a85944cd3afb
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json is present in release v0.0.0-rehearsal.8
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json: sha256:924d8b5f75cee015273b36b31ab00a946fe18cee5718db7c212fc568453952d8
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json is present in release v0.0.0-rehearsal.8
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.8 trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json: sha256:8838c42653dce694a87f097c5e6845a1f3715baa898b64eaba6f81303b4de3ac
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json is present in release v0.0.0-rehearsal.8
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ echo 'SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu provenance verified with both exact signer identities and source pins'
SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu provenance verified with both exact signer identities and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ echo 'SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu sbom verified with both exact signer identities and source pins'
SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu sbom verified with both exact signer identities and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-aarch64-unknown-linux-gnu.sbom.verified.json
true
+ echo 'SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu attested SPDX predicate equals published companion'
SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu attested SPDX predicate equals published companion
+ gh release verify-asset v0.0.0-rehearsal.8 SHA256SUMS --repo prk-Jr/trusted-server
Calculated digest for SHA256SUMS: sha256:1166c222c7e219b3f7136699bc4f25286453311cc5e81025649aacd6f4d968ae
Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
Loaded attestation from GitHub API

✓ Verification succeeded! SHA256SUMS is present in release v0.0.0-rehearsal.8
+ shasum -a 256 --check SHA256SUMS
trusted-server-axum-x86_64-unknown-linux-gnu: OK
trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json: OK
trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json: OK
trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json: OK
trusted-server-axum-x86_64-unknown-linux-musl: OK
trusted-server-axum-x86_64-unknown-linux-musl.spdx.json: OK
trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json: OK
trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json: OK
trusted-server-axum-aarch64-unknown-linux-gnu: OK
trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json: OK
trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json: OK
trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json: OK
trusted-server-fastly.wasm: OK
trusted-server-fastly.wasm.spdx.json: OK
trusted-server-fastly.wasm.provenance.sigstore.json: OK
trusted-server-fastly.wasm.sbom.sigstore.json: OK
ts-aarch64-apple-darwin: OK
ts-aarch64-apple-darwin.spdx.json: OK
ts-aarch64-apple-darwin.provenance.sigstore.json: OK
ts-aarch64-apple-darwin.sbom.sigstore.json: OK
ts-x86_64-apple-darwin: OK
ts-x86_64-apple-darwin.spdx.json: OK
ts-x86_64-apple-darwin.provenance.sigstore.json: OK
ts-x86_64-apple-darwin.sbom.sigstore.json: OK
ts-x86_64-unknown-linux-gnu: OK
ts-x86_64-unknown-linux-gnu.spdx.json: OK
ts-x86_64-unknown-linux-gnu.provenance.sigstore.json: OK
ts-x86_64-unknown-linux-gnu.sbom.sigstore.json: OK
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ provenance == sbom ]]
+ echo 'SUCCESS: trusted-server-fastly.wasm provenance verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: trusted-server-fastly.wasm provenance verified online WITHOUT --bundle using both exact signer identities and source pins
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-fastly.wasm.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-fastly.wasm.sbom.online-store.json
true
+ echo 'SUCCESS: trusted-server-fastly.wasm sbom verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: trusted-server-fastly.wasm sbom verified online WITHOUT --bundle using both exact signer identities and source pins
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ provenance == sbom ]]
+ echo 'SUCCESS: ts-x86_64-unknown-linux-gnu provenance verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: ts-x86_64-unknown-linux-gnu provenance verified online WITHOUT --bundle using both exact signer identities and source pins
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-x86_64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-unknown-linux-gnu.sbom.online-store.json
true
+ echo 'SUCCESS: ts-x86_64-unknown-linux-gnu sbom verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: ts-x86_64-unknown-linux-gnu sbom verified online WITHOUT --bundle using both exact signer identities and source pins
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ provenance == sbom ]]
+ echo 'SUCCESS: ts-aarch64-apple-darwin provenance verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: ts-aarch64-apple-darwin provenance verified online WITHOUT --bundle using both exact signer identities and source pins
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-aarch64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-aarch64-apple-darwin.sbom.online-store.json
true
+ echo 'SUCCESS: ts-aarch64-apple-darwin sbom verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: ts-aarch64-apple-darwin sbom verified online WITHOUT --bundle using both exact signer identities and source pins
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ provenance == sbom ]]
+ echo 'SUCCESS: ts-x86_64-apple-darwin provenance verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: ts-x86_64-apple-darwin provenance verified online WITHOUT --bundle using both exact signer identities and source pins
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-x86_64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-apple-darwin.sbom.online-store.json
true
+ echo 'SUCCESS: ts-x86_64-apple-darwin sbom verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: ts-x86_64-apple-darwin sbom verified online WITHOUT --bundle using both exact signer identities and source pins
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ provenance == sbom ]]
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu provenance verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu provenance verified online WITHOUT --bundle using both exact signer identities and source pins
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-x86_64-unknown-linux-gnu.sbom.online-store.json
true
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu sbom verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu sbom verified online WITHOUT --bundle using both exact signer identities and source pins
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ provenance == sbom ]]
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl provenance verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl provenance verified online WITHOUT --bundle using both exact signer identities and source pins
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-x86_64-unknown-linux-musl.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-x86_64-unknown-linux-musl.sbom.online-store.json
true
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl sbom verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl sbom verified online WITHOUT --bundle using both exact signer identities and source pins
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ provenance == sbom ]]
+ echo 'SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu provenance verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu provenance verified online WITHOUT --bundle using both exact signer identities and source pins
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-aarch64-unknown-linux-gnu.sbom.online-store.json
true
+ echo 'SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu sbom verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu sbom verified online WITHOUT --bundle using both exact signer identities and source pins
+ for asset in ts-aarch64-apple-darwin ts-x86_64-apple-darwin
++ /usr/bin/vtool -show-build ts-aarch64-apple-darwin
+ metadata='ts-aarch64-apple-darwin:
Load command 11
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform MACOS
    minos 13.0
      sdk 15.5
   ntools 1
     tool LD
  version 1167.5'
+ printf '%s\n' 'ts-aarch64-apple-darwin:
Load command 11
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform MACOS
    minos 13.0
      sdk 15.5
   ntools 1
     tool LD
  version 1167.5'
ts-aarch64-apple-darwin:
Load command 11
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform MACOS
    minos 13.0
      sdk 15.5
   ntools 1
     tool LD
  version 1167.5
++ printf '%s\n' 'ts-aarch64-apple-darwin:
Load command 11
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform MACOS
    minos 13.0
      sdk 15.5
   ntools 1
     tool LD
  version 1167.5'
++ awk '$1 == "minos" { print $2 }'
+ test 13.0 = 13.0
+ echo 'SUCCESS: ts-aarch64-apple-darwin minimum macOS is exactly 13.0'
SUCCESS: ts-aarch64-apple-darwin minimum macOS is exactly 13.0
+ for asset in ts-aarch64-apple-darwin ts-x86_64-apple-darwin
++ /usr/bin/vtool -show-build ts-x86_64-apple-darwin
+ metadata='ts-x86_64-apple-darwin:
Load command 11
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform MACOS
    minos 13.0
      sdk 15.5
   ntools 1
     tool LD
  version 1167.5'
+ printf '%s\n' 'ts-x86_64-apple-darwin:
Load command 11
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform MACOS
    minos 13.0
      sdk 15.5
   ntools 1
     tool LD
  version 1167.5'
ts-x86_64-apple-darwin:
Load command 11
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform MACOS
    minos 13.0
      sdk 15.5
   ntools 1
     tool LD
  version 1167.5
++ printf '%s\n' 'ts-x86_64-apple-darwin:
Load command 11
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform MACOS
    minos 13.0
      sdk 15.5
   ntools 1
     tool LD
  version 1167.5'
++ awk '$1 == "minos" { print $2 }'
+ test 13.0 = 13.0
+ echo 'SUCCESS: ts-x86_64-apple-darwin minimum macOS is exactly 13.0'
SUCCESS: ts-x86_64-apple-darwin minimum macOS is exactly 13.0
+ chmod u+x ts-aarch64-apple-darwin
+ ./ts-aarch64-apple-darwin --version
ts package=0.1.0 source=7a05940e2f7b10c459bdd2d3949f265b755ce42c target=aarch64-apple-darwin variant=default
++ ./ts-aarch64-apple-darwin --version
+ test 'ts package=0.1.0 source=7a05940e2f7b10c459bdd2d3949f265b755ce42c target=aarch64-apple-darwin variant=default' = 'ts package=0.1.0 source=7a05940e2f7b10c459bdd2d3949f265b755ce42c target=aarch64-apple-darwin variant=default'
+ echo 'SUCCESS: CLI package/source/target/variant exactly match the approved release source'
SUCCESS: CLI package/source/target/variant exactly match the approved release source
+ echo 'SUCCESS: release, all 29 assets, 28 checksums, both predicates, both signer identities, bundle verification, all-seven online store lookup and SPDX comparisons passed'
SUCCESS: release, all 29 assets, 28 checksums, both predicates, both signer identities, bundle verification, all-seven online store lookup and SPDX comparisons passed

@prk-Jr

prk-Jr commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator Author

Rehearsal v0.0.0-rehearsal.8 at 7a05940: passed. Fork run. Fresh lightweight tag; exact reviewed head; all seven builds/signing jobs and the publisher passed. The full independent verification also passed.

offline transcript, part 1. Pinned gh 2.102.0. Trust-root SHA-256: 65ca537f6ed8a47fd0e560c421baa1f6c1efb8b25fc200d8c5c02c0e92eb2b9c. Independent binary pins derive from the cryptographically verified release attestation, separately from the downloaded SHA256SUMS. OS sandbox denied networking including the control request.

9b145899c50cf7b417e71b4bb9acfddfced4fb8e96e9f1611489d79f9f9631db  trusted-server-axum-aarch64-unknown-linux-gnu
253aa1d67d36e80f1ac27da264466234f5c16f2a523db82719cb050107db1b87  trusted-server-axum-x86_64-unknown-linux-gnu
228b515a17e636c84587a24820d4897439dc9cd18f12e36576c9174875c2565f  trusted-server-axum-x86_64-unknown-linux-musl
51d5b6b838ef437c7fe283a0effc7ed6d7e36661440093a756cf4d4d149c26b1  trusted-server-fastly.wasm
bc73648d99bd5336cf9e0cf5ab6a827174178da4be43009272bde80f847f71cf  ts-aarch64-apple-darwin
4efe721d2b7e08a6d9f780b45bc68b20f0ee5092e9634a765a549e163c555902  ts-x86_64-apple-darwin
b77c6c1a114c66dd502ae90960b68f261a021002a20cd29d27fa8343d18db176  ts-x86_64-unknown-linux-gnu

SUCCESS: OS sandbox denied the network control
+ REPO=prk-Jr/trusted-server
+ TAG=v0.0.0-rehearsal.8
+ COMMIT=7a05940e2f7b10c459bdd2d3949f265b755ce42c
+ WORKFLOW=prk-Jr/trusted-server/.github/workflows/release-build.yml
+ IDENTITY=https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8
+ ASSETS=(trusted-server-fastly.wasm ts-x86_64-unknown-linux-gnu ts-aarch64-apple-darwin ts-x86_64-apple-darwin trusted-server-axum-x86_64-unknown-linux-gnu trusted-server-axum-x86_64-unknown-linux-musl trusted-server-axum-aarch64-unknown-linux-gnu)
+ shasum -a 256 --check APPROVED_BINARY_SHA256SUMS
trusted-server-axum-aarch64-unknown-linux-gnu: OK
trusted-server-axum-x86_64-unknown-linux-gnu: OK
trusted-server-axum-x86_64-unknown-linux-musl: OK
trusted-server-fastly.wasm: OK
ts-aarch64-apple-darwin: OK
ts-x86_64-apple-darwin: OK
ts-x86_64-unknown-linux-gnu: OK
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-fastly.wasm
SUCCESS: gh attestation verify trusted-server-fastly.wasm with requested predicate, signer and source pins
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ command gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-fastly.wasm
SUCCESS: gh attestation verify trusted-server-fastly.wasm with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-fastly.wasm
SUCCESS: gh attestation verify trusted-server-fastly.wasm with requested predicate, signer and source pins
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ command gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-fastly.wasm
SUCCESS: gh attestation verify trusted-server-fastly.wasm with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-fastly.wasm.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-fastly.wasm.offline-sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify ts-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ command gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify ts-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify ts-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ command gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify ts-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-x86_64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-unknown-linux-gnu.offline-sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-aarch64-apple-darwin
SUCCESS: gh attestation verify ts-aarch64-apple-darwin with requested predicate, signer and source pins
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ command gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-aarch64-apple-darwin
SUCCESS: gh attestation verify ts-aarch64-apple-darwin with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-aarch64-apple-darwin
SUCCESS: gh attestation verify ts-aarch64-apple-darwin with requested predicate, signer and source pins
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ command gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-aarch64-apple-darwin
SUCCESS: gh attestation verify ts-aarch64-apple-darwin with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-aarch64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-aarch64-apple-darwin.offline-sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-apple-darwin
SUCCESS: gh attestation verify ts-x86_64-apple-darwin with requested predicate, signer and source pins
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ command gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-apple-darwin
SUCCESS: gh attestation verify ts-x86_64-apple-darwin with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-apple-darwin
SUCCESS: gh attestation verify ts-x86_64-apple-darwin with requested predicate, signer and source pins
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ command gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-apple-darwin
SUCCESS: gh attestation verify ts-x86_64-apple-darwin with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-x86_64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-apple-darwin.offline-sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-x86_64-unknown-linux-gnu.offline-sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-musl
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl with requested predicate, signer and source pins
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-musl
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-musl
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl with requested predicate, signer and source pins
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json

@prk-Jr

prk-Jr commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator Author

Rehearsal v0.0.0-rehearsal.8 at 7a05940: passed. Fork run. Fresh lightweight tag; exact reviewed head; all seven builds/signing jobs and the publisher passed. The full independent verification also passed.

offline transcript, part 2. Pinned gh 2.102.0. Trust-root SHA-256: 65ca537f6ed8a47fd0e560c421baa1f6c1efb8b25fc200d8c5c02c0e92eb2b9c. Independent binary pins derive from the cryptographically verified release attestation, separately from the downloaded SHA256SUMS. OS sandbox denied networking including the control request.

+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-musl
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-x86_64-unknown-linux-musl.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-x86_64-unknown-linux-musl.offline-sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-aarch64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ command gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-aarch64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-aarch64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ command gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.8 --source-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --signer-digest 7a05940e2f7b10c459bdd2d3949f265b755ce42c --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.8 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-aarch64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-aarch64-unknown-linux-gnu.offline-sbom-verification.json
true
+ printf '%s\n' 'SUCCESS: all seven binaries verified offline for provenance and SPDX, both signer identities, exact source pins, and SPDX predicate equality.'
SUCCESS: all seven binaries verified offline for provenance and SPDX, both signer identities, exact source pins, and SPDX predicate equality.

@prk-Jr

prk-Jr commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator Author

Rehearsal v0.0.0-rehearsal.8 at 7a05940: passed. Fork run. Fresh lightweight tag; exact reviewed head; all seven builds/signing jobs and the publisher passed. The full independent verification also passed.

publisher transcript, part 1. Publisher output includes the bounded availability check, exact release-attestation binding and post-publication verification.

release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:33:02.7783553Z gh version 2.102.0 (2026-09-30)
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:33:02.7784381Z https://github.com/cli/cli/releases/tag/v2.102.0
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:33:05.6000294Z Created release ID: 421663680
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:33:50.9525633Z Verified release: v0.0.0-rehearsal.8 signature and exact attestation bundle match
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:33:53.1261072Z Verified asset: trusted-server-axum-x86_64-unknown-linux-gnu Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu: sha256:253aa1d67d36e80f1ac27da264466234f5c16f2a523db82719cb050107db1b87
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:33:53.1262962Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:33:53.1263595Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:33:53.1263866Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:33:53.1344032Z ✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:33:53.1344672Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:33:55.4789156Z Verified asset: trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json: sha256:839ba91dd06c1e967d2d7a86d4dc3f7f80892714359bc685255f178f2b1b8781
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:33:55.4790949Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:33:55.4791508Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:33:55.4791774Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:33:55.4792600Z ✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:33:55.4793154Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:33:57.7264062Z Verified asset: trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json: sha256:cd01d9373536fc59bfdca6d0791b7672b3fe10a6b2bc741e1b1e29d9cb26c420
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:33:57.7265800Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:33:57.7266415Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:33:57.7266860Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:33:57.7267772Z ✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:33:57.7268423Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:00.2585137Z Verified asset: trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json: sha256:e8418b68bb48eaaa3f5a691e9ae38a6904e5152f1c978511b0c8721bcf6768a7
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:00.2587057Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:00.2587695Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:00.2587966Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:00.2588926Z ✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:00.2589630Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:02.1590596Z Verified asset: trusted-server-axum-x86_64-unknown-linux-musl Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl: sha256:228b515a17e636c84587a24820d4897439dc9cd18f12e36576c9174875c2565f
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:02.1592089Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:02.1592731Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:02.1593036Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:02.1593904Z ✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:02.1594543Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:03.9808677Z Verified asset: trusted-server-axum-x86_64-unknown-linux-musl.spdx.json Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl.spdx.json: sha256:085986085d0ba11ecfd3938f4133cfad1b68bbb01241b583be47a04bf1591d47
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:03.9809689Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:03.9810089Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:03.9810278Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:03.9810926Z ✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl.spdx.json is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:03.9811394Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:06.1534189Z Verified asset: trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json: sha256:9088b4c77723f02646d236f13559f31532dcd11a6d65c233aefe2edcb7db472d
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:06.1536102Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:06.1537506Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:06.1537805Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:06.1538790Z ✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:06.1539542Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:08.1432236Z Verified asset: trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json: sha256:b61550370354d46dabed2c79f9305868e087b719f2ed581ca03146d5c3c44481
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:08.1434185Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:08.1434595Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:08.1434783Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:08.1435459Z ✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:08.1435920Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:10.5495781Z Verified asset: trusted-server-axum-aarch64-unknown-linux-gnu Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu: sha256:9b145899c50cf7b417e71b4bb9acfddfced4fb8e96e9f1611489d79f9f9631db
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:10.5497498Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:10.5498116Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:10.5498383Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:10.5499196Z ✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:10.5499906Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:12.3937961Z Verified asset: trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json: sha256:eb2a98f00b58c297768c3c4d6614927586c15192eb8ebd44b886a85944cd3afb
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:12.3939058Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:12.3939479Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:12.3939718Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:12.3940491Z ✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:12.3940958Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:14.8191095Z Verified asset: trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json: sha256:924d8b5f75cee015273b36b31ab00a946fe18cee5718db7c212fc568453952d8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:14.8193103Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:14.8193726Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:14.8194057Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:14.8195166Z ✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:14.8195948Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:17.1314940Z Verified asset: trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json: sha256:8838c42653dce694a87f097c5e6845a1f3715baa898b64eaba6f81303b4de3ac
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:17.1316915Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:17.1317509Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:17.1317772Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:17.1318759Z ✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:17.1319465Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:19.0393769Z Verified asset: trusted-server-fastly.wasm Calculated digest for trusted-server-fastly.wasm: sha256:51d5b6b838ef437c7fe283a0effc7ed6d7e36661440093a756cf4d4d149c26b1
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:19.0394641Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:19.0395047Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:19.0395243Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:19.0395773Z ✓ Verification succeeded! trusted-server-fastly.wasm is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:19.0396364Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:20.9983593Z Verified asset: trusted-server-fastly.wasm.spdx.json Calculated digest for trusted-server-fastly.wasm.spdx.json: sha256:7866b8684ababf84baf372adb24c1d9ca627c31a343a4841af847c16e8098037
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:20.9985019Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:20.9985650Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:20.9985934Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:20.9986988Z ✓ Verification succeeded! trusted-server-fastly.wasm.spdx.json is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:20.9987916Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:23.5139903Z Verified asset: trusted-server-fastly.wasm.provenance.sigstore.json Calculated digest for trusted-server-fastly.wasm.provenance.sigstore.json: sha256:204f035b5054a3794b7aa856c8cc8b23e2caee11ffb431db0a4962404957b6bd
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:23.5140931Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:23.5141421Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:23.5141621Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:23.5142331Z ✓ Verification succeeded! trusted-server-fastly.wasm.provenance.sigstore.json is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:23.5142770Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:25.2881566Z Verified asset: trusted-server-fastly.wasm.sbom.sigstore.json Calculated digest for trusted-server-fastly.wasm.sbom.sigstore.json: sha256:a80a5b069ffcb7838b78c8cd2a3d25cf717bb4e43f40ce9b6ccfb8058f04fdd1
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:25.2883153Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:25.2883827Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:25.2884178Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:25.2885182Z ✓ Verification succeeded! trusted-server-fastly.wasm.sbom.sigstore.json is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:25.2885783Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:27.2882960Z Verified asset: ts-aarch64-apple-darwin Calculated digest for ts-aarch64-apple-darwin: sha256:bc73648d99bd5336cf9e0cf5ab6a827174178da4be43009272bde80f847f71cf
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:27.2884348Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:27.2885002Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:27.2885321Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:27.2886160Z ✓ Verification succeeded! ts-aarch64-apple-darwin is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:27.2887032Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:28.9579905Z Verified asset: ts-aarch64-apple-darwin.spdx.json Calculated digest for ts-aarch64-apple-darwin.spdx.json: sha256:5334f6996673ab966c02f2dbe92d91512ffcfc1a2c092711639c16f006e71082
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:28.9580811Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:28.9581276Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:28.9581490Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:28.9582083Z ✓ Verification succeeded! ts-aarch64-apple-darwin.spdx.json is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:28.9582510Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:31.0658034Z Verified asset: ts-aarch64-apple-darwin.provenance.sigstore.json Calculated digest for ts-aarch64-apple-darwin.provenance.sigstore.json: sha256:9f59cdc95b84bb0f204017b94b5f9585280764cce0fcf8468c3a0a8cc2563d44
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:31.0659781Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:31.0660280Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:31.0660467Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:31.0661114Z ✓ Verification succeeded! ts-aarch64-apple-darwin.provenance.sigstore.json is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:31.0661562Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:32.8454411Z Verified asset: ts-aarch64-apple-darwin.sbom.sigstore.json Calculated digest for ts-aarch64-apple-darwin.sbom.sigstore.json: sha256:08b031e553ff89b692d410d1fe6cc99835744a24222f1932e934ccff52eb610c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:32.8455807Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:32.8456450Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:32.8456893Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:32.8457715Z ✓ Verification succeeded! ts-aarch64-apple-darwin.sbom.sigstore.json is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:32.8458661Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:35.3760045Z Verified asset: ts-x86_64-apple-darwin Calculated digest for ts-x86_64-apple-darwin: sha256:4efe721d2b7e08a6d9f780b45bc68b20f0ee5092e9634a765a549e163c555902
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:35.3760860Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:35.3761260Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:35.3761460Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:35.3761980Z ✓ Verification succeeded! ts-x86_64-apple-darwin is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:35.3762635Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:37.4428792Z Verified asset: ts-x86_64-apple-darwin.spdx.json Calculated digest for ts-x86_64-apple-darwin.spdx.json: sha256:3509dc4aac0347184e19fac13c3320518165ff761382ceca603755ecc1b9d477
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:37.4429648Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:37.4430360Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:37.4430598Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:37.4431167Z ✓ Verification succeeded! ts-x86_64-apple-darwin.spdx.json is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:37.4431538Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:39.5248135Z Verified asset: ts-x86_64-apple-darwin.provenance.sigstore.json Calculated digest for ts-x86_64-apple-darwin.provenance.sigstore.json: sha256:8064f9eac64f18cf2a724726240fd45b79aa07ade80261e423f579fc63389c23
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:39.5249093Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:39.5249495Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:39.5249726Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:39.5250342Z ✓ Verification succeeded! ts-x86_64-apple-darwin.provenance.sigstore.json is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:39.5250754Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:41.6744621Z Verified asset: ts-x86_64-apple-darwin.sbom.sigstore.json Calculated digest for ts-x86_64-apple-darwin.sbom.sigstore.json: sha256:bc71cc9dd409875573dcf74ab6d1178dc68785c99d4272bda80c9cd6df270694
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:41.6745566Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:41.6745968Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:41.6746166Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:41.6747015Z ✓ Verification succeeded! ts-x86_64-apple-darwin.sbom.sigstore.json is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:41.6747431Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:43.8975359Z Verified asset: ts-x86_64-unknown-linux-gnu Calculated digest for ts-x86_64-unknown-linux-gnu: sha256:b77c6c1a114c66dd502ae90960b68f261a021002a20cd29d27fa8343d18db176
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:43.8976185Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:43.8976802Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:43.8976996Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:43.8977534Z ✓ Verification succeeded! ts-x86_64-unknown-linux-gnu is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:43.8977880Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:46.3404251Z Verified asset: ts-x86_64-unknown-linux-gnu.spdx.json Calculated digest for ts-x86_64-unknown-linux-gnu.spdx.json: sha256:e359734e2e29adf861272888941969ee968cc0d815459b1f982d5771191e9e29
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:46.3405669Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:46.3406306Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:46.3406763Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:46.3407519Z ✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.spdx.json is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:46.3408108Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:48.2758692Z Verified asset: ts-x86_64-unknown-linux-gnu.provenance.sigstore.json Calculated digest for ts-x86_64-unknown-linux-gnu.provenance.sigstore.json: sha256:0fa4fe8052f9a7740a75e6b817d1dd189d57fe346c6ce8c4249a322bffbc1a2f
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:48.2759715Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:48.2760124Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:48.2760318Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:48.2760957Z ✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.provenance.sigstore.json is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:48.2761634Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:50.2682390Z Verified asset: ts-x86_64-unknown-linux-gnu.sbom.sigstore.json Calculated digest for ts-x86_64-unknown-linux-gnu.sbom.sigstore.json: sha256:1063a9d3ced3d38b314f5ea85e7cd9fa0b3fcd2b12f4b14077d4384f96cd181a
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:50.2683342Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:50.2683755Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:50.2683949Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:50.2684554Z ✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.sbom.sigstore.json is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:50.2685254Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:52.1392150Z Verified asset: SHA256SUMS Calculated digest for SHA256SUMS: sha256:1166c222c7e219b3f7136699bc4f25286453311cc5e81025649aacd6f4d968ae
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:52.1392890Z Resolved tag v0.0.0-rehearsal.8 to sha1:7a05940e2f7b10c459bdd2d3949f265b755ce42c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:52.1393304Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:52.1393529Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:52.1394011Z ✓ Verification succeeded! SHA256SUMS is present in release v0.0.0-rehearsal.8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T09:34:52.1394314Z 
release	Complete job	2026-10-23T09:34:53.1433418Z Cleaning up orphan processes

@prk-Jr

prk-Jr commented Oct 23, 2026 •

Copy link
Copy Markdown
Collaborator Author

Rehearsal v0.0.0-rehearsal.9 at 149754d: passed. Fork run. Fresh lightweight tag; exact reviewed head; all seven builds/signing jobs and the publisher passed. The full independent verification also passed.

The publisher found the release attestation available on its first check; no live availability wait was needed. Failure-path tests cover five checks with 2s/5s/10s/20s backoff, the 60s availability deadline, late-success rejection and immediate definitive failures. The release has exactly 29 assets, draft=false, immutable=true, prerelease=true and is not Latest. The documented gh release download command succeeded. All 29 verify-asset checks and 28 SHA256SUMS entries passed. All seven binaries passed provenance and SPDX verification, both signer forms, exact tag/source/signer pins and deny-self-hosted-runners, both with bundles and via online attestation-store lookup without bundles. Networking-denied offline verification passed with an independent binary SHA-256 pin for each asset; every attested SBOM predicate equalled its shipped SPDX document.

Both macOS minimum-OS checks and all CLI package/source/target/variant checks passed. All Axum container smokes proved 0.0.0.0:8080 through a host-published port and exit-1 rejection for both primary and legacy port zero. The publisher re-downloaded all 29 published assets and byte-compared them with the signed checksums and handoff. Pinned Fastly 16.0.0 packed, validated, inspected and byte-compared the verified wasm without deployment. Viceroy returned the expected page/source header and confirmed no Build facts log in default single mode. Full command/output transcripts follow in separate comments. Temporary local paths are redacted.

This supersedes the failed .6 workflow (independent checks passed afterward) and the .7 runner-capacity cancellation. Their tags/releases remain unchanged. Any subsequent review-head update must be docs-only and retain this exact rehearsed implementation SHA. The PR remains draft with no reviewers.

SUCCESS: immutable published release contains exactly29 nonempty assets with published digests; SHA256SUMS covers exactly28 companions and binaries, excluding itself.
Rehearsal .9 build/startup proof at 149754d357901ec874eab6140e92bce3d8613085.
All final-byte, CLI version, macOS minimum-OS, non-loopback Axum health and image identity lines are retained; full job logs are linked.

trusted-server-axum-x86_64-unknown-linux-musl
https://github.com/prk-Jr/trusted-server/actions/runs/39947731545/job/120394453667
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-23T11:45:00.5734022Z SUCCESS: final-byte checks x86_64-unknown-linux-musl 
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-23T11:45:01.0866267Z Runtime image: alpine:3.22.2@sha256:4b7ce07002c69e8f3d704a9c5d6fd3053be500b7f1c69fc0d80990c2ad8dd412 sha256:706db57fb2063f39f69632c5b5c9c439633fda35110e65587c5d85553fd1cc38
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-23T11:45:02.0816962Z SUCCESS: Axum rejects EDGEZERO__ADAPTER__PORT=0; exit 1, ports must be 1–65535: sha256:706db57fb2063f39f69632c5b5c9c439633fda35110e65587c5d85553fd1cc38
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-23T11:45:02.2324529Z SUCCESS: Axum rejects PORT=0; exit 1, ports must be 1–65535: sha256:706db57fb2063f39f69632c5b5c9c439633fda35110e65587c5d85553fd1cc38
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-23T11:45:02.4721728Z SUCCESS: Axum bound to 0.0.0.0:8080; host reached published container port, HTTP 200 ok: alpine:3.22.2@sha256:4b7ce07002c69e8f3d704a9c5d6fd3053be500b7f1c69fc0d80990c2ad8dd412 sha256:706db57fb2063f39f69632c5b5c9c439633fda35110e65587c5d85553fd1cc38
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-23T11:45:02.6246418Z Runtime image: scratch sha256:29096106a2d777c6401cf5de9a7ccdd910cc9c5d44c4ee63b32e77fa0e5e2f14
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-23T11:45:02.7711321Z SUCCESS: Axum rejects EDGEZERO__ADAPTER__PORT=0; exit 1, ports must be 1–65535: sha256:29096106a2d777c6401cf5de9a7ccdd910cc9c5d44c4ee63b32e77fa0e5e2f14
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-23T11:45:02.9099503Z SUCCESS: Axum rejects PORT=0; exit 1, ports must be 1–65535: sha256:29096106a2d777c6401cf5de9a7ccdd910cc9c5d44c4ee63b32e77fa0e5e2f14
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-23T11:45:03.0797104Z SUCCESS: Axum bound to 0.0.0.0:8080; host reached published container port, HTTP 200 ok: scratch sha256:29096106a2d777c6401cf5de9a7ccdd910cc9c5d44c4ee63b32e77fa0e5e2f14

trusted-server-fastly.wasm
https://github.com/prk-Jr/trusted-server/actions/runs/39947731545/job/120394453759
build / Build trusted-server-fastly.wasm	UNKNOWN STEP	2026-10-23T11:42:35.1251107Z SUCCESS: final-byte checks wasm32-wasip1 

ts-aarch64-apple-darwin
https://github.com/prk-Jr/trusted-server/actions/runs/39947731545/job/120394453814
build / Build ts-aarch64-apple-darwin	UNKNOWN STEP	2026-10-23T11:51:35.7323470Z SUCCESS: Mach-O target and macOS minimum OS 13.0: aarch64-apple-darwin
build / Build ts-aarch64-apple-darwin	UNKNOWN STEP	2026-10-23T11:51:35.7325620Z SUCCESS: final-byte checks aarch64-apple-darwin 
build / Build ts-aarch64-apple-darwin	UNKNOWN STEP	2026-10-23T11:51:35.7457260Z SUCCESS: ts package=0.1.0 source=149754d357901ec874eab6140e92bce3d8613085 target=aarch64-apple-darwin variant=default

trusted-server-axum-x86_64-unknown-linux-gnu
https://github.com/prk-Jr/trusted-server/actions/runs/39947731545/job/120394453835
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:41:25.4427614Z GNU builder: registry.access.redhat.com/ubi9/ubi:9.6@sha256:dec374e05cc13ebbc0975c9f521f3db6942d27f8ccdf06b180160490eef8bdbc sha256:a1bffeee16649c24df7779ea1d7b8135341bf47477317b199c98bc9e04e44561
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:41:25.5968259Z ldd (GNU libc) 2.34
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:43:48.0312050Z SUCCESS: final-byte checks x86_64-unknown-linux-gnu GLIBC_2.34 GLIBC_2.2.5 GLIBC_2.14 GLIBC_2.3 GLIBC_2.27 GLIBC_2.29 GLIBC_2.7 GLIBC_2.16 GLIBC_2.33 GLIBC_2.3.4 GLIBC_2.10 GLIBC_2.3.2 GLIBC_2.9 GLIBC_2.30 GLIBC_2.17 GLIBC_2.32 GLIBC_2.28 GLIBC_2.25 GLIBC_2.18
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:43:49.9582729Z Runtime image: debian:12-slim@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8 sha256:8da84df25d28176be84164040cd45e128c6b4c6a80b7d7cbe17fe2b9f198efc2
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:43:51.0787715Z SUCCESS: Axum rejects EDGEZERO__ADAPTER__PORT=0; exit 1, ports must be 1–65535: sha256:8da84df25d28176be84164040cd45e128c6b4c6a80b7d7cbe17fe2b9f198efc2
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:43:51.1698387Z SUCCESS: Axum rejects PORT=0; exit 1, ports must be 1–65535: sha256:8da84df25d28176be84164040cd45e128c6b4c6a80b7d7cbe17fe2b9f198efc2
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:43:51.3142818Z SUCCESS: Axum bound to 0.0.0.0:8080; host reached published container port, HTTP 200 ok: debian:12-slim@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8 sha256:8da84df25d28176be84164040cd45e128c6b4c6a80b7d7cbe17fe2b9f198efc2
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:43:53.2354986Z Runtime image: ubuntu:22.04@sha256:0a9887931b0e38af2e3487ed39e29436b0535c4f3f52e57745baaf79d1898956 sha256:cee13550f97b8a595506e8e4ca74263ba44924248779a4ba4f942e197652acff
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:43:53.6569609Z SUCCESS: Axum rejects EDGEZERO__ADAPTER__PORT=0; exit 1, ports must be 1–65535: sha256:cee13550f97b8a595506e8e4ca74263ba44924248779a4ba4f942e197652acff
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:43:53.7468978Z SUCCESS: Axum rejects PORT=0; exit 1, ports must be 1–65535: sha256:cee13550f97b8a595506e8e4ca74263ba44924248779a4ba4f942e197652acff
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:43:53.8658476Z SUCCESS: Axum bound to 0.0.0.0:8080; host reached published container port, HTTP 200 ok: ubuntu:22.04@sha256:0a9887931b0e38af2e3487ed39e29436b0535c4f3f52e57745baaf79d1898956 sha256:cee13550f97b8a595506e8e4ca74263ba44924248779a4ba4f942e197652acff
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:43:56.5695165Z Runtime image: registry.access.redhat.com/ubi9/ubi-minimal:9.6@sha256:34880b64c07f28f64d95737f82f891516de9a3b43583f39970f7bf8e4cfa48b7 sha256:a2c5a85865a585c3bc8b10f6c269358fdf89fe32be4232885166889d85c76421
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:43:57.0734364Z SUCCESS: Axum rejects EDGEZERO__ADAPTER__PORT=0; exit 1, ports must be 1–65535: sha256:a2c5a85865a585c3bc8b10f6c269358fdf89fe32be4232885166889d85c76421
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:43:57.1659986Z SUCCESS: Axum rejects PORT=0; exit 1, ports must be 1–65535: sha256:a2c5a85865a585c3bc8b10f6c269358fdf89fe32be4232885166889d85c76421
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:43:57.2779452Z SUCCESS: Axum bound to 0.0.0.0:8080; host reached published container port, HTTP 200 ok: registry.access.redhat.com/ubi9/ubi-minimal:9.6@sha256:34880b64c07f28f64d95737f82f891516de9a3b43583f39970f7bf8e4cfa48b7 sha256:a2c5a85865a585c3bc8b10f6c269358fdf89fe32be4232885166889d85c76421

ts-x86_64-unknown-linux-gnu
https://github.com/prk-Jr/trusted-server/actions/runs/39947731545/job/120394453879
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:41:31.0825110Z GNU builder: registry.access.redhat.com/ubi9/ubi:9.6@sha256:dec374e05cc13ebbc0975c9f521f3db6942d27f8ccdf06b180160490eef8bdbc sha256:efe659f113f189ac51d5685b19624adeb3dd83cd361b2da3e30d950d205cbf3d
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:41:31.2718728Z ldd (GNU libc) 2.34
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:49:09.4240209Z SUCCESS: final-byte checks x86_64-unknown-linux-gnu GLIBC_2.34 GLIBC_2.2.5 GLIBC_2.14 GLIBC_2.3 GLIBC_2.29 GLIBC_2.3.4 GLIBC_2.33 GLIBC_2.28 GLIBC_2.7 GLIBC_2.16 GLIBC_2.10 GLIBC_2.3.2 GLIBC_2.9 GLIBC_2.30 GLIBC_2.4 GLIBC_2.17 GLIBC_2.15 GLIBC_2.32 GLIBC_2.25 GLIBC_2.18 GLIBC_2.5 GLIBC_2.27
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:49:09.4281488Z SUCCESS: ts package=0.1.0 source=149754d357901ec874eab6140e92bce3d8613085 target=x86_64-unknown-linux-gnu variant=default
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:49:11.4445220Z Runtime image: debian:12-slim@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8 sha256:8da84df25d28176be84164040cd45e128c6b4c6a80b7d7cbe17fe2b9f198efc2
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:49:12.2574647Z SUCCESS: ts package=0.1.0 source=149754d357901ec874eab6140e92bce3d8613085 target=x86_64-unknown-linux-gnu variant=default
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:49:14.1760930Z Runtime image: ubuntu:22.04@sha256:0a9887931b0e38af2e3487ed39e29436b0535c4f3f52e57745baaf79d1898956 sha256:cee13550f97b8a595506e8e4ca74263ba44924248779a4ba4f942e197652acff
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:49:14.3449872Z SUCCESS: ts package=0.1.0 source=149754d357901ec874eab6140e92bce3d8613085 target=x86_64-unknown-linux-gnu variant=default
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:49:16.3896864Z Runtime image: registry.access.redhat.com/ubi9/ubi-minimal:9.6@sha256:34880b64c07f28f64d95737f82f891516de9a3b43583f39970f7bf8e4cfa48b7 sha256:a2c5a85865a585c3bc8b10f6c269358fdf89fe32be4232885166889d85c76421
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:49:16.5355492Z SUCCESS: ts package=0.1.0 source=149754d357901ec874eab6140e92bce3d8613085 target=x86_64-unknown-linux-gnu variant=default

ts-x86_64-apple-darwin
https://github.com/prk-Jr/trusted-server/actions/runs/39947731545/job/120394453888
build / Build ts-x86_64-apple-darwin	UNKNOWN STEP	2026-10-23T12:05:00.9594680Z SUCCESS: Mach-O target and macOS minimum OS 13.0: x86_64-apple-darwin
build / Build ts-x86_64-apple-darwin	UNKNOWN STEP	2026-10-23T12:05:00.9597140Z SUCCESS: final-byte checks x86_64-apple-darwin 
build / Build ts-x86_64-apple-darwin	UNKNOWN STEP	2026-10-23T12:05:00.9791970Z SUCCESS: ts package=0.1.0 source=149754d357901ec874eab6140e92bce3d8613085 target=x86_64-apple-darwin variant=default

trusted-server-axum-aarch64-unknown-linux-gnu
https://github.com/prk-Jr/trusted-server/actions/runs/39947731545/job/120394453903
build / Build trusted-server-axum-aarch64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:41:31.4787685Z GNU builder: registry.access.redhat.com/ubi9/ubi:9.6@sha256:dec374e05cc13ebbc0975c9f521f3db6942d27f8ccdf06b180160490eef8bdbc sha256:46f3e35478cad9449bc739681cdf09b482f31c0909a454e85d2710b15a3ad08c
build / Build trusted-server-axum-aarch64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:41:31.6228442Z ldd (GNU libc) 2.34
build / Build trusted-server-axum-aarch64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:44:18.0423704Z SUCCESS: final-byte checks aarch64-unknown-linux-gnu GLIBC_2.17 GLIBC_2.33 GLIBC_2.34 GLIBC_2.29 GLIBC_2.28 GLIBC_2.30 GLIBC_2.27 GLIBC_2.18 GLIBC_2.25 GLIBC_2.32
build / Build trusted-server-axum-aarch64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:44:19.6789888Z Runtime image: debian:12-slim@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8 sha256:28fe65558df3e10c89e7d685cb86544cdc138f242d12100c5b0981f92aae0853
build / Build trusted-server-axum-aarch64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:44:20.6577740Z SUCCESS: Axum rejects EDGEZERO__ADAPTER__PORT=0; exit 1, ports must be 1–65535: sha256:28fe65558df3e10c89e7d685cb86544cdc138f242d12100c5b0981f92aae0853
build / Build trusted-server-axum-aarch64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:44:20.7649254Z SUCCESS: Axum rejects PORT=0; exit 1, ports must be 1–65535: sha256:28fe65558df3e10c89e7d685cb86544cdc138f242d12100c5b0981f92aae0853
build / Build trusted-server-axum-aarch64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T11:44:20.9330215Z SUCCESS: Axum bound to 0.0.0.0:8080; host reached published container port, HTTP 200 ok: debian:12-slim@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8 sha256:28fe65558df3e10c89e7d685cb86544cdc138f242d12100c5b0981f92aae0853
+ EVIDENCE=<evidence>
+ WORK=<evidence>/fastly-package
+ IMAGE=debian:12-slim@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8
+ mkdir <evidence>/fastly-package
+ cp <evidence>/trusted-server-fastly.wasm <evidence>/fastly-package/
+ printf 'manifest_version = 3\nname = "example-app"\n'
+ chmod 777 <evidence>/fastly-package
++ podman machine inspect podman-machine-default --format '{{.State}}'
+ [[ stopped != running ]]
+ trap 'podman machine stop podman-machine-default >/dev/null 2>&1 || true' EXIT
+ podman machine start podman-machine-default
Starting machine "podman-machine-default"

This machine is currently configured in rootless mode. If your containers
require root permissions (e.g. ports < 1024), or if you run into compatibility
issues with non-podman clients, you can switch using the following command:

	podman machine set --rootful

API forwarding listening on: /var/run/docker.sock
Docker API clients default to this address. You do not need to set DOCKER_HOST.

Machine "podman-machine-default" started successfully
+ podman pull debian:12-slim@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8
Trying to pull docker.io/library/debian@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8...
Getting image source signatures
Copying blob sha256:41b2195c355367079ebad200f9591fe3c2cb886c3b1e67abaaf2090dc11c04d9
Copying config sha256:28fe65558df3e10c89e7d685cb86544cdc138f242d12100c5b0981f92aae0853
Writing manifest to image destination
28fe65558df3e10c89e7d685cb86544cdc138f242d12100c5b0981f92aae0853
+ podman image inspect debian:12-slim@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8 --format '{{.Id}}'
28fe65558df3e10c89e7d685cb86544cdc138f242d12100c5b0981f92aae0853
+ podman run --rm --network=none --read-only --cap-drop=ALL --security-opt=no-new-privileges --user=65534:65534 --tmpfs /tmp:rw --env XDG_CONFIG_HOME=/tmp/fastly-config --workdir /work --mount type=bind,src=<evidence>/fastly-package,dst=/work --mount type=bind,src=<evidence>/fastly-linux/fastly,dst=/usr/local/bin/fastly,readonly debian:12-slim@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8 sh -ec '
    fastly version
    fastly compute pack --wasm-binary ./trusted-server-fastly.wasm
    fastly compute validate --package ./pkg/example-app.tar.gz
    tar -tzf ./pkg/example-app.tar.gz
    tar -xOzf ./pkg/example-app.tar.gz example-app/bin/main.wasm > packaged.wasm
    cmp trusted-server-fastly.wasm packaged.wasm
    tar -xOzf ./pkg/example-app.tar.gz example-app/fastly.toml > packaged.toml
    cmp fastly.toml packaged.toml
    sha256sum trusted-server-fastly.wasm packaged.wasm fastly.toml packaged.toml pkg/example-app.tar.gz
    echo "SUCCESS: pinned Fastly 16.0.0 packed and validated the verified release wasm; inspected package members and both byte comparisons passed; network disabled and no deployment"
  '
Fastly CLI version v16.0.0 (34cef1b0)
Built with go version go1.26.5 linux/arm64 (2026-10-23)
| Copying wasm binary...
/ Copying wasm binary...
- Copying wasm binary...
✓ Copying wasm binary
| Copying manifest...
/ Copying manifest...
✓ Copying manifest
| Creating example-app.tar.gz file...
/ Creating example-app.tar.gz file...
✓ Creating example-app.tar.gz file
SUCCESS: Validated package /work/pkg/example-app.tar.gz
example-app
example-app/bin
example-app/bin/main.wasm
example-app/fastly.toml
78219e03834c0e7617ac5f97308d2b225867ac9c7755767cf417d2251cc0bc2c  trusted-server-fastly.wasm
78219e03834c0e7617ac5f97308d2b225867ac9c7755767cf417d2251cc0bc2c  packaged.wasm
21b3c0d6f0a329838b23ad87a1d42840cceaff25d0247c1ac9aa5b34784360b2  fastly.toml
21b3c0d6f0a329838b23ad87a1d42840cceaff25d0247c1ac9aa5b34784360b2  packaged.toml
a52c6c028205e1555aa52e5cc495a5b9d60e55bac04747f05d4bee59e4b20ae0  pkg/example-app.tar.gz
SUCCESS: pinned Fastly 16.0.0 packed and validated the verified release wasm; inspected package members and both byte comparisons passed; network disabled and no deployment
+ chmod 755 <evidence>/fastly-package
+ podman machine stop podman-machine-default
+ REPO_ROOT=<checkout>
+ EVIDENCE=<evidence>
+ WORK=<evidence>/viceroy-smoke
+ TS=<evidence>/ts-aarch64-apple-darwin
+ WASM=<evidence>/trusted-server-fastly.wasm
+ VICEROY=<pinned-tools>/viceroy
+ mkdir <evidence>/viceroy-smoke
+ for port in 18888 17676
+ lsof -nP -iTCP:18888 -sTCP:LISTEN
+ for port in 18888 17676
+ lsof -nP -iTCP:17676 -sTCP:LISTEN
+ cp <checkout>/edgezero.toml <checkout>/fastly.toml <evidence>/viceroy-smoke/
+ cp <checkout>/trusted-server.example.toml <evidence>/viceroy-smoke/app.toml
+ ln -s <checkout>/crates <evidence>/viceroy-smoke/crates
+ node - <evidence>/viceroy-smoke
+ chmod u+x <evidence>/ts-aarch64-apple-darwin
+ <evidence>/ts-aarch64-apple-darwin --version
ts package=0.1.0 source=149754d357901ec874eab6140e92bce3d8613085 target=aarch64-apple-darwin variant=default
+ cd <evidence>/viceroy-smoke
+ <evidence>/ts-aarch64-apple-darwin config push --adapter fastly --local --manifest <evidence>/viceroy-smoke/edgezero.toml --app-config <evidence>/viceroy-smoke/app.toml --no-diff --yes
wrote 1 physical entries (1 logical) to `[local_server.config_stores.trusted_server_config.contents]` in <evidence>/viceroy-smoke/fastly.toml (logical id `trusted_server_config`); restart `fastly compute serve` to pick up changes
pushed-key=trusted_server_config
pushed-store=trusted_server_config
+ <pinned-tools>/viceroy --version
viceroy 0.21.0
+ cat
+ origin_pid=36402
+ trap cleanup EXIT
+ node <evidence>/viceroy-smoke/origin.mjs
+ viceroy_pid=36403
+ <pinned-tools>/viceroy serve -C <evidence>/viceroy-smoke/fastly.toml --addr 127.0.0.1:17676 <evidence>/trusted-server-fastly.wasm
+ curl --fail --silent --show-error --retry 20 --retry-connrefused --retry-delay 1 --retry-max-time 45 --max-time 30 -H 'Host: 127.0.0.1' -D <evidence>/viceroy-smoke/headers.txt -o <evidence>/viceroy-smoke/body.html http://127.0.0.1:17676/
curl: (7) Failed to connect to 127.0.0.1 port 17676 after 0 ms: Couldn't connect to server
curl: (7) Failed to connect to 127.0.0.1 port 17676 after 0 ms: Couldn't connect to server
+ cat <evidence>/viceroy-smoke/headers.txt
HTTP/1.1 200 OK
content-type: text/html
date: Fri, 23 Oct 2026 12:24:43 GMT
connection: keep-alive
keep-alive: timeout=5
x-ts-fastly-version: 0
x-geo-city: San Francisco
x-geo-country: US
x-geo-continent: NorthAmerica
x-geo-coordinates: 37.77869,-122.39557
x-geo-region: CA
x-geo-info-available: true
x-ts-version: 149754d357901ec874eab6140e92bce3d8613085
transfer-encoding: chunked

+ node - <evidence>/viceroy-smoke
CHECK: default single mode Viceroy log must not contain Build facts:
SUCCESS: default single mode emits no Build facts log
SUCCESS: configured Viceroy page returned HTTP200, origin marker, injected JS and exact release source header; 262 bytes, sha256=faafc52e92b3981f7a899b5bb3f6d85cebcb045618bce3727bbd1be3f1b869e2
+ cleanup
+ [[ -n 36403 ]]
+ kill 36403
+ wait 36403
+ true
+ kill 36402
+ wait 36402
+ true

Full transcript: online 1 · online 2 · offline 1 · offline 2 · publisher 1

@prk-Jr

prk-Jr commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator Author

Rehearsal v0.0.0-rehearsal.9 at 149754d: passed. Fork run. Fresh lightweight tag; exact reviewed head; all seven builds/signing jobs and the publisher passed. The full independent verification also passed.

online transcript, part 1. Documented download, release/asset verification, checksums, all-seven bundle and online-store verification, both signer forms, both predicates and SPDX equality.

+ set -euo pipefail
+ REPO=prk-Jr/trusted-server
+ TAG=v0.0.0-rehearsal.9
+ COMMIT=149754d357901ec874eab6140e92bce3d8613085
+ ASSETS=(trusted-server-fastly.wasm ts-x86_64-unknown-linux-gnu ts-aarch64-apple-darwin ts-x86_64-apple-darwin trusted-server-axum-x86_64-unknown-linux-gnu trusted-server-axum-x86_64-unknown-linux-musl trusted-server-axum-aarch64-unknown-linux-gnu)
+ WORKFLOW=prk-Jr/trusted-server/.github/workflows/release-build.yml
+ IDENTITY=https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9
+ gh release download v0.0.0-rehearsal.9 --repo prk-Jr/trusted-server --dir .
+ gh api repos/prk-Jr/trusted-server/releases/tags/v0.0.0-rehearsal.9 --jq '{tag_name,draft,immutable,prerelease}'
{"draft":false,"immutable":true,"prerelease":true,"tag_name":"v0.0.0-rehearsal.9"}
++ gh api repos/prk-Jr/trusted-server/releases/tags/v0.0.0-rehearsal.9 --jq '[.draft == false,.immutable == true,.prerelease == true] | all'
+ test true = true
++ gh api repos/prk-Jr/trusted-server/releases/latest --jq .tag_name
+ latest=v0.0.0-rehearsal.5
+ test v0.0.0-rehearsal.5 '!=' v0.0.0-rehearsal.9
+ echo 'SUCCESS: published immutable prerelease; not Latest'
SUCCESS: published immutable prerelease; not Latest
+ gh release verify v0.0.0-rehearsal.9 --repo prk-Jr/trusted-server
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API
✓ Release v0.0.0-rehearsal.9 verified!

Assets
SHA256SUMS	sha256:f15abb8ea2a6f97a55f33a3407f0041219a6de04dca911d05c0c51a5bab96dfa
trusted-server-axum-aarch64-unknown-linux-gnu	sha256:53e4db0197707f0eb9476bfc00daa66c70b0797e943eba60478637f089c378a3
trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json	sha256:eee736489562e010d60937c3b9fc8ba2b921bbe1ccb5ec480479cb6233531a00
trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json	sha256:01b53644fbd0fb416f258ce3af0fe5b07cbd9e301b5716df046ae27184e7b49c
trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json	sha256:d40d586d24f28cbc28493f5ae6f32c34398bfc921a0bcc8c96bcb5fd9aeb0118
trusted-server-axum-x86_64-unknown-linux-gnu	sha256:fc29b83920e059628b941e5244e066c6d60ecb0c4385cad1c90d1248ba3d196a
trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json	sha256:46d80582edd5d769fb0e52d30663bd5c3f1476d603a8017a68cec5ec4d8cfa3d
trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json	sha256:a6018cb031267c20d6698a7a8492e0c8a4902615ba31b3a63eb1431d6d95cf05
trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json	sha256:c04db9cfb49e5bffea71703e06ecf78e342fa8e06d90c78cbcd848de331b2520
trusted-server-axum-x86_64-unknown-linux-musl	sha256:c7e71bdb740426aef585e3c941e5bced5c155fe738f61550644fa2845d3b98f9
trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json	sha256:2f74e810804abe6260f40bd227047cf3028cea84e7e154f327ff56a59cbae712
trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json	sha256:3e292050df47c9d8e852a13878e4ca07c50050dfd299059fee5137685d8639b4
trusted-server-axum-x86_64-unknown-linux-musl.spdx.json	sha256:27285b8f26b14ff4c7609ce14e3875e11ecb1311ec35712f84842de176848691
trusted-server-fastly.wasm	sha256:78219e03834c0e7617ac5f97308d2b225867ac9c7755767cf417d2251cc0bc2c
trusted-server-fastly.wasm.provenance.sigstore.json	sha256:e23b5d77ea0a930bef5a6e46137ca5029cbf42f268aa9d2559d46e49fa23dc54
trusted-server-fastly.wasm.sbom.sigstore.json	sha256:3f810ed565d7b5ee4541b83677e0aaef3ade22be60d39a1a0abf8da8d903b8c3
trusted-server-fastly.wasm.spdx.json	sha256:013f8ca5a77eab88a9297c8ef823a50593b5a424dbbad27dc7a3aee9a1df9249
ts-aarch64-apple-darwin	sha256:5081f63ede44079a0c53123fdccc480b9bd3013406d0c2efe79b1eba44c66b10
ts-aarch64-apple-darwin.provenance.sigstore.json	sha256:15830f2da77b2ff61083c817b1f59935634d1c2d158618106147ff602e11bf3b
ts-aarch64-apple-darwin.sbom.sigstore.json	sha256:ea46fd4d01afcb01f1293d962732bd15d291f9ec60bfdcc9f456976c87917216
ts-aarch64-apple-darwin.spdx.json	sha256:9e736d3568b1f1632ccebfe3939130a257f34daac5658a73b1fca21e0a8b8d03
ts-x86_64-apple-darwin	sha256:18b195caf41136d80722e6f9692679f9b05383569249d96a8e027705ec273464
ts-x86_64-apple-darwin.provenance.sigstore.json	sha256:655310407d8b1c500285c34fde8e88d65cf9c2f3d334f175a9651d28c4ea1a48
ts-x86_64-apple-darwin.sbom.sigstore.json	sha256:0c27540e842e3ad785f6e378a03b8279a314d29fa597f5778887e72327a51e74
ts-x86_64-apple-darwin.spdx.json	sha256:1db8a999611e33682a78c3b797b30a20f387dfe2aae63a834d378793eedef53d
ts-x86_64-unknown-linux-gnu	sha256:d342f1a5284049cb9055f665261c25844ad219339b25b3e87b9b4bdbe2e0f219
ts-x86_64-unknown-linux-gnu.provenance.sigstore.json	sha256:87707ae550de1d0f96eb841a699e851c2db0da983fd310a35eaa19883e2bbee8
ts-x86_64-unknown-linux-gnu.sbom.sigstore.json	sha256:924995aa9fb810d8292bc632bc96c811e04937d728d70b13dfe7a59f8fb6bd7f
ts-x86_64-unknown-linux-gnu.spdx.json	sha256:58a9f6020a9ab1af2138096982e4d1e788398eccdef6b4f9f80b5f604a1fdf80

+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 trusted-server-fastly.wasm --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm: sha256:78219e03834c0e7617ac5f97308d2b225867ac9c7755767cf417d2251cc0bc2c
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm is present in release v0.0.0-rehearsal.9
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 trusted-server-fastly.wasm.spdx.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm.spdx.json: sha256:013f8ca5a77eab88a9297c8ef823a50593b5a424dbbad27dc7a3aee9a1df9249
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm.spdx.json is present in release v0.0.0-rehearsal.9
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 trusted-server-fastly.wasm.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm.provenance.sigstore.json: sha256:e23b5d77ea0a930bef5a6e46137ca5029cbf42f268aa9d2559d46e49fa23dc54
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm.provenance.sigstore.json is present in release v0.0.0-rehearsal.9
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 trusted-server-fastly.wasm.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm.sbom.sigstore.json: sha256:3f810ed565d7b5ee4541b83677e0aaef3ade22be60d39a1a0abf8da8d903b8c3
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm.sbom.sigstore.json is present in release v0.0.0-rehearsal.9
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ echo 'SUCCESS: trusted-server-fastly.wasm provenance verified with both exact signer identities and source pins'
SUCCESS: trusted-server-fastly.wasm provenance verified with both exact signer identities and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ echo 'SUCCESS: trusted-server-fastly.wasm sbom verified with both exact signer identities and source pins'
SUCCESS: trusted-server-fastly.wasm sbom verified with both exact signer identities and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-fastly.wasm.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-fastly.wasm.sbom.verified.json
true
+ echo 'SUCCESS: trusted-server-fastly.wasm attested SPDX predicate equals published companion'
SUCCESS: trusted-server-fastly.wasm attested SPDX predicate equals published companion
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu: sha256:d342f1a5284049cb9055f665261c25844ad219339b25b3e87b9b4bdbe2e0f219
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu is present in release v0.0.0-rehearsal.9
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 ts-x86_64-unknown-linux-gnu.spdx.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu.spdx.json: sha256:58a9f6020a9ab1af2138096982e4d1e788398eccdef6b4f9f80b5f604a1fdf80
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.spdx.json is present in release v0.0.0-rehearsal.9
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu.provenance.sigstore.json: sha256:87707ae550de1d0f96eb841a699e851c2db0da983fd310a35eaa19883e2bbee8
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.provenance.sigstore.json is present in release v0.0.0-rehearsal.9
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu.sbom.sigstore.json: sha256:924995aa9fb810d8292bc632bc96c811e04937d728d70b13dfe7a59f8fb6bd7f
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.sbom.sigstore.json is present in release v0.0.0-rehearsal.9
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ echo 'SUCCESS: ts-x86_64-unknown-linux-gnu provenance verified with both exact signer identities and source pins'
SUCCESS: ts-x86_64-unknown-linux-gnu provenance verified with both exact signer identities and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ echo 'SUCCESS: ts-x86_64-unknown-linux-gnu sbom verified with both exact signer identities and source pins'
SUCCESS: ts-x86_64-unknown-linux-gnu sbom verified with both exact signer identities and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-x86_64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-unknown-linux-gnu.sbom.verified.json
true
+ echo 'SUCCESS: ts-x86_64-unknown-linux-gnu attested SPDX predicate equals published companion'
SUCCESS: ts-x86_64-unknown-linux-gnu attested SPDX predicate equals published companion
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 ts-aarch64-apple-darwin --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin: sha256:5081f63ede44079a0c53123fdccc480b9bd3013406d0c2efe79b1eba44c66b10
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin is present in release v0.0.0-rehearsal.9
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 ts-aarch64-apple-darwin.spdx.json --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin.spdx.json: sha256:9e736d3568b1f1632ccebfe3939130a257f34daac5658a73b1fca21e0a8b8d03
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin.spdx.json is present in release v0.0.0-rehearsal.9
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 ts-aarch64-apple-darwin.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin.provenance.sigstore.json: sha256:15830f2da77b2ff61083c817b1f59935634d1c2d158618106147ff602e11bf3b
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin.provenance.sigstore.json is present in release v0.0.0-rehearsal.9
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 ts-aarch64-apple-darwin.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin.sbom.sigstore.json: sha256:ea46fd4d01afcb01f1293d962732bd15d291f9ec60bfdcc9f456976c87917216
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin.sbom.sigstore.json is present in release v0.0.0-rehearsal.9
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ echo 'SUCCESS: ts-aarch64-apple-darwin provenance verified with both exact signer identities and source pins'
SUCCESS: ts-aarch64-apple-darwin provenance verified with both exact signer identities and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ echo 'SUCCESS: ts-aarch64-apple-darwin sbom verified with both exact signer identities and source pins'
SUCCESS: ts-aarch64-apple-darwin sbom verified with both exact signer identities and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-aarch64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-aarch64-apple-darwin.sbom.verified.json
true
+ echo 'SUCCESS: ts-aarch64-apple-darwin attested SPDX predicate equals published companion'
SUCCESS: ts-aarch64-apple-darwin attested SPDX predicate equals published companion
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 ts-x86_64-apple-darwin --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin: sha256:18b195caf41136d80722e6f9692679f9b05383569249d96a8e027705ec273464
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin is present in release v0.0.0-rehearsal.9
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 ts-x86_64-apple-darwin.spdx.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin.spdx.json: sha256:1db8a999611e33682a78c3b797b30a20f387dfe2aae63a834d378793eedef53d
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin.spdx.json is present in release v0.0.0-rehearsal.9
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 ts-x86_64-apple-darwin.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin.provenance.sigstore.json: sha256:655310407d8b1c500285c34fde8e88d65cf9c2f3d334f175a9651d28c4ea1a48
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin.provenance.sigstore.json is present in release v0.0.0-rehearsal.9
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 ts-x86_64-apple-darwin.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin.sbom.sigstore.json: sha256:0c27540e842e3ad785f6e378a03b8279a314d29fa597f5778887e72327a51e74
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin.sbom.sigstore.json is present in release v0.0.0-rehearsal.9
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ echo 'SUCCESS: ts-x86_64-apple-darwin provenance verified with both exact signer identities and source pins'
SUCCESS: ts-x86_64-apple-darwin provenance verified with both exact signer identities and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ echo 'SUCCESS: ts-x86_64-apple-darwin sbom verified with both exact signer identities and source pins'
SUCCESS: ts-x86_64-apple-darwin sbom verified with both exact signer identities and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-x86_64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-apple-darwin.sbom.verified.json
true
+ echo 'SUCCESS: ts-x86_64-apple-darwin attested SPDX predicate equals published companion'
SUCCESS: ts-x86_64-apple-darwin attested SPDX predicate equals published companion
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu: sha256:fc29b83920e059628b941e5244e066c6d60ecb0c4385cad1c90d1248ba3d196a
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu is present in release v0.0.0-rehearsal.9
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json: sha256:c04db9cfb49e5bffea71703e06ecf78e342fa8e06d90c78cbcd848de331b2520
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json is present in release v0.0.0-rehearsal.9
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json: sha256:46d80582edd5d769fb0e52d30663bd5c3f1476d603a8017a68cec5ec4d8cfa3d
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json is present in release v0.0.0-rehearsal.9
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json: sha256:a6018cb031267c20d6698a7a8492e0c8a4902615ba31b3a63eb1431d6d95cf05
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json is present in release v0.0.0-rehearsal.9
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu provenance verified with both exact signer identities and source pins'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu provenance verified with both exact signer identities and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu sbom verified with both exact signer identities and source pins'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu sbom verified with both exact signer identities and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-x86_64-unknown-linux-gnu.sbom.verified.json
true
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu attested SPDX predicate equals published companion'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu attested SPDX predicate equals published companion
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl: sha256:c7e71bdb740426aef585e3c941e5bced5c155fe738f61550644fa2845d3b98f9
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl is present in release v0.0.0-rehearsal.9
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 trusted-server-axum-x86_64-unknown-linux-musl.spdx.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl.spdx.json: sha256:27285b8f26b14ff4c7609ce14e3875e11ecb1311ec35712f84842de176848691
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl.spdx.json is present in release v0.0.0-rehearsal.9
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json: sha256:2f74e810804abe6260f40bd227047cf3028cea84e7e154f327ff56a59cbae712
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json is present in release v0.0.0-rehearsal.9
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json: sha256:3e292050df47c9d8e852a13878e4ca07c50050dfd299059fee5137685d8639b4
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json is present in release v0.0.0-rehearsal.9
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl provenance verified with both exact signer identities and source pins'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl provenance verified with both exact signer identities and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl sbom verified with both exact signer identities and source pins'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl sbom verified with both exact signer identities and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-x86_64-unknown-linux-musl.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-x86_64-unknown-linux-musl.sbom.verified.json
true
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl attested SPDX predicate equals published companion'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl attested SPDX predicate equals published companion
+ for asset in "${ASSETS[@]}"
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu: sha256:53e4db0197707f0eb9476bfc00daa66c70b0797e943eba60478637f089c378a3

@prk-Jr

prk-Jr commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator Author

Rehearsal v0.0.0-rehearsal.9 at 149754d: passed. Fork run. Fresh lightweight tag; exact reviewed head; all seven builds/signing jobs and the publisher passed. The full independent verification also passed.

online transcript, part 2. Documented download, release/asset verification, checksums, all-seven bundle and online-store verification, both signer forms, both predicates and SPDX equality.

Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu is present in release v0.0.0-rehearsal.9
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json: sha256:d40d586d24f28cbc28493f5ae6f32c34398bfc921a0bcc8c96bcb5fd9aeb0118
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json is present in release v0.0.0-rehearsal.9
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json: sha256:eee736489562e010d60937c3b9fc8ba2b921bbe1ccb5ec480479cb6233531a00
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json is present in release v0.0.0-rehearsal.9
+ for suffix in '' .spdx.json .provenance.sigstore.json .sbom.sigstore.json
+ gh release verify-asset v0.0.0-rehearsal.9 trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json: sha256:01b53644fbd0fb416f258ce3af0fe5b07cbd9e301b5716df046ae27184e7b49c
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json is present in release v0.0.0-rehearsal.9
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ echo 'SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu provenance verified with both exact signer identities and source pins'
SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu provenance verified with both exact signer identities and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ echo 'SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu sbom verified with both exact signer identities and source pins'
SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu sbom verified with both exact signer identities and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-aarch64-unknown-linux-gnu.sbom.verified.json
true
+ echo 'SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu attested SPDX predicate equals published companion'
SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu attested SPDX predicate equals published companion
+ gh release verify-asset v0.0.0-rehearsal.9 SHA256SUMS --repo prk-Jr/trusted-server
Calculated digest for SHA256SUMS: sha256:f15abb8ea2a6f97a55f33a3407f0041219a6de04dca911d05c0c51a5bab96dfa
Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
Loaded attestation from GitHub API

✓ Verification succeeded! SHA256SUMS is present in release v0.0.0-rehearsal.9
+ shasum -a 256 --check SHA256SUMS
trusted-server-axum-x86_64-unknown-linux-gnu: OK
trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json: OK
trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json: OK
trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json: OK
trusted-server-axum-x86_64-unknown-linux-musl: OK
trusted-server-axum-x86_64-unknown-linux-musl.spdx.json: OK
trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json: OK
trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json: OK
trusted-server-axum-aarch64-unknown-linux-gnu: OK
trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json: OK
trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json: OK
trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json: OK
trusted-server-fastly.wasm: OK
trusted-server-fastly.wasm.spdx.json: OK
trusted-server-fastly.wasm.provenance.sigstore.json: OK
trusted-server-fastly.wasm.sbom.sigstore.json: OK
ts-aarch64-apple-darwin: OK
ts-aarch64-apple-darwin.spdx.json: OK
ts-aarch64-apple-darwin.provenance.sigstore.json: OK
ts-aarch64-apple-darwin.sbom.sigstore.json: OK
ts-x86_64-apple-darwin: OK
ts-x86_64-apple-darwin.spdx.json: OK
ts-x86_64-apple-darwin.provenance.sigstore.json: OK
ts-x86_64-apple-darwin.sbom.sigstore.json: OK
ts-x86_64-unknown-linux-gnu: OK
ts-x86_64-unknown-linux-gnu.spdx.json: OK
ts-x86_64-unknown-linux-gnu.provenance.sigstore.json: OK
ts-x86_64-unknown-linux-gnu.sbom.sigstore.json: OK
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ provenance == sbom ]]
+ echo 'SUCCESS: trusted-server-fastly.wasm provenance verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: trusted-server-fastly.wasm provenance verified online WITHOUT --bundle using both exact signer identities and source pins
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-fastly.wasm.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-fastly.wasm.sbom.online-store.json
true
+ echo 'SUCCESS: trusted-server-fastly.wasm sbom verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: trusted-server-fastly.wasm sbom verified online WITHOUT --bundle using both exact signer identities and source pins
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ provenance == sbom ]]
+ echo 'SUCCESS: ts-x86_64-unknown-linux-gnu provenance verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: ts-x86_64-unknown-linux-gnu provenance verified online WITHOUT --bundle using both exact signer identities and source pins
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-x86_64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-unknown-linux-gnu.sbom.online-store.json
true
+ echo 'SUCCESS: ts-x86_64-unknown-linux-gnu sbom verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: ts-x86_64-unknown-linux-gnu sbom verified online WITHOUT --bundle using both exact signer identities and source pins
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ provenance == sbom ]]
+ echo 'SUCCESS: ts-aarch64-apple-darwin provenance verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: ts-aarch64-apple-darwin provenance verified online WITHOUT --bundle using both exact signer identities and source pins
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-aarch64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-aarch64-apple-darwin.sbom.online-store.json
true
+ echo 'SUCCESS: ts-aarch64-apple-darwin sbom verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: ts-aarch64-apple-darwin sbom verified online WITHOUT --bundle using both exact signer identities and source pins
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ provenance == sbom ]]
+ echo 'SUCCESS: ts-x86_64-apple-darwin provenance verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: ts-x86_64-apple-darwin provenance verified online WITHOUT --bundle using both exact signer identities and source pins
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-x86_64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-apple-darwin.sbom.online-store.json
true
+ echo 'SUCCESS: ts-x86_64-apple-darwin sbom verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: ts-x86_64-apple-darwin sbom verified online WITHOUT --bundle using both exact signer identities and source pins
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ provenance == sbom ]]
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu provenance verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu provenance verified online WITHOUT --bundle using both exact signer identities and source pins
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-x86_64-unknown-linux-gnu.sbom.online-store.json
true
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu sbom verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-gnu sbom verified online WITHOUT --bundle using both exact signer identities and source pins
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ provenance == sbom ]]
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl provenance verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl provenance verified online WITHOUT --bundle using both exact signer identities and source pins
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-x86_64-unknown-linux-musl.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-x86_64-unknown-linux-musl.sbom.online-store.json
true
+ echo 'SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl sbom verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: trusted-server-axum-x86_64-unknown-linux-musl sbom verified online WITHOUT --bundle using both exact signer identities and source pins
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ provenance == sbom ]]
+ echo 'SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu provenance verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu provenance verified online WITHOUT --bundle using both exact signer identities and source pins
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-aarch64-unknown-linux-gnu.sbom.online-store.json
true
+ echo 'SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu sbom verified online WITHOUT --bundle using both exact signer identities and source pins'
SUCCESS: trusted-server-axum-aarch64-unknown-linux-gnu sbom verified online WITHOUT --bundle using both exact signer identities and source pins
+ for asset in ts-aarch64-apple-darwin ts-x86_64-apple-darwin
++ /usr/bin/vtool -show-build ts-aarch64-apple-darwin
+ metadata='ts-aarch64-apple-darwin:
Load command 11
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform MACOS
    minos 13.0
      sdk 15.5
   ntools 1
     tool LD
  version 1167.5'
+ printf '%s\n' 'ts-aarch64-apple-darwin:
Load command 11
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform MACOS
    minos 13.0
      sdk 15.5
   ntools 1
     tool LD
  version 1167.5'
ts-aarch64-apple-darwin:
Load command 11
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform MACOS
    minos 13.0
      sdk 15.5
   ntools 1
     tool LD
  version 1167.5
++ printf '%s\n' 'ts-aarch64-apple-darwin:
Load command 11
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform MACOS
    minos 13.0
      sdk 15.5
   ntools 1
     tool LD
  version 1167.5'
++ awk '$1 == "minos" { print $2 }'
+ test 13.0 = 13.0
+ echo 'SUCCESS: ts-aarch64-apple-darwin minimum macOS is exactly 13.0'
SUCCESS: ts-aarch64-apple-darwin minimum macOS is exactly 13.0
+ for asset in ts-aarch64-apple-darwin ts-x86_64-apple-darwin
++ /usr/bin/vtool -show-build ts-x86_64-apple-darwin
+ metadata='ts-x86_64-apple-darwin:
Load command 11
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform MACOS
    minos 13.0
      sdk 15.5
   ntools 1
     tool LD
  version 1167.5'
+ printf '%s\n' 'ts-x86_64-apple-darwin:
Load command 11
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform MACOS
    minos 13.0
      sdk 15.5
   ntools 1
     tool LD
  version 1167.5'
ts-x86_64-apple-darwin:
Load command 11
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform MACOS
    minos 13.0
      sdk 15.5
   ntools 1
     tool LD
  version 1167.5
++ printf '%s\n' 'ts-x86_64-apple-darwin:
Load command 11
      cmd LC_BUILD_VERSION
  cmdsize 32
 platform MACOS
    minos 13.0
      sdk 15.5
   ntools 1
     tool LD
  version 1167.5'
++ awk '$1 == "minos" { print $2 }'
+ test 13.0 = 13.0
+ echo 'SUCCESS: ts-x86_64-apple-darwin minimum macOS is exactly 13.0'
SUCCESS: ts-x86_64-apple-darwin minimum macOS is exactly 13.0
+ chmod u+x ts-aarch64-apple-darwin
+ ./ts-aarch64-apple-darwin --version
ts package=0.1.0 source=149754d357901ec874eab6140e92bce3d8613085 target=aarch64-apple-darwin variant=default
++ ./ts-aarch64-apple-darwin --version
+ test 'ts package=0.1.0 source=149754d357901ec874eab6140e92bce3d8613085 target=aarch64-apple-darwin variant=default' = 'ts package=0.1.0 source=149754d357901ec874eab6140e92bce3d8613085 target=aarch64-apple-darwin variant=default'
+ echo 'SUCCESS: CLI package/source/target/variant exactly match the approved release source'
SUCCESS: CLI package/source/target/variant exactly match the approved release source
+ echo 'SUCCESS: release, all 29 assets, 28 checksums, both predicates, both signer identities, bundle verification, all-seven online store lookup and SPDX comparisons passed'
SUCCESS: release, all 29 assets, 28 checksums, both predicates, both signer identities, bundle verification, all-seven online store lookup and SPDX comparisons passed

@prk-Jr

prk-Jr commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator Author

Rehearsal v0.0.0-rehearsal.9 at 149754d: passed. Fork run. Fresh lightweight tag; exact reviewed head; all seven builds/signing jobs and the publisher passed. The full independent verification also passed.

offline transcript, part 1. Pinned gh 2.102.0. Trust-root SHA-256: 65ca537f6ed8a47fd0e560c421baa1f6c1efb8b25fc200d8c5c02c0e92eb2b9c. Independent binary pins derive from the cryptographically verified release attestation, separately from the downloaded SHA256SUMS. OS sandbox denied networking including the control request.

53e4db0197707f0eb9476bfc00daa66c70b0797e943eba60478637f089c378a3  trusted-server-axum-aarch64-unknown-linux-gnu
fc29b83920e059628b941e5244e066c6d60ecb0c4385cad1c90d1248ba3d196a  trusted-server-axum-x86_64-unknown-linux-gnu
c7e71bdb740426aef585e3c941e5bced5c155fe738f61550644fa2845d3b98f9  trusted-server-axum-x86_64-unknown-linux-musl
78219e03834c0e7617ac5f97308d2b225867ac9c7755767cf417d2251cc0bc2c  trusted-server-fastly.wasm
5081f63ede44079a0c53123fdccc480b9bd3013406d0c2efe79b1eba44c66b10  ts-aarch64-apple-darwin
18b195caf41136d80722e6f9692679f9b05383569249d96a8e027705ec273464  ts-x86_64-apple-darwin
d342f1a5284049cb9055f665261c25844ad219339b25b3e87b9b4bdbe2e0f219  ts-x86_64-unknown-linux-gnu

SUCCESS: OS sandbox denied the network control
+ REPO=prk-Jr/trusted-server
+ TAG=v0.0.0-rehearsal.9
+ COMMIT=149754d357901ec874eab6140e92bce3d8613085
+ WORKFLOW=prk-Jr/trusted-server/.github/workflows/release-build.yml
+ IDENTITY=https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9
+ ASSETS=(trusted-server-fastly.wasm ts-x86_64-unknown-linux-gnu ts-aarch64-apple-darwin ts-x86_64-apple-darwin trusted-server-axum-x86_64-unknown-linux-gnu trusted-server-axum-x86_64-unknown-linux-musl trusted-server-axum-aarch64-unknown-linux-gnu)
+ shasum -a 256 --check APPROVED_BINARY_SHA256SUMS
trusted-server-axum-aarch64-unknown-linux-gnu: OK
trusted-server-axum-x86_64-unknown-linux-gnu: OK
trusted-server-axum-x86_64-unknown-linux-musl: OK
trusted-server-fastly.wasm: OK
ts-aarch64-apple-darwin: OK
ts-x86_64-apple-darwin: OK
ts-x86_64-unknown-linux-gnu: OK
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-fastly.wasm
SUCCESS: gh attestation verify trusted-server-fastly.wasm with requested predicate, signer and source pins
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ command gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-fastly.wasm
SUCCESS: gh attestation verify trusted-server-fastly.wasm with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-fastly.wasm
SUCCESS: gh attestation verify trusted-server-fastly.wasm with requested predicate, signer and source pins
+ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ command gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --bundle trusted-server-fastly.wasm.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-fastly.wasm
SUCCESS: gh attestation verify trusted-server-fastly.wasm with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-fastly.wasm.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-fastly.wasm.offline-sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify ts-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ command gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify ts-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify ts-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ command gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify ts-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-x86_64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-unknown-linux-gnu.offline-sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-aarch64-apple-darwin
SUCCESS: gh attestation verify ts-aarch64-apple-darwin with requested predicate, signer and source pins
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ command gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-aarch64-apple-darwin
SUCCESS: gh attestation verify ts-aarch64-apple-darwin with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-aarch64-apple-darwin
SUCCESS: gh attestation verify ts-aarch64-apple-darwin with requested predicate, signer and source pins
+ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ command gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-aarch64-apple-darwin
SUCCESS: gh attestation verify ts-aarch64-apple-darwin with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-aarch64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-aarch64-apple-darwin.offline-sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-apple-darwin
SUCCESS: gh attestation verify ts-x86_64-apple-darwin with requested predicate, signer and source pins
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ command gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-apple-darwin
SUCCESS: gh attestation verify ts-x86_64-apple-darwin with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-apple-darwin
SUCCESS: gh attestation verify ts-x86_64-apple-darwin with requested predicate, signer and source pins
+ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ command gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' ts-x86_64-apple-darwin
SUCCESS: gh attestation verify ts-x86_64-apple-darwin with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document ts-x86_64-apple-darwin.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' ts-x86_64-apple-darwin.offline-sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-x86_64-unknown-linux-gnu.offline-sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-musl
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl with requested predicate, signer and source pins
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-musl
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-musl
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl with requested predicate, signer and source pins
+ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ command gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --bundle trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json

@prk-Jr

prk-Jr commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator Author

Rehearsal v0.0.0-rehearsal.9 at 149754d: passed. Fork run. Fresh lightweight tag; exact reviewed head; all seven builds/signing jobs and the publisher passed. The full independent verification also passed.

offline transcript, part 2. Pinned gh 2.102.0. Trust-root SHA-256: 65ca537f6ed8a47fd0e560c421baa1f6c1efb8b25fc200d8c5c02c0e92eb2b9c. Independent binary pins derive from the cryptographically verified release attestation, separately from the downloaded SHA256SUMS. OS sandbox denied networking including the control request.

+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-x86_64-unknown-linux-musl
SUCCESS: gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-x86_64-unknown-linux-musl.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-x86_64-unknown-linux-musl.offline-sbom-verification.json
true
+ for asset in "${ASSETS[@]}"
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ provenance == sbom ]]
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-aarch64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ command gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-aarch64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu with requested predicate, signer and source pins
+ [[ provenance == sbom ]]
+ for kind in provenance sbom
+ predicate=https://slsa.dev/provenance/v1
+ [[ sbom == sbom ]]
+ predicate=https://spdx.dev/Document/v2.3
+ checks=(--repo "$REPO" --bundle "$asset.$kind.sigstore.json" --custom-trusted-root trusted_root.jsonl --source-ref "refs/tags/$TAG" --source-digest "$COMMIT" --signer-digest "$COMMIT" --deny-self-hosted-runners --predicate-type "$predicate")
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ command gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-aarch64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu with requested predicate, signer and source pins
+ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ command gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --bundle trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --source-ref refs/tags/v0.0.0-rehearsal.9 --source-digest 149754d357901ec874eab6140e92bce3d8613085 --signer-digest 149754d357901ec874eab6140e92bce3d8613085 --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.9 --format json
+ [[ attestation verify == \a\t\t\e\s\t\a\t\i\o\n\ \v\e\r\i\f\y ]]
+ printf 'SUCCESS: gh attestation verify %s with requested predicate, signer and source pins\n' trusted-server-axum-aarch64-unknown-linux-gnu
SUCCESS: gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu with requested predicate, signer and source pins
+ [[ sbom == sbom ]]
+ jq -e --slurpfile document trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json 'length == 1 and .[0].verificationResult.statement.predicate == $document[0]' trusted-server-axum-aarch64-unknown-linux-gnu.offline-sbom-verification.json
true
+ printf '%s\n' 'SUCCESS: all seven binaries verified offline for provenance and SPDX, both signer identities, exact source pins, and SPDX predicate equality.'
SUCCESS: all seven binaries verified offline for provenance and SPDX, both signer identities, exact source pins, and SPDX predicate equality.

@prk-Jr

prk-Jr commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator Author

Rehearsal v0.0.0-rehearsal.9 at 149754d: passed. Fork run. Fresh lightweight tag; exact reviewed head; all seven builds/signing jobs and the publisher passed. The full independent verification also passed.

publisher transcript, part 1. Publisher output includes the bounded availability check, exact release-attestation binding and post-publication verification.

release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:08:59.1786620Z gh version 2.102.0 (2026-09-30)
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:08:59.1787633Z https://github.com/cli/cli/releases/tag/v2.102.0
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:09:02.7532939Z Created release ID: 421798347
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:01.6603820Z Release attestation available on first check
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:01.6605090Z Verified release: v0.0.0-rehearsal.9 signature and exact attestation bundle match
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:04.2016411Z Verified asset: trusted-server-axum-x86_64-unknown-linux-gnu Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu: sha256:fc29b83920e059628b941e5244e066c6d60ecb0c4385cad1c90d1248ba3d196a
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:04.2018475Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:04.2019358Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:04.2019762Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:04.2108866Z ✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:04.2111296Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:06.8482612Z Verified asset: trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json: sha256:c04db9cfb49e5bffea71703e06ecf78e342fa8e06d90c78cbcd848de331b2520
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:06.8485203Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:06.8486036Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:06.8486415Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:06.8487336Z ✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:06.8487953Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:09.0893823Z Verified asset: trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json: sha256:46d80582edd5d769fb0e52d30663bd5c3f1476d603a8017a68cec5ec4d8cfa3d
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:09.0896697Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:09.0897562Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:09.0897993Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:09.0899259Z ✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:09.0900616Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:11.8988011Z Verified asset: trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json: sha256:a6018cb031267c20d6698a7a8492e0c8a4902615ba31b3a63eb1431d6d95cf05
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:11.8990648Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:11.8991559Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:11.8991938Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:11.8993189Z ✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:11.8994212Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:15.0622389Z Verified asset: trusted-server-axum-x86_64-unknown-linux-musl Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl: sha256:c7e71bdb740426aef585e3c941e5bced5c155fe738f61550644fa2845d3b98f9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:15.0623692Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:15.0624269Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:15.0624524Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:15.0625254Z ✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:15.0625824Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:17.4871624Z Verified asset: trusted-server-axum-x86_64-unknown-linux-musl.spdx.json Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl.spdx.json: sha256:27285b8f26b14ff4c7609ce14e3875e11ecb1311ec35712f84842de176848691
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:17.4872943Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:17.4873508Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:17.4873753Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:17.4874507Z ✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl.spdx.json is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:17.4875096Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:19.9765097Z Verified asset: trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json: sha256:2f74e810804abe6260f40bd227047cf3028cea84e7e154f327ff56a59cbae712
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:19.9767625Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:19.9768496Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:19.9768905Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:19.9770171Z ✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:19.9771517Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:22.2472517Z Verified asset: trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json: sha256:3e292050df47c9d8e852a13878e4ca07c50050dfd299059fee5137685d8639b4
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:22.2474947Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:22.2476247Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:22.2476655Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:22.2477859Z ✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:22.2478839Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:24.8846126Z Verified asset: trusted-server-axum-aarch64-unknown-linux-gnu Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu: sha256:53e4db0197707f0eb9476bfc00daa66c70b0797e943eba60478637f089c378a3
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:24.8847376Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:24.8847894Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:24.8848406Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:24.8849112Z ✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:24.8849655Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:26.7015254Z Verified asset: trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json: sha256:d40d586d24f28cbc28493f5ae6f32c34398bfc921a0bcc8c96bcb5fd9aeb0118
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:26.7016595Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:26.7017107Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:26.7017343Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:26.7018113Z ✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:26.7018693Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:29.1450022Z Verified asset: trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json: sha256:eee736489562e010d60937c3b9fc8ba2b921bbe1ccb5ec480479cb6233531a00
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:29.1451768Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:29.1452295Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:29.1452535Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:29.1453411Z ✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:29.1454100Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:32.0576895Z Verified asset: trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json: sha256:01b53644fbd0fb416f258ce3af0fe5b07cbd9e301b5716df046ae27184e7b49c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:32.0579393Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:32.0580578Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:32.0580995Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:32.0582229Z ✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:32.0583243Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:34.7839249Z Verified asset: trusted-server-fastly.wasm Calculated digest for trusted-server-fastly.wasm: sha256:78219e03834c0e7617ac5f97308d2b225867ac9c7755767cf417d2251cc0bc2c
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:34.7840652Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:34.7841191Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:34.7841436Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:34.7842077Z ✓ Verification succeeded! trusted-server-fastly.wasm is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:34.7842540Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:37.4412667Z Verified asset: trusted-server-fastly.wasm.spdx.json Calculated digest for trusted-server-fastly.wasm.spdx.json: sha256:013f8ca5a77eab88a9297c8ef823a50593b5a424dbbad27dc7a3aee9a1df9249
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:37.4414707Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:37.4415687Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:37.4416121Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:37.4417272Z ✓ Verification succeeded! trusted-server-fastly.wasm.spdx.json is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:37.4418129Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:40.0919163Z Verified asset: trusted-server-fastly.wasm.provenance.sigstore.json Calculated digest for trusted-server-fastly.wasm.provenance.sigstore.json: sha256:e23b5d77ea0a930bef5a6e46137ca5029cbf42f268aa9d2559d46e49fa23dc54
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:40.0920953Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:40.0921488Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:40.0921729Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:40.0922456Z ✓ Verification succeeded! trusted-server-fastly.wasm.provenance.sigstore.json is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:40.0923016Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:42.6977413Z Verified asset: trusted-server-fastly.wasm.sbom.sigstore.json Calculated digest for trusted-server-fastly.wasm.sbom.sigstore.json: sha256:3f810ed565d7b5ee4541b83677e0aaef3ade22be60d39a1a0abf8da8d903b8c3
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:42.6979497Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:42.6980037Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:42.6980595Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:42.6981291Z ✓ Verification succeeded! trusted-server-fastly.wasm.sbom.sigstore.json is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:42.6981846Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:45.4476137Z Verified asset: ts-aarch64-apple-darwin Calculated digest for ts-aarch64-apple-darwin: sha256:5081f63ede44079a0c53123fdccc480b9bd3013406d0c2efe79b1eba44c66b10
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:45.4477247Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:45.4477772Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:45.4478005Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:45.4478606Z ✓ Verification succeeded! ts-aarch64-apple-darwin is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:45.4479061Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:48.0743840Z Verified asset: ts-aarch64-apple-darwin.spdx.json Calculated digest for ts-aarch64-apple-darwin.spdx.json: sha256:9e736d3568b1f1632ccebfe3939130a257f34daac5658a73b1fca21e0a8b8d03
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:48.0745759Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:48.0746661Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:48.0747113Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:48.0748062Z ✓ Verification succeeded! ts-aarch64-apple-darwin.spdx.json is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:48.0748917Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:50.4227711Z Verified asset: ts-aarch64-apple-darwin.provenance.sigstore.json Calculated digest for ts-aarch64-apple-darwin.provenance.sigstore.json: sha256:15830f2da77b2ff61083c817b1f59935634d1c2d158618106147ff602e11bf3b
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:50.4229020Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:50.4229572Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:50.4229816Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:50.4230908Z ✓ Verification succeeded! ts-aarch64-apple-darwin.provenance.sigstore.json is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:50.4231507Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:52.9584504Z Verified asset: ts-aarch64-apple-darwin.sbom.sigstore.json Calculated digest for ts-aarch64-apple-darwin.sbom.sigstore.json: sha256:ea46fd4d01afcb01f1293d962732bd15d291f9ec60bfdcc9f456976c87917216
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:52.9585717Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:52.9586228Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:52.9586465Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:52.9587320Z ✓ Verification succeeded! ts-aarch64-apple-darwin.sbom.sigstore.json is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:52.9588150Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:55.1936681Z Verified asset: ts-x86_64-apple-darwin Calculated digest for ts-x86_64-apple-darwin: sha256:18b195caf41136d80722e6f9692679f9b05383569249d96a8e027705ec273464
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:55.1938352Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:55.1939205Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:55.1939458Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:55.1940077Z ✓ Verification succeeded! ts-x86_64-apple-darwin is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:55.1940855Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:57.8506698Z Verified asset: ts-x86_64-apple-darwin.spdx.json Calculated digest for ts-x86_64-apple-darwin.spdx.json: sha256:1db8a999611e33682a78c3b797b30a20f387dfe2aae63a834d378793eedef53d
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:57.8508103Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:57.8508613Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:57.8508841Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:57.8509471Z ✓ Verification succeeded! ts-x86_64-apple-darwin.spdx.json is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:10:57.8509951Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:00.5434497Z Verified asset: ts-x86_64-apple-darwin.provenance.sigstore.json Calculated digest for ts-x86_64-apple-darwin.provenance.sigstore.json: sha256:655310407d8b1c500285c34fde8e88d65cf9c2f3d334f175a9651d28c4ea1a48
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:00.5436747Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:00.5437270Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:00.5437515Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:00.5438209Z ✓ Verification succeeded! ts-x86_64-apple-darwin.provenance.sigstore.json is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:00.5438774Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:03.0474449Z Verified asset: ts-x86_64-apple-darwin.sbom.sigstore.json Calculated digest for ts-x86_64-apple-darwin.sbom.sigstore.json: sha256:0c27540e842e3ad785f6e378a03b8279a314d29fa597f5778887e72327a51e74
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:03.0475591Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:03.0476099Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:03.0476342Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:03.0477004Z ✓ Verification succeeded! ts-x86_64-apple-darwin.sbom.sigstore.json is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:03.0477514Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:05.8725696Z Verified asset: ts-x86_64-unknown-linux-gnu Calculated digest for ts-x86_64-unknown-linux-gnu: sha256:d342f1a5284049cb9055f665261c25844ad219339b25b3e87b9b4bdbe2e0f219
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:05.8727563Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:05.8728511Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:05.8728994Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:05.8729885Z ✓ Verification succeeded! ts-x86_64-unknown-linux-gnu is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:05.8730987Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:08.5001602Z Verified asset: ts-x86_64-unknown-linux-gnu.spdx.json Calculated digest for ts-x86_64-unknown-linux-gnu.spdx.json: sha256:58a9f6020a9ab1af2138096982e4d1e788398eccdef6b4f9f80b5f604a1fdf80
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:08.5003064Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:08.5003738Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:08.5004036Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:08.5004826Z ✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.spdx.json is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:08.5005507Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:10.9919684Z Verified asset: ts-x86_64-unknown-linux-gnu.provenance.sigstore.json Calculated digest for ts-x86_64-unknown-linux-gnu.provenance.sigstore.json: sha256:87707ae550de1d0f96eb841a699e851c2db0da983fd310a35eaa19883e2bbee8
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:10.9921243Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:10.9921758Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:10.9921992Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:10.9922708Z ✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.provenance.sigstore.json is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:10.9923279Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:13.7357992Z Verified asset: ts-x86_64-unknown-linux-gnu.sbom.sigstore.json Calculated digest for ts-x86_64-unknown-linux-gnu.sbom.sigstore.json: sha256:924995aa9fb810d8292bc632bc96c811e04937d728d70b13dfe7a59f8fb6bd7f
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:13.7360073Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:13.7361244Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:13.7361639Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:13.7362726Z ✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.sbom.sigstore.json is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:13.7363345Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:16.4492146Z Verified asset: SHA256SUMS Calculated digest for SHA256SUMS: sha256:f15abb8ea2a6f97a55f33a3407f0041219a6de04dca911d05c0c51a5bab96dfa
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:16.4493066Z Resolved tag v0.0.0-rehearsal.9 to sha1:149754d357901ec874eab6140e92bce3d8613085
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:16.4493587Z Loaded attestation from GitHub API
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:16.4493819Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:16.4494343Z ✓ Verification succeeded! SHA256SUMS is present in release v0.0.0-rehearsal.9
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:16.4494724Z 
release	Verify handoff, create once, publish by release ID and verify	2026-10-23T12:11:26.4668743Z Verified post-publish re-download: all 29 assets byte-identical to signed checksums and handoff
release	Complete job	2026-10-23T12:11:28.1146775Z Cleaning up orphan processes

@prk-Jr
prk-Jr added this pull request to stack #1450 October 26, 2026 11:43
Identify the supplied host or port variable when refusing startup, without forwarding fallback warnings. Preserve EdgeZero validation and cover both port aliases with a regression test.

Retain both core module declarations when integrating the current main branch. Record that the updated binaries still require a fresh release rehearsal.
- Print Axum bind-address refusals to stderr so RUST_LOG=off
  cannot hide them; add a binary-level regression test
- Log and ignore other tags' release attestations instead of
  verifying them after publication
- Time-bound every release API read; mutations stay single-shot
- Run the CLI build-facts test in release mode in CI and compare
  the embedded source with the exact supplied commit
- Assert the v* tag gate and action pinning in both workflows
- Define COMMIT in the maintainer checklist; describe both
  attestation subjects accurately
- Make the Fastly BUILD_INFO constant private
- Supply a fictional commit to the release-mode CLI test so a
  fallback to local git cannot pass, and assert release mode
  matches the supplied control
- Anchor the publication gate assertion to the job-level if
- Document the read timeout and job-bounded mutations
@prk-Jr

prk-Jr commented Oct 27, 2026

Copy link
Copy Markdown
Collaborator Author

Phase 1 rehearsal .11 failed before draft creation

Exact reviewed head ab6e5493636fd3d1db4b22a071189070f90a189a; fork run. All seven builds and all seven signing jobs succeeded. The release job had Contents: write, then the single draft-create POST returned HTTP 403. No release or matching draft exists; .11 remains a lightweight tag at the reviewed SHA. No mutation was retried and the tag will not be reused. This does not clear the publication rehearsal gate.

success build / checks
success build / Build ts-aarch64-apple-darwin
success build / Build trusted-server-axum-x86_64-unknown-linux-musl
success build / Build trusted-server-axum-x86_64-unknown-linux-gnu
success build / Build ts-x86_64-unknown-linux-gnu
success build / Build trusted-server-axum-aarch64-unknown-linux-gnu
success build / Build trusted-server-fastly.wasm
success build / Build ts-x86_64-apple-darwin
success build / sign (trusted-server-axum-aarch64-unknown-linux-gnu)
success build / sign (ts-x86_64-unknown-linux-gnu)
success build / sign (trusted-server-axum-x86_64-unknown-linux-musl)
success build / sign (ts-x86_64-apple-darwin)
success build / sign (ts-aarch64-apple-darwin)
success build / sign (trusted-server-axum-x86_64-unknown-linux-gnu)
success build / sign (trusted-server-fastly.wasm)
failure release
GITHUB_TOKEN permissions: Contents: write; Metadata: read
release	Verify handoff, create once, publish by release ID and verify	2026-10-27T10:35:39.6017955Z Error: GitHub API failed: POST releases 403
release	Verify handoff, create once, publish by release ID and verify	2026-10-27T10:35:39.6021355Z   status: 403,
release	Verify handoff, create once, publish by release ID and verify	2026-10-27T10:35:39.6022018Z   retryAfter: null
release	Verify handoff, create once, publish by release ID and verify	2026-10-27T10:35:39.6124287Z ##[error]Process completed with exit code 1.
GET release by tag: HTTP 404
List releases including drafts: no matching .11 record

Read-only diagnosis found that this SHA is referenced only by the new tag in the fork; the successful Phase 2 .10 SHA was also a fork branch head. That is a recovery hypothesis, not an established cause. No source, token permissions or settings have changed. A fresh-tag rehearsal decision is required before another attempt.

@prk-Jr

prk-Jr commented Oct 27, 2026

Copy link
Copy Markdown
Collaborator Author

Phase 1 exact-head rehearsal .12 passed — transcript 1/2

Reviewed source ab6e5493636fd3d1db4b22a071189070f90a189a; green first attempt. Fresh lightweight tag, seven binaries / 29 immutable prerelease files, not Latest. Full source/ref/signer/certificate pins are retained, including online no-bundle and offline bundle checks. .11 was left untouched after its draft-create denial; .12 also placed the same reviewed SHA at the fork Phase 1 branch head. No source, settings or token permissions changed. This clears the exact-head rehearsal verification gate; the PR remains draft with maintainer settings/spec approval still required.

Independent trust-root acquisition:
$ gh --version
gh version 2.102.0 (2026-09-30)
https://github.com/cli/cli/releases/tag/v2.102.0
$ gh attestation trusted-root > trusted_root.jsonl
$ shasum -a 256 trusted_root.jsonl
65ca537f6ed8a47fd0e560c421baa1f6c1efb8b25fc200d8c5c02c0e92eb2b9c  trusted_root.jsonl

Full independent release verification:
$ export GODEBUG=http2client=0
$ gh --version
gh version 2.102.0 (2026-09-30)
https://github.com/cli/cli/releases/tag/v2.102.0
Phase 1 source: ab6e5493636fd3d1db4b22a071189070f90a189a
Tag: v0.0.0-rehearsal.12
Run: https://github.com/prk-Jr/trusted-server/actions/runs/40490785393
$ gh release download v0.0.0-rehearsal.12 --repo prk-Jr/trusted-server --dir .
$ gh api repos/prk-Jr/trusted-server/releases/tags/v0.0.0-rehearsal.12 > release-metadata.json
$ jq -e --arg tag v0.0.0-rehearsal.12 .immutable\ ==\ true\ and\ .prerelease\ ==\ true\ and\ .draft\ ==\ false\ and\ .tag_name\ ==\ \$tag\ and\ \(.assets\|length\)\ ==\ 29 release-metadata.json
true
PASS: exact29 uploaded assets; all API sizes/digests match; checksum coverage exactly28; no Phase2 companions
$ gh api repos/prk-Jr/trusted-server/releases/latest > latest-release.json
$ jq -e --arg tag v0.0.0-rehearsal.12 .tag_name\ \!=\ \$tag latest-release.json
true
PASS: prerelease is not Latest
$ gh release verify v0.0.0-rehearsal.12 --repo prk-Jr/trusted-server
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API
✓ Release v0.0.0-rehearsal.12 verified!

Assets
SHA256SUMS	sha256:a822122e079f00b6507887f049c089669f76ed23ccc23f0fe548e9c53048ceaa
trusted-server-axum-aarch64-unknown-linux-gnu	sha256:a0aa8058f7e906ee359299868c7e38fe0a350d124585b872a52cd57e626a731d
trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json	sha256:8b709137014cdff8bb07cefe10260cfcd1e4846057c09e598afae4dbd7e7736a
trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json	sha256:a735bd7f445fdfbc521522e42237145e208218fd7cd457d9d02340dd50f99980
trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json	sha256:4c5e93f257940755cf7a6f11e1f23a6632ddcc45ddfdc2afceddbd2492e17d4f
trusted-server-axum-x86_64-unknown-linux-gnu	sha256:ac12b412db56dbc655a4678a1a47ea1433bb78b54ebd65343a3d165f170f43d1
trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json	sha256:5f2113f586e86b23370994755e4324576e29d6e2e735a63aa1819a6e3b9f4cc0
trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json	sha256:2b639fd727439883f6b99b89c88fe0e0717eeedefa456a76ab58bd3caef86f8f
trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json	sha256:114f8d1f87d2fe1197cc8566ee4ed3dfc7e296f9fc3709a94aff3daa95064915
trusted-server-axum-x86_64-unknown-linux-musl	sha256:d41b33af1d29711ccbc90f2563e5ec1df5c85828df39ef692259df305ad7e5ae
trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json	sha256:9cdccad0dbde6432b76cadb687ee58e4ecd1c2c72e554a07fea8622b4a02d077
trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json	sha256:b199eda8c32e3cc78e809b286e0de469e1536de91a88d9e6d14e646e0baced4b
trusted-server-axum-x86_64-unknown-linux-musl.spdx.json	sha256:97166e7086a3b978635a6cededf7e01c37c3a92a1939f43f4c802c400b4ef35d
trusted-server-fastly.wasm	sha256:1a97cb5aa6b61395eab80abfecb56c795843a92d037311f8ab70f4de299e3c58
trusted-server-fastly.wasm.provenance.sigstore.json	sha256:45a617e963ae05ce0b7b7ab3945fbb01339589e23049aa6de2eedb13924d0e06
trusted-server-fastly.wasm.sbom.sigstore.json	sha256:ae7f9bdacd7098bee1697a71ff6760fc92ad75338ba6de1bf1c6388213efd6af
trusted-server-fastly.wasm.spdx.json	sha256:199f5b50fb08ce7d60ea27d10c6d04f4d3b14351f81204b2c924928aeea8737e
ts-aarch64-apple-darwin	sha256:e27113e91a119553815e4a94e4c25f851719a62487d71940f9ced6b87750e528
ts-aarch64-apple-darwin.provenance.sigstore.json	sha256:55b6579cdf77ddf1b839f8a990dea4de3a0f5ea5a7972d9628dda7e0dc985322
ts-aarch64-apple-darwin.sbom.sigstore.json	sha256:74ac098890dcd5c3eeabc3f4222cc0618a68e8ecb10a62702c49af60c61c2024
ts-aarch64-apple-darwin.spdx.json	sha256:a2e49403188c2da16aa67df1582418f9887c6e3308b5e4cd69cbb420de2550b9
ts-x86_64-apple-darwin	sha256:a6524adbab4fc0984995e13a593c37abfb36d3ee6cdca6709b29543b0784a480
ts-x86_64-apple-darwin.provenance.sigstore.json	sha256:c68c8e73e13868b9025e372791675a79491a3532cd39a3338c4e9fbf57244ea8
ts-x86_64-apple-darwin.sbom.sigstore.json	sha256:c7be8e1e912ba6adc5542e316e97236373a0abfb7005bc3921c29e7a1923edc2
ts-x86_64-apple-darwin.spdx.json	sha256:f70f40e498e5f3562d7772e201a5605b6ccbd22e3e8f73e96b2c112325af928b
ts-x86_64-unknown-linux-gnu	sha256:5ebf0932dac531885e8f417e0ddb34137e0e8b8da7b74a7ea4c80205617dfc22
ts-x86_64-unknown-linux-gnu.provenance.sigstore.json	sha256:d644d5cb102012d1fc9ee9efc97976bcdd340bb03b284f1f5a1cc1f66afa46f4
ts-x86_64-unknown-linux-gnu.sbom.sigstore.json	sha256:60e298e6ce4c6c39dd884f864db55d439e3845e905dc23786d92a530feefe799
ts-x86_64-unknown-linux-gnu.spdx.json	sha256:4be0b67dbc098523d0f51217f826210329c09572bb3dbd2cc8b9db368a252c58

$ gh release verify-asset v0.0.0-rehearsal.12 trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu: sha256:ac12b412db56dbc655a4678a1a47ea1433bb78b54ebd65343a3d165f170f43d1
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json: sha256:114f8d1f87d2fe1197cc8566ee4ed3dfc7e296f9fc3709a94aff3daa95064915
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json: sha256:5f2113f586e86b23370994755e4324576e29d6e2e735a63aa1819a6e3b9f4cc0
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json: sha256:2b639fd727439883f6b99b89c88fe0e0717eeedefa456a76ab58bd3caef86f8f
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl: sha256:d41b33af1d29711ccbc90f2563e5ec1df5c85828df39ef692259df305ad7e5ae
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 trusted-server-axum-x86_64-unknown-linux-musl.spdx.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl.spdx.json: sha256:97166e7086a3b978635a6cededf7e01c37c3a92a1939f43f4c802c400b4ef35d
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl.spdx.json is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json: sha256:9cdccad0dbde6432b76cadb687ee58e4ecd1c2c72e554a07fea8622b4a02d077
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json: sha256:b199eda8c32e3cc78e809b286e0de469e1536de91a88d9e6d14e646e0baced4b
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu: sha256:a0aa8058f7e906ee359299868c7e38fe0a350d124585b872a52cd57e626a731d
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json: sha256:4c5e93f257940755cf7a6f11e1f23a6632ddcc45ddfdc2afceddbd2492e17d4f
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json: sha256:8b709137014cdff8bb07cefe10260cfcd1e4846057c09e598afae4dbd7e7736a
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json: sha256:a735bd7f445fdfbc521522e42237145e208218fd7cd457d9d02340dd50f99980
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 trusted-server-fastly.wasm --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm: sha256:1a97cb5aa6b61395eab80abfecb56c795843a92d037311f8ab70f4de299e3c58
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 trusted-server-fastly.wasm.spdx.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm.spdx.json: sha256:199f5b50fb08ce7d60ea27d10c6d04f4d3b14351f81204b2c924928aeea8737e
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm.spdx.json is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 trusted-server-fastly.wasm.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm.provenance.sigstore.json: sha256:45a617e963ae05ce0b7b7ab3945fbb01339589e23049aa6de2eedb13924d0e06
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm.provenance.sigstore.json is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 trusted-server-fastly.wasm.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for trusted-server-fastly.wasm.sbom.sigstore.json: sha256:ae7f9bdacd7098bee1697a71ff6760fc92ad75338ba6de1bf1c6388213efd6af
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! trusted-server-fastly.wasm.sbom.sigstore.json is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 ts-aarch64-apple-darwin --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin: sha256:e27113e91a119553815e4a94e4c25f851719a62487d71940f9ced6b87750e528
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 ts-aarch64-apple-darwin.spdx.json --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin.spdx.json: sha256:a2e49403188c2da16aa67df1582418f9887c6e3308b5e4cd69cbb420de2550b9
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin.spdx.json is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 ts-aarch64-apple-darwin.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin.provenance.sigstore.json: sha256:55b6579cdf77ddf1b839f8a990dea4de3a0f5ea5a7972d9628dda7e0dc985322
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin.provenance.sigstore.json is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 ts-aarch64-apple-darwin.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-aarch64-apple-darwin.sbom.sigstore.json: sha256:74ac098890dcd5c3eeabc3f4222cc0618a68e8ecb10a62702c49af60c61c2024
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! ts-aarch64-apple-darwin.sbom.sigstore.json is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 ts-x86_64-apple-darwin --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin: sha256:a6524adbab4fc0984995e13a593c37abfb36d3ee6cdca6709b29543b0784a480
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 ts-x86_64-apple-darwin.spdx.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin.spdx.json: sha256:f70f40e498e5f3562d7772e201a5605b6ccbd22e3e8f73e96b2c112325af928b
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin.spdx.json is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 ts-x86_64-apple-darwin.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin.provenance.sigstore.json: sha256:c68c8e73e13868b9025e372791675a79491a3532cd39a3338c4e9fbf57244ea8
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin.provenance.sigstore.json is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 ts-x86_64-apple-darwin.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-apple-darwin.sbom.sigstore.json: sha256:c7be8e1e912ba6adc5542e316e97236373a0abfb7005bc3921c29e7a1923edc2
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-apple-darwin.sbom.sigstore.json is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu: sha256:5ebf0932dac531885e8f417e0ddb34137e0e8b8da7b74a7ea4c80205617dfc22
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 ts-x86_64-unknown-linux-gnu.spdx.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu.spdx.json: sha256:4be0b67dbc098523d0f51217f826210329c09572bb3dbd2cc8b9db368a252c58
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.spdx.json is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu.provenance.sigstore.json: sha256:d644d5cb102012d1fc9ee9efc97976bcdd340bb03b284f1f5a1cc1f66afa46f4
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.provenance.sigstore.json is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --repo prk-Jr/trusted-server
Calculated digest for ts-x86_64-unknown-linux-gnu.sbom.sigstore.json: sha256:60e298e6ce4c6c39dd884f864db55d439e3845e905dc23786d92a530feefe799
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! ts-x86_64-unknown-linux-gnu.sbom.sigstore.json is present in release v0.0.0-rehearsal.12
$ gh release verify-asset v0.0.0-rehearsal.12 SHA256SUMS --repo prk-Jr/trusted-server
Calculated digest for SHA256SUMS: sha256:a822122e079f00b6507887f049c089669f76ed23ccc23f0fe548e9c53048ceaa
Resolved tag v0.0.0-rehearsal.12 to sha1:ab6e5493636fd3d1db4b22a071189070f90a189a
Loaded attestation from GitHub API

✓ Verification succeeded! SHA256SUMS is present in release v0.0.0-rehearsal.12
$ shasum -a 256 --check SHA256SUMS
trusted-server-axum-x86_64-unknown-linux-gnu: OK
trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json: OK
trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json: OK
trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json: OK
trusted-server-axum-x86_64-unknown-linux-musl: OK
trusted-server-axum-x86_64-unknown-linux-musl.spdx.json: OK
trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json: OK
trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json: OK
trusted-server-axum-aarch64-unknown-linux-gnu: OK
trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json: OK
trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json: OK
trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json: OK
trusted-server-fastly.wasm: OK
trusted-server-fastly.wasm.spdx.json: OK
trusted-server-fastly.wasm.provenance.sigstore.json: OK
trusted-server-fastly.wasm.sbom.sigstore.json: OK
ts-aarch64-apple-darwin: OK
ts-aarch64-apple-darwin.spdx.json: OK
ts-aarch64-apple-darwin.provenance.sigstore.json: OK
ts-aarch64-apple-darwin.sbom.sigstore.json: OK
ts-x86_64-apple-darwin: OK
ts-x86_64-apple-darwin.spdx.json: OK
ts-x86_64-apple-darwin.provenance.sigstore.json: OK
ts-x86_64-apple-darwin.sbom.sigstore.json: OK
ts-x86_64-unknown-linux-gnu: OK
ts-x86_64-unknown-linux-gnu.spdx.json: OK
ts-x86_64-unknown-linux-gnu.provenance.sigstore.json: OK
ts-x86_64-unknown-linux-gnu.sbom.sigstore.json: OK
$ shasum -a 256 --check APPROVED_BINARY_SHA256SUMS
trusted-server-axum-aarch64-unknown-linux-gnu: OK
trusted-server-axum-x86_64-unknown-linux-gnu: OK
trusted-server-axum-x86_64-unknown-linux-musl: OK
trusted-server-fastly.wasm: OK
ts-aarch64-apple-darwin: OK
ts-x86_64-apple-darwin: OK
ts-x86_64-unknown-linux-gnu: OK
$ shasum -a 256 trusted_root.jsonl
65ca537f6ed8a47fd0e560c421baa1f6c1efb8b25fc200d8c5c02c0e92eb2b9c  trusted_root.jsonl
$ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --bundle trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --bundle trusted-server-axum-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > trusted-server-axum-x86_64-unknown-linux-gnu.offline-provenance.verified.json
$ jq -e length\ ==\ 1 trusted-server-axum-x86_64-unknown-linux-gnu.offline-provenance.verified.json
true
$ jq -e --arg invocation https://github.com/prk-Jr/trusted-server/actions/runs/40490785393/attempts/1 all\(.\[\]\;\ .verificationResult.statement.predicate.runDetails.metadata.invocationId\ ==\ \$invocation\) trusted-server-axum-x86_64-unknown-linux-gnu.offline-provenance.verified.json
true
PASS: trusted-server-axum-x86_64-unknown-linux-gnu offline provenance exact reusable signer and source pins
$ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > trusted-server-axum-x86_64-unknown-linux-gnu.online-provenance.verified.json
$ jq -e length\ ==\ 1 trusted-server-axum-x86_64-unknown-linux-gnu.online-provenance.verified.json
true
$ jq -e --arg invocation https://github.com/prk-Jr/trusted-server/actions/runs/40490785393/attempts/1 all\(.\[\]\;\ .verificationResult.statement.predicate.runDetails.metadata.invocationId\ ==\ \$invocation\) trusted-server-axum-x86_64-unknown-linux-gnu.online-provenance.verified.json
true
PASS: trusted-server-axum-x86_64-unknown-linux-gnu online provenance exact reusable signer and source pins
$ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --bundle trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --bundle trusted-server-axum-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > trusted-server-axum-x86_64-unknown-linux-gnu.offline-sbom.verified.json
$ jq -e length\ ==\ 1 trusted-server-axum-x86_64-unknown-linux-gnu.offline-sbom.verified.json
true
PASS: trusted-server-axum-x86_64-unknown-linux-gnu offline sbom exact reusable signer and source pins
$ jq -e --slurpfile document trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json length\ ==\ 1\ and\ .\[0\].verificationResult.statement.predicate\ ==\ \$document\[0\] trusted-server-axum-x86_64-unknown-linux-gnu.offline-sbom.verified.json
true
PASS: trusted-server-axum-x86_64-unknown-linux-gnu offline verified SPDX equals shipped SPDX
$ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify trusted-server-axum-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > trusted-server-axum-x86_64-unknown-linux-gnu.online-sbom.verified.json
$ jq -e length\ ==\ 1 trusted-server-axum-x86_64-unknown-linux-gnu.online-sbom.verified.json
true
PASS: trusted-server-axum-x86_64-unknown-linux-gnu online sbom exact reusable signer and source pins
$ jq -e --slurpfile document trusted-server-axum-x86_64-unknown-linux-gnu.spdx.json length\ ==\ 1\ and\ .\[0\].verificationResult.statement.predicate\ ==\ \$document\[0\] trusted-server-axum-x86_64-unknown-linux-gnu.online-sbom.verified.json
true
PASS: trusted-server-axum-x86_64-unknown-linux-gnu online verified SPDX equals shipped SPDX
$ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --bundle trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --bundle trusted-server-axum-x86_64-unknown-linux-musl.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > trusted-server-axum-x86_64-unknown-linux-musl.offline-provenance.verified.json
$ jq -e length\ ==\ 1 trusted-server-axum-x86_64-unknown-linux-musl.offline-provenance.verified.json
true
$ jq -e --arg invocation https://github.com/prk-Jr/trusted-server/actions/runs/40490785393/attempts/1 all\(.\[\]\;\ .verificationResult.statement.predicate.runDetails.metadata.invocationId\ ==\ \$invocation\) trusted-server-axum-x86_64-unknown-linux-musl.offline-provenance.verified.json
true
PASS: trusted-server-axum-x86_64-unknown-linux-musl offline provenance exact reusable signer and source pins
$ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > trusted-server-axum-x86_64-unknown-linux-musl.online-provenance.verified.json
$ jq -e length\ ==\ 1 trusted-server-axum-x86_64-unknown-linux-musl.online-provenance.verified.json
true
$ jq -e --arg invocation https://github.com/prk-Jr/trusted-server/actions/runs/40490785393/attempts/1 all\(.\[\]\;\ .verificationResult.statement.predicate.runDetails.metadata.invocationId\ ==\ \$invocation\) trusted-server-axum-x86_64-unknown-linux-musl.online-provenance.verified.json
true
PASS: trusted-server-axum-x86_64-unknown-linux-musl online provenance exact reusable signer and source pins
$ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --bundle trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --bundle trusted-server-axum-x86_64-unknown-linux-musl.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > trusted-server-axum-x86_64-unknown-linux-musl.offline-sbom.verified.json
$ jq -e length\ ==\ 1 trusted-server-axum-x86_64-unknown-linux-musl.offline-sbom.verified.json
true
PASS: trusted-server-axum-x86_64-unknown-linux-musl offline sbom exact reusable signer and source pins
$ jq -e --slurpfile document trusted-server-axum-x86_64-unknown-linux-musl.spdx.json length\ ==\ 1\ and\ .\[0\].verificationResult.statement.predicate\ ==\ \$document\[0\] trusted-server-axum-x86_64-unknown-linux-musl.offline-sbom.verified.json
true
PASS: trusted-server-axum-x86_64-unknown-linux-musl offline verified SPDX equals shipped SPDX
$ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify trusted-server-axum-x86_64-unknown-linux-musl --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > trusted-server-axum-x86_64-unknown-linux-musl.online-sbom.verified.json
$ jq -e length\ ==\ 1 trusted-server-axum-x86_64-unknown-linux-musl.online-sbom.verified.json
true
PASS: trusted-server-axum-x86_64-unknown-linux-musl online sbom exact reusable signer and source pins
$ jq -e --slurpfile document trusted-server-axum-x86_64-unknown-linux-musl.spdx.json length\ ==\ 1\ and\ .\[0\].verificationResult.statement.predicate\ ==\ \$document\[0\] trusted-server-axum-x86_64-unknown-linux-musl.online-sbom.verified.json
true
PASS: trusted-server-axum-x86_64-unknown-linux-musl online verified SPDX equals shipped SPDX
$ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --bundle trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --bundle trusted-server-axum-aarch64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > trusted-server-axum-aarch64-unknown-linux-gnu.offline-provenance.verified.json
$ jq -e length\ ==\ 1 trusted-server-axum-aarch64-unknown-linux-gnu.offline-provenance.verified.json
true
$ jq -e --arg invocation https://github.com/prk-Jr/trusted-server/actions/runs/40490785393/attempts/1 all\(.\[\]\;\ .verificationResult.statement.predicate.runDetails.metadata.invocationId\ ==\ \$invocation\) trusted-server-axum-aarch64-unknown-linux-gnu.offline-provenance.verified.json
true
PASS: trusted-server-axum-aarch64-unknown-linux-gnu offline provenance exact reusable signer and source pins
$ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > trusted-server-axum-aarch64-unknown-linux-gnu.online-provenance.verified.json
$ jq -e length\ ==\ 1 trusted-server-axum-aarch64-unknown-linux-gnu.online-provenance.verified.json
true
$ jq -e --arg invocation https://github.com/prk-Jr/trusted-server/actions/runs/40490785393/attempts/1 all\(.\[\]\;\ .verificationResult.statement.predicate.runDetails.metadata.invocationId\ ==\ \$invocation\) trusted-server-axum-aarch64-unknown-linux-gnu.online-provenance.verified.json
true
PASS: trusted-server-axum-aarch64-unknown-linux-gnu online provenance exact reusable signer and source pins
$ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --bundle trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --bundle trusted-server-axum-aarch64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > trusted-server-axum-aarch64-unknown-linux-gnu.offline-sbom.verified.json
$ jq -e length\ ==\ 1 trusted-server-axum-aarch64-unknown-linux-gnu.offline-sbom.verified.json
true
PASS: trusted-server-axum-aarch64-unknown-linux-gnu offline sbom exact reusable signer and source pins
$ jq -e --slurpfile document trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json length\ ==\ 1\ and\ .\[0\].verificationResult.statement.predicate\ ==\ \$document\[0\] trusted-server-axum-aarch64-unknown-linux-gnu.offline-sbom.verified.json
true
PASS: trusted-server-axum-aarch64-unknown-linux-gnu offline verified SPDX equals shipped SPDX
$ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify trusted-server-axum-aarch64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > trusted-server-axum-aarch64-unknown-linux-gnu.online-sbom.verified.json
$ jq -e length\ ==\ 1 trusted-server-axum-aarch64-unknown-linux-gnu.online-sbom.verified.json
true
PASS: trusted-server-axum-aarch64-unknown-linux-gnu online sbom exact reusable signer and source pins
$ jq -e --slurpfile document trusted-server-axum-aarch64-unknown-linux-gnu.spdx.json length\ ==\ 1\ and\ .\[0\].verificationResult.statement.predicate\ ==\ \$document\[0\] trusted-server-axum-aarch64-unknown-linux-gnu.online-sbom.verified.json
true
PASS: trusted-server-axum-aarch64-unknown-linux-gnu online verified SPDX equals shipped SPDX
$ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --bundle trusted-server-fastly.wasm.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --bundle trusted-server-fastly.wasm.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > trusted-server-fastly.wasm.offline-provenance.verified.json
$ jq -e length\ ==\ 1 trusted-server-fastly.wasm.offline-provenance.verified.json
true
$ jq -e --arg invocation https://github.com/prk-Jr/trusted-server/actions/runs/40490785393/attempts/1 all\(.\[\]\;\ .verificationResult.statement.predicate.runDetails.metadata.invocationId\ ==\ \$invocation\) trusted-server-fastly.wasm.offline-provenance.verified.json
true
PASS: trusted-server-fastly.wasm offline provenance exact reusable signer and source pins

@prk-Jr

prk-Jr commented Oct 27, 2026

Copy link
Copy Markdown
Collaborator Author

Phase 1 exact-head rehearsal .12 passed — transcript 2/2

Reviewed source ab6e5493636fd3d1db4b22a071189070f90a189a; green first attempt. Fresh lightweight tag, seven binaries / 29 immutable prerelease files, not Latest. Full source/ref/signer/certificate pins are retained, including online no-bundle and offline bundle checks. .11 was left untouched after its draft-create denial; .12 also placed the same reviewed SHA at the fork Phase 1 branch head. No source, settings or token permissions changed. This clears the exact-head rehearsal verification gate; the PR remains draft with maintainer settings/spec approval still required.

$ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > trusted-server-fastly.wasm.online-provenance.verified.json
$ jq -e length\ ==\ 1 trusted-server-fastly.wasm.online-provenance.verified.json
true
$ jq -e --arg invocation https://github.com/prk-Jr/trusted-server/actions/runs/40490785393/attempts/1 all\(.\[\]\;\ .verificationResult.statement.predicate.runDetails.metadata.invocationId\ ==\ \$invocation\) trusted-server-fastly.wasm.online-provenance.verified.json
true
PASS: trusted-server-fastly.wasm online provenance exact reusable signer and source pins
$ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --bundle trusted-server-fastly.wasm.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --bundle trusted-server-fastly.wasm.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > trusted-server-fastly.wasm.offline-sbom.verified.json
$ jq -e length\ ==\ 1 trusted-server-fastly.wasm.offline-sbom.verified.json
true
PASS: trusted-server-fastly.wasm offline sbom exact reusable signer and source pins
$ jq -e --slurpfile document trusted-server-fastly.wasm.spdx.json length\ ==\ 1\ and\ .\[0\].verificationResult.statement.predicate\ ==\ \$document\[0\] trusted-server-fastly.wasm.offline-sbom.verified.json
true
PASS: trusted-server-fastly.wasm offline verified SPDX equals shipped SPDX
$ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify trusted-server-fastly.wasm --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > trusted-server-fastly.wasm.online-sbom.verified.json
$ jq -e length\ ==\ 1 trusted-server-fastly.wasm.online-sbom.verified.json
true
PASS: trusted-server-fastly.wasm online sbom exact reusable signer and source pins
$ jq -e --slurpfile document trusted-server-fastly.wasm.spdx.json length\ ==\ 1\ and\ .\[0\].verificationResult.statement.predicate\ ==\ \$document\[0\] trusted-server-fastly.wasm.online-sbom.verified.json
true
PASS: trusted-server-fastly.wasm online verified SPDX equals shipped SPDX
$ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --bundle ts-aarch64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > ts-aarch64-apple-darwin.offline-provenance.verified.json
$ jq -e length\ ==\ 1 ts-aarch64-apple-darwin.offline-provenance.verified.json
true
$ jq -e --arg invocation https://github.com/prk-Jr/trusted-server/actions/runs/40490785393/attempts/1 all\(.\[\]\;\ .verificationResult.statement.predicate.runDetails.metadata.invocationId\ ==\ \$invocation\) ts-aarch64-apple-darwin.offline-provenance.verified.json
true
PASS: ts-aarch64-apple-darwin offline provenance exact reusable signer and source pins
$ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > ts-aarch64-apple-darwin.online-provenance.verified.json
$ jq -e length\ ==\ 1 ts-aarch64-apple-darwin.online-provenance.verified.json
true
$ jq -e --arg invocation https://github.com/prk-Jr/trusted-server/actions/runs/40490785393/attempts/1 all\(.\[\]\;\ .verificationResult.statement.predicate.runDetails.metadata.invocationId\ ==\ \$invocation\) ts-aarch64-apple-darwin.online-provenance.verified.json
true
PASS: ts-aarch64-apple-darwin online provenance exact reusable signer and source pins
$ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --bundle ts-aarch64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > ts-aarch64-apple-darwin.offline-sbom.verified.json
$ jq -e length\ ==\ 1 ts-aarch64-apple-darwin.offline-sbom.verified.json
true
PASS: ts-aarch64-apple-darwin offline sbom exact reusable signer and source pins
$ jq -e --slurpfile document ts-aarch64-apple-darwin.spdx.json length\ ==\ 1\ and\ .\[0\].verificationResult.statement.predicate\ ==\ \$document\[0\] ts-aarch64-apple-darwin.offline-sbom.verified.json
true
PASS: ts-aarch64-apple-darwin offline verified SPDX equals shipped SPDX
$ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify ts-aarch64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > ts-aarch64-apple-darwin.online-sbom.verified.json
$ jq -e length\ ==\ 1 ts-aarch64-apple-darwin.online-sbom.verified.json
true
PASS: ts-aarch64-apple-darwin online sbom exact reusable signer and source pins
$ jq -e --slurpfile document ts-aarch64-apple-darwin.spdx.json length\ ==\ 1\ and\ .\[0\].verificationResult.statement.predicate\ ==\ \$document\[0\] ts-aarch64-apple-darwin.online-sbom.verified.json
true
PASS: ts-aarch64-apple-darwin online verified SPDX equals shipped SPDX
$ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --bundle ts-x86_64-apple-darwin.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > ts-x86_64-apple-darwin.offline-provenance.verified.json
$ jq -e length\ ==\ 1 ts-x86_64-apple-darwin.offline-provenance.verified.json
true
$ jq -e --arg invocation https://github.com/prk-Jr/trusted-server/actions/runs/40490785393/attempts/1 all\(.\[\]\;\ .verificationResult.statement.predicate.runDetails.metadata.invocationId\ ==\ \$invocation\) ts-x86_64-apple-darwin.offline-provenance.verified.json
true
PASS: ts-x86_64-apple-darwin offline provenance exact reusable signer and source pins
$ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > ts-x86_64-apple-darwin.online-provenance.verified.json
$ jq -e length\ ==\ 1 ts-x86_64-apple-darwin.online-provenance.verified.json
true
$ jq -e --arg invocation https://github.com/prk-Jr/trusted-server/actions/runs/40490785393/attempts/1 all\(.\[\]\;\ .verificationResult.statement.predicate.runDetails.metadata.invocationId\ ==\ \$invocation\) ts-x86_64-apple-darwin.online-provenance.verified.json
true
PASS: ts-x86_64-apple-darwin online provenance exact reusable signer and source pins
$ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --bundle ts-x86_64-apple-darwin.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > ts-x86_64-apple-darwin.offline-sbom.verified.json
$ jq -e length\ ==\ 1 ts-x86_64-apple-darwin.offline-sbom.verified.json
true
PASS: ts-x86_64-apple-darwin offline sbom exact reusable signer and source pins
$ jq -e --slurpfile document ts-x86_64-apple-darwin.spdx.json length\ ==\ 1\ and\ .\[0\].verificationResult.statement.predicate\ ==\ \$document\[0\] ts-x86_64-apple-darwin.offline-sbom.verified.json
true
PASS: ts-x86_64-apple-darwin offline verified SPDX equals shipped SPDX
$ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify ts-x86_64-apple-darwin --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > ts-x86_64-apple-darwin.online-sbom.verified.json
$ jq -e length\ ==\ 1 ts-x86_64-apple-darwin.online-sbom.verified.json
true
PASS: ts-x86_64-apple-darwin online sbom exact reusable signer and source pins
$ jq -e --slurpfile document ts-x86_64-apple-darwin.spdx.json length\ ==\ 1\ and\ .\[0\].verificationResult.statement.predicate\ ==\ \$document\[0\] ts-x86_64-apple-darwin.online-sbom.verified.json
true
PASS: ts-x86_64-apple-darwin online verified SPDX equals shipped SPDX
$ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --bundle ts-x86_64-unknown-linux-gnu.provenance.sigstore.json --custom-trusted-root trusted_root.jsonl --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > ts-x86_64-unknown-linux-gnu.offline-provenance.verified.json
$ jq -e length\ ==\ 1 ts-x86_64-unknown-linux-gnu.offline-provenance.verified.json
true
$ jq -e --arg invocation https://github.com/prk-Jr/trusted-server/actions/runs/40490785393/attempts/1 all\(.\[\]\;\ .verificationResult.statement.predicate.runDetails.metadata.invocationId\ ==\ \$invocation\) ts-x86_64-unknown-linux-gnu.offline-provenance.verified.json
true
PASS: ts-x86_64-unknown-linux-gnu offline provenance exact reusable signer and source pins
$ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://slsa.dev/provenance/v1 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > ts-x86_64-unknown-linux-gnu.online-provenance.verified.json
$ jq -e length\ ==\ 1 ts-x86_64-unknown-linux-gnu.online-provenance.verified.json
true
$ jq -e --arg invocation https://github.com/prk-Jr/trusted-server/actions/runs/40490785393/attempts/1 all\(.\[\]\;\ .verificationResult.statement.predicate.runDetails.metadata.invocationId\ ==\ \$invocation\) ts-x86_64-unknown-linux-gnu.online-provenance.verified.json
true
PASS: ts-x86_64-unknown-linux-gnu online provenance exact reusable signer and source pins
$ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --bundle ts-x86_64-unknown-linux-gnu.sbom.sigstore.json --custom-trusted-root trusted_root.jsonl --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > ts-x86_64-unknown-linux-gnu.offline-sbom.verified.json
$ jq -e length\ ==\ 1 ts-x86_64-unknown-linux-gnu.offline-sbom.verified.json
true
PASS: ts-x86_64-unknown-linux-gnu offline sbom exact reusable signer and source pins
$ jq -e --slurpfile document ts-x86_64-unknown-linux-gnu.spdx.json length\ ==\ 1\ and\ .\[0\].verificationResult.statement.predicate\ ==\ \$document\[0\] ts-x86_64-unknown-linux-gnu.offline-sbom.verified.json
true
PASS: ts-x86_64-unknown-linux-gnu offline verified SPDX equals shipped SPDX
$ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --signer-workflow prk-Jr/trusted-server/.github/workflows/release-build.yml
$ gh attestation verify ts-x86_64-unknown-linux-gnu --repo prk-Jr/trusted-server --source-ref refs/tags/v0.0.0-rehearsal.12 --source-digest ab6e5493636fd3d1db4b22a071189070f90a189a --signer-digest ab6e5493636fd3d1db4b22a071189070f90a189a --deny-self-hosted-runners --predicate-type https://spdx.dev/Document/v2.3 --cert-identity https://github.com/prk-Jr/trusted-server/.github/workflows/release-build.yml@refs/tags/v0.0.0-rehearsal.12 --format json > ts-x86_64-unknown-linux-gnu.online-sbom.verified.json
$ jq -e length\ ==\ 1 ts-x86_64-unknown-linux-gnu.online-sbom.verified.json
true
PASS: ts-x86_64-unknown-linux-gnu online sbom exact reusable signer and source pins
$ jq -e --slurpfile document ts-x86_64-unknown-linux-gnu.spdx.json length\ ==\ 1\ and\ .\[0\].verificationResult.statement.predicate\ ==\ \$document\[0\] ts-x86_64-unknown-linux-gnu.online-sbom.verified.json
true
PASS: ts-x86_64-unknown-linux-gnu online verified SPDX equals shipped SPDX
$ file trusted-server-axum-x86_64-unknown-linux-gnu trusted-server-axum-x86_64-unknown-linux-musl trusted-server-axum-aarch64-unknown-linux-gnu trusted-server-fastly.wasm ts-aarch64-apple-darwin ts-x86_64-apple-darwin ts-x86_64-unknown-linux-gnu
trusted-server-axum-x86_64-unknown-linux-gnu:  ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=e6d23d7ec8af3bb4cfea1b9b928e0411c5e3a7d7, with debug_info, not stripped
trusted-server-axum-x86_64-unknown-linux-musl: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), static-pie linked, with debug_info, not stripped
trusted-server-axum-aarch64-unknown-linux-gnu: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=4755048e25bb9ac4e0888599cc24537830a72486, for GNU/Linux 3.7.0, with debug_info, not stripped
trusted-server-fastly.wasm:                    WebAssembly (wasm) binary module version 0x1 (MVP)
ts-aarch64-apple-darwin:                       Mach-O 64-bit executable arm64
ts-x86_64-apple-darwin:                        Mach-O 64-bit executable x86_64
ts-x86_64-unknown-linux-gnu:                   ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=c934e04f78e8ca7754a48dad58429e899dba28a3, with debug_info, not stripped
$ ./ts-aarch64-apple-darwin --version
ts package=0.1.0 source=ab6e5493636fd3d1db4b22a071189070f90a189a target=aarch64-apple-darwin variant=default
PASS: exact Phase1 release verification at ab6e5493636fd3d1db4b22a071189070f90a189a with v0.0.0-rehearsal.12

Same-source native and publisher evidence:

macos-intel:
build / Build ts-x86_64-apple-darwin	UNKNOWN STEP	2026-10-27T11:07:05.1652600Z SUCCESS: Mach-O target and macOS minimum OS 13.0: x86_64-apple-darwin
build / Build ts-x86_64-apple-darwin	UNKNOWN STEP	2026-10-27T11:07:05.1660100Z SUCCESS: final-byte checks x86_64-apple-darwin 
build / Build ts-x86_64-apple-darwin	UNKNOWN STEP	2026-10-27T11:07:05.1869330Z SUCCESS: ts package=0.1.0 source=ab6e5493636fd3d1db4b22a071189070f90a189a target=x86_64-apple-darwin variant=default

macos-arm:
build / Build ts-aarch64-apple-darwin	UNKNOWN STEP	2026-10-27T10:54:03.6565060Z SUCCESS: Mach-O target and macOS minimum OS 13.0: aarch64-apple-darwin
build / Build ts-aarch64-apple-darwin	UNKNOWN STEP	2026-10-27T10:54:03.6567570Z SUCCESS: final-byte checks aarch64-apple-darwin 
build / Build ts-aarch64-apple-darwin	UNKNOWN STEP	2026-10-27T10:54:03.6726650Z SUCCESS: ts package=0.1.0 source=ab6e5493636fd3d1db4b22a071189070f90a189a target=aarch64-apple-darwin variant=default

cli-linux:
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-27T10:52:33.0991925Z SUCCESS: final-byte checks x86_64-unknown-linux-gnu GLIBC_2.34 GLIBC_2.2.5 GLIBC_2.14 GLIBC_2.3 GLIBC_2.29 GLIBC_2.3.4 GLIBC_2.33 GLIBC_2.28 GLIBC_2.7 GLIBC_2.16 GLIBC_2.10 GLIBC_2.3.2 GLIBC_2.9 GLIBC_2.30 GLIBC_2.4 GLIBC_2.17 GLIBC_2.15 GLIBC_2.32 GLIBC_2.25 GLIBC_2.18 GLIBC_2.5 GLIBC_2.27
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-27T10:52:33.1028743Z SUCCESS: ts package=0.1.0 source=ab6e5493636fd3d1db4b22a071189070f90a189a target=x86_64-unknown-linux-gnu variant=default
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-27T10:52:35.4624869Z SUCCESS: ts package=0.1.0 source=ab6e5493636fd3d1db4b22a071189070f90a189a target=x86_64-unknown-linux-gnu variant=default
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-27T10:52:37.0626121Z SUCCESS: ts package=0.1.0 source=ab6e5493636fd3d1db4b22a071189070f90a189a target=x86_64-unknown-linux-gnu variant=default
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-27T10:52:38.6062591Z SUCCESS: ts package=0.1.0 source=ab6e5493636fd3d1db4b22a071189070f90a189a target=x86_64-unknown-linux-gnu variant=default

axum:
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-27T10:47:57.2143857Z SUCCESS: final-byte checks x86_64-unknown-linux-gnu GLIBC_2.34 GLIBC_2.2.5 GLIBC_2.14 GLIBC_2.3 GLIBC_2.27 GLIBC_2.29 GLIBC_2.7 GLIBC_2.16 GLIBC_2.33 GLIBC_2.3.4 GLIBC_2.10 GLIBC_2.3.2 GLIBC_2.9 GLIBC_2.30 GLIBC_2.17 GLIBC_2.32 GLIBC_2.28 GLIBC_2.25 GLIBC_2.18
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-27T10:48:00.2183885Z SUCCESS: Axum rejects EDGEZERO__ADAPTER__PORT=0; exit 1, ports must be 1–65535: sha256:8da84df25d28176be84164040cd45e128c6b4c6a80b7d7cbe17fe2b9f198efc2
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-27T10:48:00.3195328Z SUCCESS: Axum rejects PORT=0; exit 1, ports must be 1–65535: sha256:8da84df25d28176be84164040cd45e128c6b4c6a80b7d7cbe17fe2b9f198efc2
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-27T10:48:00.4701200Z SUCCESS: Axum bound to 0.0.0.0:8080; host reached published container port, HTTP 200 ok: debian:12-slim@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8 sha256:8da84df25d28176be84164040cd45e128c6b4c6a80b7d7cbe17fe2b9f198efc2
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-27T10:48:02.5330613Z SUCCESS: Axum rejects EDGEZERO__ADAPTER__PORT=0; exit 1, ports must be 1–65535: sha256:cee13550f97b8a595506e8e4ca74263ba44924248779a4ba4f942e197652acff
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-27T10:48:02.6710136Z SUCCESS: Axum rejects PORT=0; exit 1, ports must be 1–65535: sha256:cee13550f97b8a595506e8e4ca74263ba44924248779a4ba4f942e197652acff
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-27T10:48:02.7868698Z SUCCESS: Axum bound to 0.0.0.0:8080; host reached published container port, HTTP 200 ok: ubuntu:22.04@sha256:0a9887931b0e38af2e3487ed39e29436b0535c4f3f52e57745baaf79d1898956 sha256:cee13550f97b8a595506e8e4ca74263ba44924248779a4ba4f942e197652acff
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-27T10:48:05.5344405Z SUCCESS: Axum rejects EDGEZERO__ADAPTER__PORT=0; exit 1, ports must be 1–65535: sha256:a2c5a85865a585c3bc8b10f6c269358fdf89fe32be4232885166889d85c76421
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-27T10:48:05.6364699Z SUCCESS: Axum rejects PORT=0; exit 1, ports must be 1–65535: sha256:a2c5a85865a585c3bc8b10f6c269358fdf89fe32be4232885166889d85c76421
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-27T10:48:05.7863405Z SUCCESS: Axum bound to 0.0.0.0:8080; host reached published container port, HTTP 200 ok: registry.access.redhat.com/ubi9/ubi-minimal:9.6@sha256:34880b64c07f28f64d95737f82f891516de9a3b43583f39970f7bf8e4cfa48b7 sha256:a2c5a85865a585c3bc8b10f6c269358fdf89fe32be4232885166889d85c76421

axum-arm:
build / Build trusted-server-axum-aarch64-unknown-linux-gnu	UNKNOWN STEP	2026-10-27T10:48:18.6394066Z SUCCESS: final-byte checks aarch64-unknown-linux-gnu GLIBC_2.17 GLIBC_2.33 GLIBC_2.34 GLIBC_2.29 GLIBC_2.28 GLIBC_2.30 GLIBC_2.27 GLIBC_2.18 GLIBC_2.25 GLIBC_2.32
build / Build trusted-server-axum-aarch64-unknown-linux-gnu	UNKNOWN STEP	2026-10-27T10:48:21.8037384Z SUCCESS: Axum rejects EDGEZERO__ADAPTER__PORT=0; exit 1, ports must be 1–65535: sha256:28fe65558df3e10c89e7d685cb86544cdc138f242d12100c5b0981f92aae0853
build / Build trusted-server-axum-aarch64-unknown-linux-gnu	UNKNOWN STEP	2026-10-27T10:48:21.9269358Z SUCCESS: Axum rejects PORT=0; exit 1, ports must be 1–65535: sha256:28fe65558df3e10c89e7d685cb86544cdc138f242d12100c5b0981f92aae0853
build / Build trusted-server-axum-aarch64-unknown-linux-gnu	UNKNOWN STEP	2026-10-27T10:48:22.2998229Z SUCCESS: Axum bound to 0.0.0.0:8080; host reached published container port, HTTP 200 ok: debian:12-slim@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8 sha256:28fe65558df3e10c89e7d685cb86544cdc138f242d12100c5b0981f92aae0853

axum-musl:
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-27T10:47:40.4714020Z SUCCESS: final-byte checks x86_64-unknown-linux-musl 
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-27T10:47:44.0438969Z SUCCESS: Axum rejects EDGEZERO__ADAPTER__PORT=0; exit 1, ports must be 1–65535: sha256:706db57fb2063f39f69632c5b5c9c439633fda35110e65587c5d85553fd1cc38
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-27T10:47:44.1870531Z SUCCESS: Axum rejects PORT=0; exit 1, ports must be 1–65535: sha256:706db57fb2063f39f69632c5b5c9c439633fda35110e65587c5d85553fd1cc38
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-27T10:47:44.3526215Z SUCCESS: Axum bound to 0.0.0.0:8080; host reached published container port, HTTP 200 ok: alpine:3.22.2@sha256:4b7ce07002c69e8f3d704a9c5d6fd3053be500b7f1c69fc0d80990c2ad8dd412 sha256:706db57fb2063f39f69632c5b5c9c439633fda35110e65587c5d85553fd1cc38
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-27T10:47:44.5905060Z SUCCESS: Axum rejects EDGEZERO__ADAPTER__PORT=0; exit 1, ports must be 1–65535: sha256:bfe50f82a1ac91084d2c7ef8af86fc075427270a89899d8076caa5c90797bfd5
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-27T10:47:44.6943305Z SUCCESS: Axum rejects PORT=0; exit 1, ports must be 1–65535: sha256:bfe50f82a1ac91084d2c7ef8af86fc075427270a89899d8076caa5c90797bfd5
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-27T10:47:44.8170886Z SUCCESS: Axum bound to 0.0.0.0:8080; host reached published container port, HTTP 200 ok: scratch sha256:bfe50f82a1ac91084d2c7ef8af86fc075427270a89899d8076caa5c90797bfd5

fastly:
build / Build trusted-server-fastly.wasm	UNKNOWN STEP	2026-10-27T10:47:25.3590024Z SUCCESS: final-byte checks wasm32-wasip1 

release	Verify handoff, create once, publish by release ID and verify	2026-10-27T11:13:15.2636313Z Verified post-publish re-download: all 29 assets byte-identical to signed checksums and handoff

This branch has not been deployed

No deployments
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.

1 participant