release(agent-relay): 0.3.1 reviewable customer release (GHCR digests, evidence, handoff)
Merged
KJ
9h ago+700+700+012345678901234567890123456789-214-214-012345678901234567890123456789
Release lane, selfhost-night-20261103. Scope per Khaliq: a reviewable release for a company evaluating self-hosted Agent Relay on GCP, not a gate PASS. Nothing is fabricated: every open gate item is recorded as "not yet done; planned".
What changes
charts/agent-relay0.3.1 (main is on an unreleased 0.3.0 after the sessions-pipeline rename).values-gcp.yamlpins GHCR release images built from reviewedmaincommits:- selfhost-api
sha256:535e6718…(relaycontrol 8e989a1, run 41684552871; amd64+arm64, SBOM, max provenance; package still private) - relay-dashboard
sha256:bbeca872…(b213406, run 41697933750; amd64+arm64 verified anonymously, SBOM, max provenance, GitHub attestation) - relayauth
c23c92d2…and relaycast-self-hosta05732ad…unchanged - RelayHistory and Sessions services stay REQUIRED OVERRIDE (zero digest) until published: relayhistory-cloud #280 is held (a merge deploys prod), and the Sessions publish is Khaliq-only.
- selfhost-api
values-gcp.yamlsetssessions-pipeline.alleyoop.auth.issuerto RelayAuth's issuer and asks forhistoryOrigin. The chart defaulthttps://96bulls.localrejected every RelayAuth-signed courier assertion; the GKE drill found this.self-hosted/customer-images.yaml: dashboard approved; the CloudNativePG wait-for-role image approved with upstream revision 4c2710a, run 40291448784, SBOM + SLSA provenance and a verified keyless cosign signature; selfhost-api at 8e989a1, blocked only on visibility; IMG-BLOCK-004 and IMG-REVIEW-001 closed.self-hosted/customer-release-evidence.json:- Apache-2.0 SPDX decisions for every first-party image (sessions-pipeline #172 merged; relayhistory-cloud #279, held, adds the LICENSE)
- RelayHistory migration counts (47/47)
- the GKE upgrade and isolated-restore drill records with artifact digests
- honest
not-runentries for operational readiness, version compatibility and Desktop
- Handoff:
docs/handoff/STATUS.md: what's proven, what's preview, what's planned- 0.3.1 release notes
- sanitized GKE evidence summaries in
docs/handoff/evidence/: e2e, upgrade/restore drills, durable-actors preview - the archive now ships the e2e harness,
docs/operations,docs/supportand the durable-actors doc
- e2e harness:
--secretis now required (no proof default), and test users get addresses under the install's own base domain. Live proof runs must pass--secret agent-relay-gcp-proof. requirements.yaml: anagent-relay-0.3.1row.
Gate
python3 scripts/release/validate-customer-release.py still FAILS by design. The remaining errors:
- RelayHistory and Sessions digests are unpublished
- selfhost-api visibility
- relaycast has no SBOM yet
- no branch/environment controls (dropped by Khaliq)
- the drills are partial against this manifest
- no supported-100 soak, compat matrix or Desktop release
The handoff archive is built in preview mode and labelled so. --consistency passes.
Not changed
release-agent-relay.yml has no environment requirement, and none is added.
🤖 Generated with Claude Code
![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.