release: attest reproducible binaries with signed provenance - #91
release: attest reproducible binaries with signed provenance#91seonghobae wants to merge 13 commits into
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@coderabbitai review Please review current exact |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
target='93b6b3fefc3981fd6dbf687316a9d7ebe6a19fcc'
echo '== Checked-out revision and target commit =='
git rev-parse HEAD
git show -s --format='commit=%H%nparents=%P%nsubject=%s' "$target"
echo
echo '== Changed files against first parent =='
git diff-tree --no-commit-id --name-status -r "$target"
echo
echo '== Exact diff =='
git diff --find-renames --find-copies "${target}^" "$target" -- .github README.md docs 2>/dev/null || true
echo
echo '== Workflow file inventory =='
fd -t f -e yml -e yaml . .github 2>/dev/null || true
echo
echo '== Workflow structural outline =='
for f in $(fd -t f -e yml -e yaml . .github 2>/dev/null); do
echo "--- $f"
nl -ba "$f" | sed -n '1,360p'
done
echo '== Attestation and release-related references, with context =='
rg -n -i -C 5 \
'(actions/attest|attest-build-provenance|attestation|provenance|id-token|attestations|gh[[:space:]]+attestation[[:space:]]+verify|reproducib|permissions:|actions/checkout)' \
.github README.md docs 2>/dev/null || true
echo '== All action uses and refs =='
rg -n -P '^\s*uses:\s*[^#\s]+@[^[:space:]#]+' .github 2>/dev/null || trueLength of output: 143467 🏁 Script executed: #!/bin/bash
set -euo pipefail
target='93b6b3fefc3981fd6dbf687316a9d7ebe6a19fcc'
echo '== Exact test-only diff =='
git diff --find-renames "${target}^" "$target" -- tests/release_provenance_workflow_contract.rs
echo
echo '== Provenance contract test =='
nl -ba tests/release_provenance_workflow_contract.rs | sed -n '1,420p'
echo
echo '== Non-redacted verification stanza from Git =='
git show "${target}:.github/workflows/release-reproducibility.yml" | nl -ba | sed -n '200,230p'
echo
echo '== GitHub CLI verifier help =='
gh attestation verify --help
echo
echo '== Pull request `#91` checks at the requested head =='
gh pr checks 91 --repo ContextualWisdomLab/pingora-gateway --json name,state,link,workflow 2>&1 || trueLength of output: 18590 🤖 web_search executed:
Length of output: 14642
I found one identity-binding defect in
Use an exact certificate SAN policy, or a fully ref-qualified and safely escaped signer-workflow policy that the installed The workflow otherwise has the required narrow attestation permissions, immutable The required workflow checks were still This is technical review evidence only. It is not an independent approving review. You are interacting with an AI system. |
|
@coderabbitai review Please re-review current exact |
|
Tip For best results, initiate chat on the files or code changes. 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
target='b561214b75ace1ccc72ec242aadb8b0a9b647f38'
repo='ContextualWisdomLab/pingora-gateway'
echo '== Target commit =='
git show -s --format='commit=%H%nparents=%P%nsubject=%s' "$target"
echo
echo '== Changed files from first parent =='
git diff-tree --no-commit-id --name-status -r "$target"
echo
echo '== Target diff: workflow, contract test, docs =='
git diff --find-renames "${target}^" "$target" -- \
.github/workflows/release-reproducibility.yml \
tests/release_provenance_workflow_contract.rs \
README.md docs 2>/dev/null || true
echo
echo '== Workflow outline and relevant source =='
ast-grep outline .github/workflows/release-reproducibility.yml --items all 2>/dev/null || true
nl -ba .github/workflows/release-reproducibility.yml | sed -n '1,360p'
echo
echo '== Contract-test outline and source =='
ast-grep outline tests/release_provenance_workflow_contract.rs --items all 2>/dev/null || true
nl -ba tests/release_provenance_workflow_contract.rs | sed -n '1,460p'
echo
echo '== Provenance claims in repository text =='
rg -n -i -C 4 \
'(attest|attestation|provenance|SLSA|Sigstore|reproducib|cert-identity|signer-digest|source-digest|candidate)' \
README.md docs .github tests 2>/dev/null || true
echo
echo '== All workflow action references =='
rg -n -P '^\s*uses:\s*[^#\s]+@[^[:space:]#]+' .github/workflows 2>/dev/null || true
echo
echo '== Verification command help and installed version =='
gh --version
gh attestation verify --help
echo
echo '== PR metadata and checks =='
gh pr view 91 --repo "$repo" --json number,state,isDraft,headRefOid,mergeCommit,url,title 2>&1 || true
gh pr checks 91 --repo "$repo" --json name,state,link,workflow 2>&1 || trueLength of output: 224540
I found one documentation overclaim in The exact SAN repair is correct. However, Line 49 states that the successful Update the text to distinguish these properties:
The documentation already states that this is candidate provenance. This change will make that boundary consistent with the GitHub CLI trust model. All exact-head checks were still This is technical review evidence only. It is not an independent approving review. You are interacting with an AI system. |
seonghobae
left a comment
There was a problem hiding this comment.
Exact-current technical review on bc85547ebed648c03142edad661c57b1b42a2dc4 (evidence only; not governance approval).
Re-read the complete three-path child range against #90 069e11e170cd60b321e28ef4499c88d690a45956: .github/workflows/release-reproducibility.yml, tests/release_provenance_workflow_contract.rs, and docs/doctoring/RELEASE_PROVENANCE_TRACEABILITY.md.
The current lane keeps byte equality before attestation, pins actions/attest to exact commit 1e69f48acb82d1966a394da916b4c1698aa569d6, separates the explicitly checked-out PR-head EXPECTED_SHA from GitHub's PR-merge execution/signer SIGNER_SHA, verifies both binary subjects against the exact workflow certificate SAN plus source/signer digest, and denies self-hosted provenance. The traceability text correctly limits PR evidence to candidate provenance and requires protected-source execution for promotion-grade convergence of checkout/source/signer identity.
Exact-current hosted execution is terminal GREEN across CI 34634535392, Supply Chain 34634535334, PgErd bounded-origin capacity 34634535434, TLS H2 Performance 34634535401, and Release Reproducibility 34634535515. The provenance job completed both clean Rust 1.98.1 builds, byte comparison, GitHub OIDC/Sigstore attestation, in-run gh attestation verify for both binaries, and evidence upload successfully. Fresh inline review-thread enumeration is empty.
No additional writer-safe source/test/documentation/DDD or authority-boundary defect found in this exact range. This COMMENT is not an APPROVED review and must not be counted as the independent approval required by organization governance.
Refs #51, #58.
Writer-safe child of #90 exact
069e11e170cd60b321e28ef4499c88d690a45956. This increment closes the next release-evidence gap only: GitHub OIDC/Sigstore-backed signed build provenance for the already byte-identical release binaries. Production Rust, routing/TLS/HTTP policy, product auth/business logic, Keyverse/Wardnet/EgressWeave authority, supplier source, deployment state, version/tag/package identity, and dedicated baseline lane #61 remain unchanged.RED → identity-model repair
RED-first exact
7517c3691be1b4437914bb7498f95f105bf98d88introduced the executable provenance contract before changing the workflow. Its hosted runs were superseded before semantic execution, so it is source-level RED intent only.The first complete semantic attempt was exact
93b6b3fefc3981fd6dbf687316a9d7ebe6a19fcc, Release Reproducibility run34633027944. Both Rust 1.98.1 clean builds were byte-identical andactions/attestsuccessfully created GitHub/Sigstore Build Provenance, but verification failed closed because the initial verifier incorrectly expected the explicitly checked-out PR-head SHA to be the GitHub attestation signer/source digest. On apull_requestrun,github.event.pull_request.head.shais the explicitly built checkout whilegithub.shais the synthetic PR-merge execution commit used by the workflow/OIDC identity.The causal repair separates those authorities instead of pretending they are the same.
EXPECTED_SHA=${{ github.event.pull_request.head.sha || github.sha }}remains exact checkout/build authority;SIGNER_SHA=${{ github.sha }}is the attested source/signer authority. Verification uses an exact certificate SAN, not a path-pattern signer check:https://github.com/${{ github.repository }}/.github/workflows/release-reproducibility.yml@${{ github.ref }}Both binaries are verified with
--cert-identity,--source-digest=$SIGNER_SHA,--signer-digest=$SIGNER_SHA, repository binding, and--deny-self-hosted-runners.actions/attestis pinned to exact commit1e69f48acb82d1966a394da916b4c1698aa569d6. Attestation occurs only after the existing #90 byte-for-byte equality gate passes.Exact-current GREEN
Current exact is
bc85547ebed648c03142edad661c57b1b42a2dc4, based directly on #90069e11e170cd60b321e28ef4499c88d690a45956. Effective child scope is exactly:.github/workflows/release-reproducibility.yml;tests/release_provenance_workflow_contract.rs;docs/doctoring/RELEASE_PROVENANCE_TRACEABILITY.md.All writer-owned exact-current gates are terminal GREEN:
34634535392: load-contract, least-privilege OCI runtime, formatting, complete compile/test, Clippy, warnings-denied rustdoc, complete owned-production coverage, and resolved-lock verification all succeeded;34634535334: committed dependency audit, candidate images, SPDX SBOM, both image scans, exact-source binding, and evidence upload succeeded;34634535434succeeded;34634535401succeeded. Exact artifactk6-tls-h2-performance-bc85547ebed648c03142edad661c57b1b42a2dc4has digestsha256:6e057ad3da593d543af6bc1099af66c8f7ea885e017784cb81a302bd04a514e6. Fresh TLS/H2 buyer-path p95 was6.46129615 ms, fresh TLS handshake p954.34887095 ms, reused buyer-path p950.74798925 ms; both phases completed 400/400 HTTP/2 requests with zero request failures, and 396/400 reuse-phase requests were actual connection reuse;34634535515succeeded end-to-end: exact checkout, Rust 1.98.1, compiler/Cargo-authority fail-close, locked fetch, both isolated clean builds, byte comparison, OIDC/Sigstore attestation, separate in-run provenance verification for both binaries, and evidence upload. Exact artifactrelease-reproducibility-bc85547ebed648c03142edad661c57b1b42a2dc4has digestsha256:c78e35ab452ee8c7e143b49eedae76bef244a080f83b247cfe7713311b86cc19.The current reproducibility receipt records
checkout_sha=bc85547ebed648c03142edad661c57b1b42a2dc4,attested_source_sha=9bce154cd1cc25744c9bd9aae95b30222649faa7,signer_sha=9bce154cd1cc25744c9bd9aae95b30222649faa7, and certificate identity ending in@refs/pull/91/merge. Both clean builds remained byte-identical:cwl-pingora-gatewaySHA-256f0ae908d3cee73753aa2cc94e97276ef9ba71ff1d1043bba09fb8b545c694292;cwl-pingora-pg-erd-migrationSHA-256415693a89546d9491c75130dc315d680a0d3e3fea04653489e5f1a2ccbd120a9.Fresh review-thread enumeration is empty. Exact-current technical COMMENT review
5182370343re-read the complete three-path child range after terminal execution and found no additional writer-safe source/test/documentation/DDD or authority-boundary defect. It is technical evidence only, not independentAPPROVEDgovernance credit.Promotion boundary
A GREEN pull-request attestation authenticates these candidate binary digests to the GitHub Actions certificate identity and the synthetic PR-merge execution digest while separately enforcing which PR-head was checked out and built. It does not turn the PR checkout claim into a certificate-backed
Source Repository Digest. Promotion-grade provenance is re-established after protected integration, where the protected source checkout, attested source digest and signer digest converge on the same protected commit.Foundation #56 remains prerequisite for repository-wide Rust 1.98.1 release-compiler integration; ordinary inherited CI/Supply Chain still run Rust 1.98.0 until that foundation is independently approved and protected-integrated. This child does not source-copy #56.
This PR is technically ready for independent governance review. No self-approval, bypass, protected merge, immutable version/tag/package release, independent-builder proof, OCI reproducibility, representative NUMA closure, shadow/canary, observed rollback, cutover, or Nginx/OpenResty removal credit is claimed.