Automate provenance-bound Agent Relay release candidates
Merged
KH
1h ago+774+774+012345678901234567890123456789-0-0-0123456789
Summary
- add workflow_dispatch and component-published intake for Sessions, Control, and Webapp
- fail closed on strict SemVer, digest, source commit, component/repository allowlist, and GitHub build-provenance verification
- maintain a versioned release values overlay plus provenance ledger on release/agent-relay-X.Y.Z
- open or update the release PR with an idempotent verified-pins table
Safety
- dispatch data cannot choose a registry, source repository, workflow, branch path, or repository path
- candidate values remain separate from approved customer profiles until acceptance
- this PR does not tag, publish, or deploy anything
Verification
- 5 focused unit tests pass
- generated overlay parses and an EKS/RDS umbrella renders with all expected image surfaces
- actionlint 1.7.12 passes
- live provenance spot-check: current Control and Webapp pins pass exact-source verification; the older Sessions alpha.5 pin has no GitHub attestation and is correctly rejected
Follow-up
The acceptance/approval tag gate and release install-pack assets will land as separate reviewed PRs.
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with 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.Z branches, 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
- Ingests component pins from manual workflow dispatch or
component-publishedevents forsessions-pipeline,relay-control, andrelay-webapp; 8 focused unit tests now run in the lint workflow. - Fails closed on strict SemVer, lowercase sha256 digest, full source commit, allowlisted component/repository pairs, GitHub attestation verification, a blocked-digest list for withdrawn relayscrubber sessions images, and a scrub-bindgen pin fetched from the exact source revision.
- Retries rejected pushes up to 5 times when concurrent component publications race, refetching the winning branch and reapplying the component so no event is lost.
- Keeps a versioned
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.