Repository navigation
Automate provenance-bound Agent Relay release candidates - #246
khaliqgant wants to merge 4 commits into
Conversation
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 29 minutes. View limit details
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. |
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
miyaontherelay
left a comment
There was a problem hiding this comment.
infra-chief review on 5cc8c3f: request changes (3 findings). The structure is good.
-
P1, provenance is not bound to the release workflow or to main.
gh attestation verify ... --repo --source-digestaccepts an attestation from ANY workflow and ANY ref in the source repo. If a PR, branch or manual build there pushes and attests an image, it would pass. Add--signer-workflow <owner>/<repo>/.github/workflows/<release-image workflow>.ymlper component (put it in the component allowlist next to imageRepository/sourceRepository) and--source-ref refs/heads/main. Then assert in the JSON that the predicate's workflow ref matches. -
P1, pushes made with GITHUB_TOKEN do not trigger workflows, so commits this job pushes to the release branch will not start the release PR's CI or the future
acceptancecheck. The gate in PR2 would then sit on stale results or never go green. Push with a GitHub App installation token (the org pusher app,GH_APP_PUSHER_ID/GH_APP_PUSHER_PRIVATE_KEY, scoped to this repo with contents:write and pull-requests:write) so pushes trigger CI. Alternatively, explicitly dispatch the CI and acceptance workflows for the new head. Add a test or note. -
P2, no scrubber safety gate for sessions-pipeline. Withdrawn digests must never become pins: 4cf44e471055360dad3d182cbe4e578da4c9c078315aa5126ef9c2de503535da and e7dded94a0f62a30e529ce0e8ef708ca77b0bc1762a9fb080b8ecba2fc76f41c (relayscrubber alpha.6). Add a repo-tracked deny-list of digests that is checked before update. For sessions-pipeline, also check that the source_sha's
packages/pipeline/scrub-bindgen-pin.jsonpins an allowed relayscrubber version (alpha.5 or alpha.8+, never alpha.6 or alpha.7), read via the GitHub API at that exact commit.
Everything else looks right: env-var passing (no direct ${{ }} interpolation into shell), strict regex validation, the single-open-release-PR selection, the concurrency group, and checking out the automation from main.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5cc8c3fb64
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
[Medium impact] The PR appears safe to merge; the previous PR-table race is addressed.
|
miyaontherelay
left a comment
There was a problem hiding this comment.
infra-chief re-review on c0302a7. Findings 1 and 3 are fixed and verified: signer workflow, refs/heads/main and the SLSA predicate re-assert; the deny-list blocks 4cf44e47/e7dded94; the exact-source scrub pin rejects alpha.6/7 and accepts alpha.5 and alpha.8+.
One blocker remains on finding 2: the token step uses app-id: ${{ vars.GH_APP_PUSHER_ID }}, but AgentWorkforce/infra has NO repo or org variable named GH_APP_PUSHER_ID. It is an org secret (GH_APP_PUSHER_ID and GH_APP_PUSHER_PRIVATE_KEY are both visible to infra as organization secrets, matching AgentWorkforce/relay's secrets.GH_APP_PUSHER_ID). As written, app-id is empty and the first real run fails. Use secrets.GH_APP_PUSHER_ID. Approve after that one-line change.
miyaontherelay
left a comment
There was a problem hiding this comment.
infra-chief: APPROVE on exact head 48f5f0e. All three findings resolved (signer-workflow + refs/heads/main + predicate re-assert; pusher-app token via secrets.GH_APP_PUSHER_ID so pushes trigger CI; withdrawn-digest deny-list + exact-source scrub pin). The ref:main checkout and the optimistic reconcile replacing lossy concurrency are improvements.
Summary
Safety
Verification
Follow-up
The acceptance/approval tag gate and release install-pack assets will land as separate reviewed PRs.
Open in [code]smith · Need help on this PR? Tag
@codesmith-botwith what you need.Summary by cubic
Automates Agent Relay release candidate intake: a new workflow and companion script verify component build provenance, pin the verified images to
release/agent-relay-X.Y.Zbranches, and keep the tracking PR updated. Nothing is tagged, published, or deployed by this PR; the acceptance/approval tag gate will land separately.New Features
component-publishedevents forsessions-pipeline,relay-control, andrelay-webapp; 8 focused unit tests now run in the lint workflow.pins.jsonprovenance ledger and generatedvalues.yamloverlay per release branch, and rewrites the PR's verified-pins table from the latest remote head, retrying if another run pushes mid-update.Written for commit c7cff2b. Summary will update on new commits.