Skip to content

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

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

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

Conversation

@prk-Jr

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

Copy link
Copy Markdown
Collaborator

Summary

  • Publish seven binaries with SPDX 2.3, fourteen real signature bundles and SHA256SUMS: 29 files.
  • Add reviewed immutable build facts, runtime Axum container binding, macOS 13 checks and digest-pinned startup smokes.
  • Gate signing/publication on maintainer enablement; hyphenated tags are prereleases, never Latest. Bound attestation availability waits; verify exact signed release/source/assets.

Changes

Files Change
release*.yml, format.yml, phase1* Build/sign/publish isolation, format/config/SBOM checks and failure tests.
Core, CLI and Fastly Rust files Slice 2.3 source/target/package/variant facts from #1262.
Axum main.rs Runtime host/port aliases, safe loopback default, invalid/conflicting-value tests.
Cohort/policies, guides, changelog, phase notes/map, AGENTS.md, domains.rs Compatibility boundaries, operator steps, CI gates and reference-host review.

Size versus main: 36 new files / 10,093 lines, existing +567/−50. Code accounting: 958 Rust lines + 2508 workflow/script/test/cohort lines = 3466 (full new files plus additions to existing; includes domains/cohort). Ceiling waived; scope unchanged.

Full 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 — a501d1ba6

a501d1ba6: docs-only since rehearsed 149754d35. Docs/Markdown formatting, staged/committed domain lint and independent documentation/workflow review passed. Hosted CI: all six workflows and seven builds passed; signing/publication skipped.

149754d35: all local project gates, 19 release tests and all upstream CI passed. Rehearsal .9 passed at this exact implementation SHA: 29 immutable prerelease assets; both predicates/identities online and offline; SPDX/checksums; published-byte re-download comparison; port 8080/zero checks; macOS/CLI checks; Fastly packaging and visible Viceroy no-Build-facts proof. Full transcript. Tests only, not live-proven: the HTTP 404 availability wait and stable-tag make_latest: legacy. In .9, the attestation was available on the first check and the release was a prerelease. Failure-path tests cover the wait/exhaustion and deadline cases.

#1235 Done when checklist and exact signer commands
  • D1 Spec approval/merge — maintainer action; combined by agreement.
  • D2 No-config rule and compile-time input inventory — done; scanner limitations stated.
  • D3 Immutable binary/SBOM/checksum publication — .9 passed at 149754d35; IAB settings remain D7.
  • D4 Every binary/predicate/asset verified — full .9 transcript at 149754d35.
  • D5 Fresh npm and refusal of skip/prebuilt inputs — done.
  • D6 Deploy verified release bytes — manual Fastly packaging/validation/byte comparison and local runtime proof passed in .9; 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). The topology alone does not establish SLSA Build Level 3.

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

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). Per-line suppressions: cyclonedx.org (historical 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. Complete composition, reproduction, full platform qualification and other Axum hardening remain deferred. PR callers retain the reusable workflow's permission maximum; actual builds are read-only and signing requires a tag plus the publication enablement variable.

Follow-up (binary change; fresh rehearsal required): Axum’s invalid-port diagnostic must name the actual supplied variable and say startup is refused. Today PORT=0 is refused but forwards EdgeZero’s EDGEZERO__ADAPTER__PORT="0" … falling back warning.

Human gates

Keep draft; no reviewers. Maintainers must confirm immutable releases and the v* ruleset before setting RELEASE_PUBLICATION_ENABLED=true; no settings token/API precheck by review decision, with loud post-publication immutability checks retained. Decide rc-branch tag eligibility before official use. Approve spec/merge, reference hosts/suppressions and the first production release. Fork rehearsals use standing approval only after green CI on the exact reviewed head; fresh lightweight tags only. No IAB tags, releases or settings changed.

@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 v0.0.0-rehearsal.6 at 39a769c: failed workflow; immutable publication retained. Run, failed publisher.

All seven build and signing jobs passed. The release contains exactly 29 nonempty assets; downloaded bytes match every API SHA-256 digest, and SHA256SUMS covers exactly 28 files, excluding itself. Readback confirms draft=false, immutable=true, prerelease=true, and this tag is not Latest. The documented gh release download command succeeded.

The publisher stopped at gh release verify at 07:19:53.744 UTC with “no attestations for tag”. Subsequent independent verification succeeded; the verified release attestation has a trusted timestamp of 07:19:58 UTC. This supports an availability race; the pinned CLI hid the original underlying API error. This is a failed rehearsal, not a green run. No publication rerun or tag reuse occurred. The approved bounded availability check and the agreed fixes will be rehearsed with a fresh .7 tag.

Build/startup evidence follows, including both macOS 13.0 checks, all CLI source labels and each non-loopback Axum container response. The manual Fastly 16.0.0 route packed, validated, inspected and byte-compared the published wasm with networking disabled; no deploy occurred. A separate Viceroy smoke returned HTTP 200 with the source header, origin marker and injected JS. Temporary local paths below are redacted.

Rehearsal .6 build/startup proof at 39a769c3e3d6476395fa7a215bd0a5e74a760f3e.
All final-byte, CLI version, macOS minimum-OS, non-loopback Axum health and image identity lines are retained; full job logs are linked.

ts-x86_64-unknown-linux-gnu
https://github.com/prk-Jr/trusted-server/actions/runs/39913759232/job/120282529831
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T06:49:31.2094985Z GNU builder: registry.access.redhat.com/ubi9/ubi:9.6@sha256:dec374e05cc13ebbc0975c9f521f3db6942d27f8ccdf06b180160490eef8bdbc sha256:0ff542e6116742fd84d8bfaa7ec4a5c202a946cd378fb57cbd44c764715f84ad
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T06:49:31.4187354Z ldd (GNU libc) 2.34
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T06:57:14.6745818Z 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-23T06:57:14.6784832Z SUCCESS: ts package=0.1.0 source=39a769c3e3d6476395fa7a215bd0a5e74a760f3e target=x86_64-unknown-linux-gnu variant=default
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T06:57:16.2493019Z Runtime image: debian:12-slim@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8 sha256:8da84df25d28176be84164040cd45e128c6b4c6a80b7d7cbe17fe2b9f198efc2
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T06:57:17.0468173Z SUCCESS: ts package=0.1.0 source=39a769c3e3d6476395fa7a215bd0a5e74a760f3e target=x86_64-unknown-linux-gnu variant=default
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T06:57:18.4924076Z Runtime image: ubuntu:22.04@sha256:0a9887931b0e38af2e3487ed39e29436b0535c4f3f52e57745baaf79d1898956 sha256:cee13550f97b8a595506e8e4ca74263ba44924248779a4ba4f942e197652acff
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T06:57:18.6868580Z SUCCESS: ts package=0.1.0 source=39a769c3e3d6476395fa7a215bd0a5e74a760f3e target=x86_64-unknown-linux-gnu variant=default
build / Build ts-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T06:57:21.3998524Z 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-23T06:57:21.5755430Z SUCCESS: ts package=0.1.0 source=39a769c3e3d6476395fa7a215bd0a5e74a760f3e target=x86_64-unknown-linux-gnu variant=default

trusted-server-axum-x86_64-unknown-linux-musl
https://github.com/prk-Jr/trusted-server/actions/runs/39913759232/job/120282529856
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-23T06:53:11.8162564Z SUCCESS: final-byte checks x86_64-unknown-linux-musl 
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-23T06:53:12.9826995Z Runtime image: alpine:3.22.2@sha256:4b7ce07002c69e8f3d704a9c5d6fd3053be500b7f1c69fc0d80990c2ad8dd412 sha256:706db57fb2063f39f69632c5b5c9c439633fda35110e65587c5d85553fd1cc38
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-23T06:53:13.9837790Z 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-23T06:53:14.1070285Z Runtime image: scratch sha256:c73c54d454eba25cc7b9f644729fac9a4fee83b5e3ca908fde12f13c21c210b8
build / Build trusted-server-axum-x86_64-unknown-linux-musl	UNKNOWN STEP	2026-10-23T06:53:14.2425220Z SUCCESS: Axum bound to 0.0.0.0; host reached published container port, HTTP 200 ok: scratch sha256:c73c54d454eba25cc7b9f644729fac9a4fee83b5e3ca908fde12f13c21c210b8

ts-aarch64-apple-darwin
https://github.com/prk-Jr/trusted-server/actions/runs/39913759232/job/120282529885
build / Build ts-aarch64-apple-darwin	UNKNOWN STEP	2026-10-23T06:57:48.1056060Z SUCCESS: Mach-O target and macOS minimum OS 13.0: aarch64-apple-darwin
build / Build ts-aarch64-apple-darwin	UNKNOWN STEP	2026-10-23T06:57:48.1058370Z SUCCESS: final-byte checks aarch64-apple-darwin 
build / Build ts-aarch64-apple-darwin	UNKNOWN STEP	2026-10-23T06:57:48.1246180Z SUCCESS: ts package=0.1.0 source=39a769c3e3d6476395fa7a215bd0a5e74a760f3e target=aarch64-apple-darwin variant=default

trusted-server-fastly.wasm
https://github.com/prk-Jr/trusted-server/actions/runs/39913759232/job/120282529930
build / Build trusted-server-fastly.wasm	UNKNOWN STEP	2026-10-23T06:50:32.5918719Z SUCCESS: final-byte checks wasm32-wasip1 

trusted-server-axum-aarch64-unknown-linux-gnu
https://github.com/prk-Jr/trusted-server/actions/runs/39913759232/job/120282530025
build / Build trusted-server-axum-aarch64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T06:49:34.1849626Z GNU builder: registry.access.redhat.com/ubi9/ubi:9.6@sha256:dec374e05cc13ebbc0975c9f521f3db6942d27f8ccdf06b180160490eef8bdbc sha256:fb98dd0aaa7e4562703cb26149a7581cc8a8e3ce9e3aee0ebaaa7c1408b6076d
build / Build trusted-server-axum-aarch64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T06:49:34.8512768Z ldd (GNU libc) 2.34
build / Build trusted-server-axum-aarch64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T06:52:23.0802275Z 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-23T06:52:24.6683431Z Runtime image: debian:12-slim@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8 sha256:28fe65558df3e10c89e7d685cb86544cdc138f242d12100c5b0981f92aae0853
build / Build trusted-server-axum-aarch64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T06:52:25.7892031Z SUCCESS: Axum bound to 0.0.0.0; host reached published container port, HTTP 200 ok: debian:12-slim@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8 sha256:28fe65558df3e10c89e7d685cb86544cdc138f242d12100c5b0981f92aae0853

trusted-server-axum-x86_64-unknown-linux-gnu
https://github.com/prk-Jr/trusted-server/actions/runs/39913759232/job/120282530034
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T06:49:31.2857274Z GNU builder: registry.access.redhat.com/ubi9/ubi:9.6@sha256:dec374e05cc13ebbc0975c9f521f3db6942d27f8ccdf06b180160490eef8bdbc sha256:50f46a322e685af1ea4d3cdeb4ab4d0a1ea0b1161e3b3381d75d226deae2e1b4
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T06:49:31.5167876Z ldd (GNU libc) 2.34
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T06:53:11.6694138Z 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-23T06:53:13.2745834Z Runtime image: debian:12-slim@sha256:7ff6ba31527b9e336162fa061746c366c4b2032f4d2cff2078bea43f78efe3f8 sha256:8da84df25d28176be84164040cd45e128c6b4c6a80b7d7cbe17fe2b9f198efc2
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T06:53:13.7892632Z 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-23T06:53:15.3341380Z Runtime image: ubuntu:22.04@sha256:0a9887931b0e38af2e3487ed39e29436b0535c4f3f52e57745baaf79d1898956 sha256:cee13550f97b8a595506e8e4ca74263ba44924248779a4ba4f942e197652acff
build / Build trusted-server-axum-x86_64-unknown-linux-gnu	UNKNOWN STEP	2026-10-23T06:53:15.5550012Z 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-23T06:53:17.5151325Z 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-23T06:53:17.7277320Z 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

ts-x86_64-apple-darwin
https://github.com/prk-Jr/trusted-server/actions/runs/39913759232/job/120282530109
build / Build ts-x86_64-apple-darwin	UNKNOWN STEP	2026-10-23T07:15:02.7798530Z 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-23T07:15:02.7814970Z SUCCESS: final-byte checks x86_64-apple-darwin 
build / Build ts-x86_64-apple-darwin	UNKNOWN STEP	2026-10-23T07:15:02.8596210Z SUCCESS: ts package=0.1.0 source=39a769c3e3d6476395fa7a215bd0a5e74a760f3e target=x86_64-apple-darwin variant=default
+ 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
Resolved "debian" as an alias (/etc/containers/registries.conf.d/000-shortnames.conf)
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...
✓ 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
08ceb344875fdee07bc8c7d32f41c474b476b82c6a65ca2ecfd3a998479d9e35  trusted-server-fastly.wasm
08ceb344875fdee07bc8c7d32f41c474b476b82c6a65ca2ecfd3a998479d9e35  packaged.wasm
21b3c0d6f0a329838b23ad87a1d42840cceaff25d0247c1ac9aa5b34784360b2  fastly.toml
21b3c0d6f0a329838b23ad87a1d42840cceaff25d0247c1ac9aa5b34784360b2  packaged.toml
6d26e0190237e04387d89e4d624566dafb04f3f83a749fa527cd8bc95a115da3  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=39a769c3e3d6476395fa7a215bd0a5e74a760f3e 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
+ node <evidence>/viceroy-smoke/origin.mjs
+ origin_pid=65123
+ trap cleanup EXIT
+ viceroy_pid=65124
+ <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 07:37:00 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: 39a769c3e3d6476395fa7a215bd0a5e74a760f3e
transfer-encoding: chunked

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

@prk-Jr

prk-Jr commented Oct 23, 2026

Copy link
Copy Markdown
Collaborator Author

Rehearsal .6 offline verification transcript, exact source 39a769c. Pinned gh 2.102.0; saved trust-root SHA-256 65ca537f6ed8a47fd0e560c421baa1f6c1efb8b25fc200d8c5c02c0e92eb2b9c. Independent binary pins below come from the cryptographically verified release attestation, rather than trusting the downloaded checksum file alone. The OS sandbox denied networking (including the control request). Both predicates, both signer forms, exact source/tag/signer pins and all seven SPDX comparisons passed. This independent result does not change the failed workflow outcome.

4101e33313dee7be41bf3ace7bf9adc729979742c4a952a0b3f4a9c7caaf3841  trusted-server-axum-aarch64-unknown-linux-gnu
aa89e2bf687cc8ad0109e95f10b8bb8c0445889c8afee77087ed710bec7b86d9  trusted-server-axum-x86_64-unknown-linux-gnu
e83ce48eb88a4c87c9ee42503de8ed706ad64ceb478a62bf3fda9574c0354293  trusted-server-axum-x86_64-unknown-linux-musl
08ceb344875fdee07bc8c7d32f41c474b476b82c6a65ca2ecfd3a998479d9e35  trusted-server-fastly.wasm
99ec2bf81e093964b21e9cdc2f15a2a8c0458fc45475f9f4889dd1eb2724b918  ts-aarch64-apple-darwin
639be68c17a4d420961012fc09dc34234fae08875b1b70683b74276e581b9e21  ts-x86_64-apple-darwin
eb7b17cb7373796b09a290f9c6c7cc8ada6cf96d7865018ce5bca827f4748fe7  ts-x86_64-unknown-linux-gnu
SUCCESS: OS sandbox denied the network control
+ REPO=prk-Jr/trusted-server
+ TAG=v0.0.0-rehearsal.6
+ COMMIT=39a769c3e3d6476395fa7a215bd0a5e74a760f3e
+ 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
+ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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.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
+ 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.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
+ [[ 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 .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

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