diff --git a/charts/agent-relay/Chart.lock b/charts/agent-relay/Chart.lock index 2f4d06d..9e63468 100644 --- a/charts/agent-relay/Chart.lock +++ b/charts/agent-relay/Chart.lock @@ -1,7 +1,7 @@ dependencies: - name: relaycast repository: file://../relaycast - version: 0.3.1 + version: 0.3.2 - name: relayauth repository: file://../relayauth version: 0.1.2 @@ -26,5 +26,5 @@ dependencies: - name: relayfile repository: file://../relayfile version: 0.2.0 -digest: sha256:43e0b3923627f7f49faa25042f7cb5b6cb58063dd20f8c99bbddd4e37c704bd0 -generated: "2026-11-03T10:18:40.215577-08:00" +digest: sha256:3a1e8b73bbb5dd09e11168ffa0d7f7d5a0f4ccaf2eb2fe4a9602c2f733aa52c0 +generated: "2026-11-03T13:14:48.597974-08:00" diff --git a/charts/agent-relay/Chart.yaml b/charts/agent-relay/Chart.yaml index 0a867d9..858ca52 100644 --- a/charts/agent-relay/Chart.yaml +++ b/charts/agent-relay/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: agent-relay description: Self-hosted Agent Relay messaging and sessions suite type: application -version: 0.3.2 +version: 0.3.3 appVersion: "0.1.0" kubeVersion: ">=1.28.0-0" annotations: @@ -17,7 +17,7 @@ maintainers: url: https://github.com/AgentWorkforce dependencies: - name: relaycast - version: 0.3.1 + version: 0.3.2 repository: file://../relaycast condition: components.relaycast - name: relayauth diff --git a/charts/agent-relay/values-gcp.yaml b/charts/agent-relay/values-gcp.yaml index 0fb9270..24b06fc 100644 --- a/charts/agent-relay/values-gcp.yaml +++ b/charts/agent-relay/values-gcp.yaml @@ -37,9 +37,10 @@ gkeIngress: relaycast: fullnameOverride: relaycast image: - # Release image (public GHCR, relaycast bdf1b69; an SBOM-attested rebuild is pending relaycast #619). Mirror by digest and override repository. + # Release image (public GHCR, relaycast main bf713d86, engine 12.7.0, SBOM + + # provenance). Mirror it by digest to your registry and override repository. repository: ghcr.io/agentworkforce/relaycast-self-host - digest: sha256:a05732ad4f3614d057bb1460df40a30e3a9297c8930bfdda6d4e3d6dc9f41762 + digest: sha256:81274dca7ab58673383dc7a9c777f422f29606c7422e81b5ea15724770f1455e # REQUIRED OVERRIDE: must use the same cast host as gkeIngress.hosts.cast. baseUrl: https://cast.placeholder.company # REQUIRED OVERRIDE: existing Secret name; see README for required keys. diff --git a/charts/relaycast/Chart.yaml b/charts/relaycast/Chart.yaml index dd995f8..fc46ba9 100644 --- a/charts/relaycast/Chart.yaml +++ b/charts/relaycast/Chart.yaml @@ -2,8 +2,8 @@ apiVersion: v2 name: relaycast description: Portable Relaycast core for self-hosted Agent Relay deployments type: application -version: 0.3.1 -appVersion: "12.2.1-selfhost.1" +version: 0.3.2 +appVersion: "12.7.0" kubeVersion: ">=1.22.0-0" annotations: artifacthub.io/license: Apache-2.0 diff --git a/charts/relaycast/values.yaml b/charts/relaycast/values.yaml index d973566..d4e5245 100644 --- a/charts/relaycast/values.yaml +++ b/charts/relaycast/values.yaml @@ -4,10 +4,11 @@ replicaCount: 1 image: repository: ghcr.io/agentworkforce/relaycast-self-host - # relaycast-self-host:12.2.1-selfhost.1, built from relaycast main bdf1b69c - # (engine 12.2.1 + the internal admin API). Immutable multi-platform - # manifest (linux/amd64 and linux/arm64). - digest: sha256:a05732ad4f3614d057bb1460df40a30e3a9297c8930bfdda6d4e3d6dc9f41762 + # relaycast-self-host:12.7.0, built from relaycast main bf713d86 by the + # reviewed publish-container workflow (engine 12.7.0). Immutable + # multi-platform manifest (linux/amd64 and linux/arm64) with an SPDX SBOM, + # max-mode provenance and a GitHub build-provenance attestation. + digest: sha256:81274dca7ab58673383dc7a9c777f422f29606c7422e81b5ea15724770f1455e pullPolicy: IfNotPresent imagePullSecrets: [] diff --git a/docs/handoff/RELEASE_NOTES.md b/docs/handoff/RELEASE_NOTES.md index 327242a..d8f2a8e 100644 --- a/docs/handoff/RELEASE_NOTES.md +++ b/docs/handoff/RELEASE_NOTES.md @@ -37,6 +37,15 @@ Desktop setup. Relayflows, durable actors and Relayfile are optional preview components, off by default. Billing, provider integrations and hosted fleet are out of scope. +## agent-relay 0.3.3 (2026-11-03) + +Pins the attested Relaycast image: `relaycast-self-host@sha256:81274dca…` +(relaycast main `bf713d86`, engine 12.7.0; SPDX SBOM, max-mode provenance and a +GitHub build-provenance attestation; public, amd64+arm64). The relaycast leaf +chart is now 0.3.2 with the same default. This image has not run the GKE +upgrade/restore drills; its kind smoke runs in this repository's CI. It also carries the untagged 0.3.2 GKE proof-overlay refresh (proof +values only). Everything else is as in 0.3.1. + ## agent-relay 0.3.1 (2026-11-03): reviewable release This is the first release of the umbrella chart, to be published from the @@ -62,7 +71,7 @@ exists and you pin it. | Control-plane API | `ghcr.io/agentworkforce/selfhost-api@sha256:535e6718…` | relaycontrol `8e989a1` | SBOM + max provenance; **private package, not pullable by customers yet** (installation blocker) | | Dashboard | `ghcr.io/agentworkforce/relay-dashboard@sha256:bbeca872…` | relay-dashboard `b213406` | SBOM + max provenance + GitHub attestation; public | | RelayAuth | `ghcr.io/agentworkforce/relayauth@sha256:c23c92d2…` | relayauth `784582e` | SBOM + provenance; public | -| Relaycast | `ghcr.io/agentworkforce/relaycast-self-host@sha256:a05732ad…` | relaycast `bdf1b69` | public; **no SBOM, min-mode provenance only** (attested rebuild pending) | +| Relaycast | `ghcr.io/agentworkforce/relaycast-self-host@sha256:81274dca…` | relaycast `bf713d86` (engine 12.7.0) | SBOM + max provenance + GitHub attestation; public (0.3.2) | | Sessions wait-for-role | `ghcr.io/cloudnative-pg/postgresql@sha256:ed6923f9…` | upstream `4c2710a` | upstream revision label `4c2710a`, run 40291448784; SBOM + SLSA attestation manifests; keyless cosign signature verified with `--certificate-github-workflow-sha` | | Sessions services | `ghcr.io/agentworkforce/96bulls-services` | no release revision yet (last audited private image: `7d7229b`; the release is to be built from `main` at or after `51b38ff`) | **not published** (zero digest): the attested publish needs the owner's dispatch; REQUIRED OVERRIDE, installation blocker | | RelayHistory | `ghcr.io/agentworkforce/relayhistory` | relayhistory-cloud | **not published** (zero digest): the self-host runtime PR is held; REQUIRED OVERRIDE, installation blocker | diff --git a/docs/handoff/STATUS.md b/docs/handoff/STATUS.md index 7618762..a7b1de6 100644 --- a/docs/handoff/STATUS.md +++ b/docs/handoff/STATUS.md @@ -1,8 +1,9 @@ # Release status: what is proven and what is preview -Release: `agent-relay` chart 0.3.1, 2026-11-03 (to be published from the -`agent-relay-0.3.1` tag as `oci://ghcr.io/agentworkforce/charts/agent-relay`, -version 0.3.1). +Release: `agent-relay` chart 0.3.3, 2026-11-03, published from the +`agent-relay-0.3.3` tag as `oci://ghcr.io/agentworkforce/charts/agent-relay` +version 0.3.3. 0.3.1 (the first published version) differs only in the +Relaycast image and the GKE proof overlays (0.3.2 was never tagged). This release is for **review by a company evaluating a self-hosted Agent Relay on GCP**. It is a reviewable `portable-single` release that pins every @@ -19,7 +20,7 @@ This archive is therefore labelled a development preview. | Area | Evidence (what was checked, including its limits) | |---|---| | Licensing | Apache-2.0 at `main` for relaycast, relayauth, relaycontrol (control-plane API), relay-dashboard and this chart repository. Sessions Pipeline is Apache-2.0 by owner decision; its LICENSE landed on `main` in sessions-pipeline #172 (merge `51b38ff`), after the image revision recorded in the manifest (`7d7229b`). RelayHistory is Apache-2.0 by owner decision; its LICENSE PR (relayhistory-cloud #279) is open and held, so no RelayHistory revision carries it yet. The third-party PostgreSQL image (CloudNativePG) is Apache-2.0 packaging. See `self-hosted/customer-release-evidence.json` (`licenses.firstParty`). | -| Image supply chain | Mixed; per image in `self-hosted/customer-images.yaml`. The control-plane API (`selfhost-api`) and dashboard images were built by their release workflows from reviewed `main` commits with an SBOM and max-mode provenance (the dashboard also has a GitHub build-provenance attestation and is public; the `selfhost-api` package is still private). The RelayAuth image has an SBOM and provenance. The Relaycast image (`a05732ad…`) has **no SBOM and only buildx's default min-mode provenance**. The CloudNativePG PostgreSQL digest is verified against upstream revision `4c2710a` (run 40291448784, SBOM and SLSA attestation manifests, keyless cosign signature verified with `--certificate-github-workflow-sha`). The Sessions services and RelayHistory release images are **not published**; both stay REQUIRED OVERRIDE (zero digest) in `values-gcp.yaml`. | +| Image supply chain | Mixed; per image in `self-hosted/customer-images.yaml`. The control-plane API (`selfhost-api`) and dashboard images were built by their release workflows from reviewed `main` commits with an SBOM and max-mode provenance (the dashboard also has a GitHub build-provenance attestation and is public; the `selfhost-api` package is still private). The RelayAuth image has an SBOM and provenance. Since 0.3.3 the Relaycast image (`81274dca…`, relaycast `bf713d86`, engine 12.7.0) also has an SBOM, max-mode provenance and a GitHub build-provenance attestation, and is public. The CloudNativePG PostgreSQL digest is verified against upstream revision `4c2710a` (run 40291448784, SBOM and SLSA attestation manifests, keyless cosign signature verified with `--certificate-github-workflow-sha`). The Sessions services and RelayHistory release images are **not published**; both stay REQUIRED OVERRIDE (zero digest) in `values-gcp.yaml`. | | End-to-end function on GKE | The live proof deployment (not the 0.3.1 customer profile: it ran the experimental RelayHistory proof image, and Relaycast on durable actors in the final run) passed all 15 end-to-end cases: single-org bootstrap, Relaycast messaging, session delivery and reads, workspace isolation on 28 routes, restart durability, RelayAuth verification, the Sessions Pipeline, session erasure, public-edge checks, the sessions API, admin env vars and audit, flows on an in-namespace worker, the dashboard and cleanup. See `docs/handoff/evidence/gke-e2e.md`. The harness is in `scripts/selfhost/`. | | Upgrade and restore drills | An isolated GKE drill of agent-relay 0.1.1 ran a quiesced backup (writers stopped for 314 s) and a restore into a separate Cloud SQL instance, bucket, PVCs and namespace. All seven recorded verification gates passed (Cloud SQL, Relaycast and RelayAuth integrity, GCS integrity, isolated messaging, cross-workspace denial, no production references). No data was lost between the quiesce point and the capture. RTO was 387 s to pods Ready and 578 s to the gates passing; a cold restore adds about 189 s of instance creation (about 767 s, about 12.8 min). The pre-upgrade gate passed (OK), and an upgrade from 0.1.1 to the release candidate passed 17/17 checks (run before the Sessions chart rename that the final 0.3.1 also contains). Neither ran the full release image set: the restore ran the 0.1.1 drill images, and the upgrade ran previous or live-proof images for `selfhost-api`, RelayHistory and Sessions. See `docs/handoff/evidence/gke-upgrade-restore-drills.md`. | diff --git a/docs/self-hosted-image-supply-chain.md b/docs/self-hosted-image-supply-chain.md index b6eb9c6..ab84e4a 100644 --- a/docs/self-hosted-image-supply-chain.md +++ b/docs/self-hosted-image-supply-chain.md @@ -43,7 +43,7 @@ The audit checked: | Image | Active use | Source and revision | License | Platforms | Release and supply chain | Result | | --- | --- | --- | --- | --- | --- | --- | -| `ghcr.io/agentworkforce/relaycast-self-host@sha256:a05732ad4f3614d057bb1460df40a30e3a9297c8930bfdda6d4e3d6dc9f41762` | Relaycast Deployment | [`AgentWorkforce/relaycast`](https://github.com/AgentWorkforce/relaycast) `bdf1b69ccaf1cd2bc7ce6c975c824907cc9eff49` | Apache-2.0 | Registry-verified `linux/amd64`, `linux/arm64` | [Workflow](https://github.com/AgentWorkforce/relaycast/blob/bdf1b69ccaf1cd2bc7ce6c975c824907cc9eff49/.github/workflows/publish-container.yml), [run](https://github.com/AgentWorkforce/relaycast/actions/runs/41161384835). **No SBOM**; only buildx's default min-mode, unsigned provenance. Public GHCR digest | **Hard blocker** (`IMG-BLOCK-005`) | +| `ghcr.io/agentworkforce/relaycast-self-host@sha256:81274dca7ab58673383dc7a9c777f422f29606c7422e81b5ea15724770f1455e` | Relaycast Deployment | [`AgentWorkforce/relaycast`](https://github.com/AgentWorkforce/relaycast) `bf713d86b366b46f491e287ce6117c7c5ff1f27a` | Apache-2.0 | Registry-verified `linux/amd64`, `linux/arm64` (anonymous) | [Workflow](https://github.com/AgentWorkforce/relaycast/blob/bf713d86b366b46f491e287ce6117c7c5ff1f27a/.github/workflows/publish-container.yml), [run](https://github.com/AgentWorkforce/relaycast/actions/runs/41717074565). SPDX SBOM, max-mode provenance, GitHub build-provenance attestation. Public GHCR digest | Approved | | `ghcr.io/agentworkforce/relayauth@sha256:c23c92d25fdffef3b5838a1eef4c226925f859706365d9ccece229795b877288` | RelayAuth Deployment | [`AgentWorkforce/relayauth`](https://github.com/AgentWorkforce/relayauth) `784582ef983bb72b13b43512d9a4142ef5dfabb2` | Apache-2.0 | Registry-verified `linux/amd64`, `linux/arm64` | [Workflow](https://github.com/AgentWorkforce/relayauth/blob/784582ef983bb72b13b43512d9a4142ef5dfabb2/.github/workflows/container.yml), [run](https://github.com/AgentWorkforce/relayauth/actions/runs/41277442855); SBOM and provenance; anonymous pull verified | Approved | | `ghcr.io/agentworkforce/96bulls-services@sha256:6f22ea17dff336e1431664542759fd27958649388b90a0b2f0881883caa7c6b2` (evidence only; the profile renders a zero digest) | Four Sessions Deployments and migration Job | Private [`AgentWorkforce/sessions-pipeline`](https://github.com/AgentWorkforce/sessions-pipeline) `7d7229bb31c121ecb98cd4e35c248fc2cf5669ad` | Apache-2.0 by owner decision; the LICENSE landed on `main` in #172 (merge `51b38ff`), after this revision | Not registry-verified (anonymous inspection returns `unauthorized`) | Approval-gated [workflow](https://github.com/AgentWorkforce/sessions-pipeline/blob/7d7229bb31c121ecb98cd4e35c248fc2cf5669ad/.github/workflows/publish-image.yml), [run](https://github.com/AgentWorkforce/sessions-pipeline/actions/runs/41375745173); no SBOM, min-mode provenance. The attested release image is **not published** | **Hard blocker** (`IMG-BLOCK-001`, `IMG-BLOCK-005`) | | `ghcr.io/cloudnative-pg/postgresql@sha256:ed6923f9ba2399cf9070379a353c710c29ced8a294be73986a2c3dae7e599ce3` | Sessions migration `wait-for-role` init container | Public [`cloudnative-pg/postgres-containers`](https://github.com/cloudnative-pg/postgres-containers) `4c2710a78328becdadf708ca6d9cb3fb61f3f5ee` (the image's revision label and its SLSA provenance both name it) | Apache-2.0 packaging; PostgreSQL License | Registry-verified `linux/amd64`, `linux/arm64` | Upstream [`bake_targets.yml`](https://github.com/cloudnative-pg/postgres-containers/blob/4c2710a78328becdadf708ca6d9cb3fb61f3f5ee/.github/workflows/bake_targets.yml), [run 40291448784](https://github.com/cloudnative-pg/postgres-containers/actions/runs/40291448784); SPDX SBOM and SLSA v1 attestation manifests; keyless cosign signature verified with `--certificate-github-workflow-sha 4c2710a…` | Approved (third party) | @@ -99,10 +99,10 @@ approved byte-for-byte third-party mirror. (relaycontrol `main` `8e989a1`, SBOM and max-mode provenance), but the GHCR package is still private, so customers have no pull path. Close by making the package public and verifying both platforms anonymously. -- `IMG-BLOCK-005` — **Relaycast and Sessions services**: their release - workflows publish no SBOM and only buildx's default min-mode, unsigned - provenance. Close with a rebuild that publishes an SBOM and signed - provenance, and record the new digest. +- `IMG-BLOCK-005` — **Sessions services**: the recorded digest predates the + attested workflow (sessions-pipeline #172). Close with a rebuild that + publishes an SBOM and signed provenance, and record the new digest. + Relaycast was closed in 0.3.3 by the attested 12.7.0 digest. Until these are closed, the umbrella chart is not customer-image ready even if it renders or the proof cluster is healthy. diff --git a/docs/self-hosted-requirements.md b/docs/self-hosted-requirements.md index d564973..b689000 100644 --- a/docs/self-hosted-requirements.md +++ b/docs/self-hosted-requirements.md @@ -57,14 +57,15 @@ Services image (sessions-pipeline-worker, alleyoop and the privileged SQL Jobs): | 96bulls-0.5.2 | shipped | 96bulls 0.5.2
96bulls-worker 0.5.2
alleyoop 0.3.4
(deps: worker 0.5.2, alleyoop 0.3.4, hoopdb 0.9.0, locker 5.4.0, otel 0.178.0) | 96bulls-worker: `agentworkforce/96bulls-services@sha256:6f22ea17dff3…`
alleyoop: `agentworkforce/96bulls-services@sha256:6f22ea17dff3…` | `7d7229bb31c1` / `eff8b3be4656` | selfhosted + global-default-revoke (cnpg)
selfhosted + global-default-revoke (external)
cloudsql + global-default-revoke (external)
supabase + event-trigger (external) (held)
supabase + (unset) (external) (fails closed)
local + (unset) (any) (dev only) | License-annotation patch bump of 0.5.1; same services image and db combos. Superseded by 0.5.4. | | 96bulls-0.5.1 | shipped | 96bulls 0.5.1
96bulls-worker 0.5.1
alleyoop 0.3.3
(deps: worker 0.5.1, alleyoop 0.3.3, hoopdb 0.9.0, locker 5.4.0, otel 0.178.0) | 96bulls-worker: `agentworkforce/96bulls-services@sha256:6f22ea17dff3…`
alleyoop: `agentworkforce/96bulls-services@sha256:6f22ea17dff3…` | `7d7229bb31c1` / `eff8b3be4656` | selfhosted + global-default-revoke (cnpg)
selfhosted + global-default-revoke (external)
cloudsql + global-default-revoke (external)
supabase + event-trigger (external) (held)
supabase + (unset) (external) (fails closed)
local + (unset) (any) (dev only) | sessions-pipeline main 7d7229b (#124 session list RPC, #125 Supabase event-trigger boundary, #139 its manifest sync, #137 exact sessions function ACL). The AWS path pins the ECR digest of the same build. Superseded by 0.5.2. | | sessions-pipeline-next | **planned** | sessions-pipeline next | not built for the charts yet | `475d503216a2` / `5ed119133e36` | | Follow-up re-pin to sessions-pipeline main after #127 (session briefs, generation 5ed11913...). Needs new GHCR/ECR digests, ci/sessions-pipeline-search-worker-role/services-commit and services-generation, and the session-brief entries below shipped. | -| relaycast-0.3.1 | unreleased | relaycast 0.3.1 | relaycast: `ghcr.io/agentworkforce/relaycast-self-host@sha256:a05732ad4f36…` | | | README-only bump of 0.3.0 for the sessions-pipeline rename. | +| relaycast-0.3.2 | unreleased | relaycast 0.3.2 | relaycast: `ghcr.io/agentworkforce/relaycast-self-host@sha256:81274dca7ab5…` | | | Default image moves to relaycast-self-host 12.7.0 (relaycast main bf713d86, engine 12.7.0), built by the reviewed publish-container workflow with an SPDX SBOM, max-mode provenance and a GitHub build-provenance attestation (run 41717074565); public, amd64+arm64. | +| relaycast-0.3.1 | shipped | relaycast 0.3.1 | relaycast: `ghcr.io/agentworkforce/relaycast-self-host@sha256:a05732ad4f36…` | | | README-only bump of 0.3.0 for the sessions-pipeline rename. Superseded by 0.3.2. | | relaycast-0.3.0 | shipped | relaycast 0.3.0 | relaycast: `ghcr.io/agentworkforce/relaycast-self-host@sha256:a05732ad4f36…` | | | License-annotation bump of 0.2.0 (unreleased 0.2.1) plus runtime.backend=durable-actors (env contract v1): relaycast-actors-gateway and relaycast-actors-deployer images, digests supplied by the operator; the SQLite image above is unchanged and remains the default. Superseded by 0.3.1. | | relaycast-0.2.0 | shipped | relaycast 0.2.0 | relaycast: `ghcr.io/agentworkforce/relaycast-self-host@sha256:a05732ad4f36…` | | | engine 12.2.1 + the internal admin API (relaycast main bdf1b69c). Upgrade path from 0.1.0 is in charts/relaycast/README.md. Superseded by 0.3.0. | | relaycast-0.1.0 | shipped | relaycast 0.1.0 | relaycast: `ghcr.io/agentworkforce/relaycast-self-host@sha256:5c86c095a335…` | | | image 8.0.0; superseded by 0.2.0. ci/relaycast/smoke.sh upgrades from it. | | relayauth-0.1.2 | unreleased | relayauth 0.1.2 | relayauth: `ghcr.io/agentworkforce/relayauth@sha256:c23c92d25fdf…` | | | License-annotation patch bump of 0.1.1. | | relayauth-0.1.1 | shipped | relayauth 0.1.1 | relayauth: `ghcr.io/agentworkforce/relayauth@sha256:c23c92d25fdf…` | | | relayauth 784582ef (machine-bound History assertion contract, relayauth #113). Superseded by 0.1.2. | | relayauth-0.1.0 | shipped | relayauth 0.1.0 | relayauth: `ghcr.io/agentworkforce/relayauth@sha256:eb71daa28e30…` | | | superseded by 0.1.1. | -| agent-relay-0.3.2 | unreleased | agent-relay 0.3.2
relayhistory 0.1.1
relay-cloud-api 0.2.1
relay-dashboard 0.1.0
(deps: relaycast 0.3.1, relayauth 0.1.2, sessions-pipeline 0.6.0, relayhistory 0.1.1, relay-cloud-api 0.2.1, relay-dashboard 0.1.0, relayflows 0.2.4, durable-actors 0.14.6, relayfile 0.2.0) | relayhistory: `ghcr.io/agentworkforce/relayhistory@sha256:`
relay-cloud-api: `ghcr.io/agentworkforce/selfhost-api@sha256:`
relay-dashboard: `ghcr.io/agentworkforce/relay-dashboard@sha256:` | | | GKE proof refresh on top of 0.3.1 (tag agent-relay-0.3.1). Proof overlays only: values-gcp-proof-durable-actors.yaml pins relaycast-actors-gateway sha256:faf66ec45d2c755ab5cdc6ee32bca6dc48446dff444118cab18fa1f765124ffa and relaycast-actors-deployer sha256:a81e91ed52bfb7cbb0a8c2773752df3b5d78afdc443608998b3203a30e314cee (relaycast main 3624cc12); values-gcp-proof-relayfile.yaml pins relayfile-actors sha256:7fb2110701a004f9f7ed2b025d25156fbe993208598bfbd0498a48b30df48299 and relayfile-actors-workspace sha256:c5851a1b1f7624390a1a00ebdee69e8e521dc3f23f345c582d62e09dba9a6e83 (relayfile main 39f84fcf); values-gcp-proof-live.yaml pins the experimental unsupported RelayHistory sha256:f36ae1671bdcd88a2b8b2df62c8edecb1381237d9f968747b39298959ad33563 (relayhistory-cloud 3cb76752). Proof CPU requests sized for the e2-medium pool, and the README documents the write-hold upgrade with the Relayflows smoke Job. The customer profile (values-gcp.yaml) and templates are unchanged from 0.3.1. | +| agent-relay-0.3.3 | unreleased | agent-relay 0.3.3
relayhistory 0.1.1
relay-cloud-api 0.2.1
relay-dashboard 0.1.0
(deps: relaycast 0.3.2, relayauth 0.1.2, sessions-pipeline 0.6.0, relayhistory 0.1.1, relay-cloud-api 0.2.1, relay-dashboard 0.1.0, relayflows 0.2.4, durable-actors 0.14.6, relayfile 0.2.0) | relayhistory: `ghcr.io/agentworkforce/relayhistory@sha256:`
relay-cloud-api: `ghcr.io/agentworkforce/selfhost-api@sha256:`
relay-dashboard: `ghcr.io/agentworkforce/relay-dashboard@sha256:` | | | 0.3.3 (tag agent-relay-0.3.3) moves relaycast to chart 0.3.2 and pins relaycast-self-host sha256:81274dca7ab58673383dc7a9c777f422f29606c7422e81b5ea15724770f1455e (relaycast main bf713d86, engine 12.7.0; SBOM + max-mode provenance + GitHub attestation; public) in values-gcp.yaml, and includes the never-tagged 0.3.2 proof refresh: GKE proof refresh on top of 0.3.1 (tag agent-relay-0.3.1). Proof overlays only: values-gcp-proof-durable-actors.yaml pins relaycast-actors-gateway sha256:faf66ec45d2c755ab5cdc6ee32bca6dc48446dff444118cab18fa1f765124ffa and relaycast-actors-deployer sha256:a81e91ed52bfb7cbb0a8c2773752df3b5d78afdc443608998b3203a30e314cee (relaycast main 3624cc12); values-gcp-proof-relayfile.yaml pins relayfile-actors sha256:7fb2110701a004f9f7ed2b025d25156fbe993208598bfbd0498a48b30df48299 and relayfile-actors-workspace sha256:c5851a1b1f7624390a1a00ebdee69e8e521dc3f23f345c582d62e09dba9a6e83 (relayfile main 39f84fcf); values-gcp-proof-live.yaml pins the experimental unsupported RelayHistory sha256:f36ae1671bdcd88a2b8b2df62c8edecb1381237d9f968747b39298959ad33563 (relayhistory-cloud 3cb76752). Proof CPU requests sized for the e2-medium pool, and the README documents the write-hold upgrade with the Relayflows smoke Job. The customer profile (values-gcp.yaml) and templates are unchanged from 0.3.1. | | agent-relay-0.3.1 | shipped | agent-relay 0.3.1
relayhistory 0.1.1
relay-cloud-api 0.2.1
relay-dashboard 0.1.0
(deps: relaycast 0.3.1, relayauth 0.1.2, sessions-pipeline 0.6.0, relayhistory 0.1.1, relay-cloud-api 0.2.1, relay-dashboard 0.1.0, relayflows 0.2.4, durable-actors 0.14.6, relayfile 0.2.0) | relayhistory: `ghcr.io/agentworkforce/relayhistory@sha256:`
relay-cloud-api: `ghcr.io/agentworkforce/selfhost-api@sha256:`
relay-dashboard: `ghcr.io/agentworkforce/relay-dashboard@sha256:` | | | 0.3.1 is published from the tag agent-relay-0.3.1 as the first reviewable, preview-labelled customer release; it includes the never-released 0.2.0, 0.2.1 and 0.3.0 changes described below. values-gcp.yaml pins these GHCR digests (supply chain per image): selfhost-api sha256:535e6718fa239ce87dead3d22e7c53324bed44bfcef94018918e8804d24af478 (relaycontrol main 8e989a1; SBOM + max-mode provenance; package still private), relay-dashboard sha256:bbeca872c7e204a02a17050db6ac6309c6d36a07bcd00e1da3a739923f990282 (main b213406; SBOM + max-mode provenance + GitHub attestation, public; self-host build that only uses the same-origin /cloud/api prefix), relayauth sha256:c23c92d2... (784582e; SBOM + provenance), relaycast-self-host sha256:a05732ad... (bdf1b69; NO SBOM and only buildx min-mode provenance; attested rebuild pending relaycast #619). RelayHistory and the Sessions services release images are not published and stay REQUIRED OVERRIDE (zero digest). values-gcp.yaml also sets alleyoop.auth.issuer and historyOrigin (the chart default rejected RelayAuth assertions; the umbrella now refuses an alleyoop historyOrigin that differs from relayhistory.relayauth.historyOrigin). Status: docs/handoff/STATUS.md. 0.3.0 renamed the Sessions subchart values key from 96bulls: to sessions-pipeline: (move your overrides; resource names under the umbrella are unchanged). relay-cloud-api 0.2.0 renders the relaycontrol contract (encryption.keyId required; internal token, dashboardUrl, flows, telemetry off by default). The GKE ingress denies /internal on the api host and gives the api backend a BackendConfig timeout (default 3600s) for the flows queue SSE stream. Supersedes the never-released 0.1.0. GKE proof packaging. Live proof pins (values-gcp-proof-live.yaml): dashboard sha256:23361e08b899f272ed5debcbd4e7d6c6555591029357d6fba6c54236063bca62 (relay-dashboard 53d484b); experimental unsupported RelayHistory sha256:72a057c27edbec53412a2b3a665913810b5d9a95d8b6b818946f1892590147bf (relayhistory-cloud 74a6e526, erasure fix). The CI render fixture and customer-images.yaml keep dashboard sha256:9bfc0c6b873411c7a0da60d746883bdef6aafd86a9b733c719500a603890b6fe and RelayHistory sha256:8fbda9bd89dd33994b6b3331fb403c38a25f04e6742050bd717e99661f3544ba. selfhost-api remains fail-closed until published and supplied by digest. The dashboard's same-origin /cloud/api is served by selfhost-api natively (it owns /cloud/api and /login; no ingress rewrite). No HA claim. 0.2.0 adds optional components.durableActors (vendored durable-actors 0.14.6) and components.relayfile, both off by default. relayhistory 0.1.1 adds migrations.drainForWriteHold (two-step write-hold upgrade; the migrate Job waits until no History pod exists, README). relay-cloud-api 0.2.1: telemetry.level defaults to errors (scrubbed error metadata and health only; it takes effect once the install is registered with installId, install key and endpoint, so a default render stays off and a partial registration fails), telemetry.egressTo defaults to empty (restricted egress with https telemetry must list the ingest addresses), the standalone Ingress denies /internal when secretKeys.internalToken is set, and Helm 3.10+ is required. 0.2.1 moved to 96bulls 0.5.5 (interim RelayAuth bearer stays off by default) and supersedes the never-released 0.2.0. | | relayfile-0.2.0 | unreleased | relayfile 0.2.0 | relayfile: `ghcr.io/agentworkforce/relayfile:0.1.0` | | | License-annotation bump of 0.1.1 (unreleased 0.1.2) plus runtime.backend=durable-actors (gateway, session broker: ghcr.io/agentworkforce/relayfile-actors by digest; deploy Job and dev sidecar: relayfile-actors-workspace by digest). Go server image by tag (Chart.appVersion), not digest; default render unchanged. | | durable-actors-0.14.6 | unreleased | durable-actors 0.14.6 | | | | Vendored TerseAI/durable-actors release chart v0.14.6 (tag commit 5f0a2d62, asset sha256 a489cd15...bee) with the local patches listed in charts/durable-actors/UPSTREAM.md (root global, invoke-only key, host idle timeout, pool-manager name length, zero-valued bounds, lowercase ingress host, schema patterns, README links). Never published by this repo; images pinned by upstream digest (charts/durable-actors/UPSTREAM.md). | diff --git a/self-hosted/customer-images.yaml b/self-hosted/customer-images.yaml index c5d3ec4..9541ca9 100644 --- a/self-hosted/customer-images.yaml +++ b/self-hosted/customer-images.yaml @@ -10,7 +10,7 @@ metadata: auditedAt: "2026-11-03" chart: name: agent-relay - version: 0.3.1 + version: 0.3.3 values: - charts/agent-relay/values-gcp.yaml @@ -60,37 +60,43 @@ images: - Deployment/relaycast:relaycast current: repository: ghcr.io/agentworkforce/relaycast-self-host - digest: sha256:a05732ad4f3614d057bb1460df40a30e3a9297c8930bfdda6d4e3d6dc9f41762 + digest: sha256:81274dca7ab58673383dc7a9c777f422f29606c7422e81b5ea15724770f1455e chartStatus: shipped source: repository: https://github.com/AgentWorkforce/relaycast - revision: bdf1b69ccaf1cd2bc7ce6c975c824907cc9eff49 + revision: bf713d86b366b46f491e287ce6117c7c5ff1f27a path: Dockerfile reproducibleReference: true + note: relaycast main after #618 and #619; engine 12.7.0 (docker/package.json pin). license: status: approved spdx: Apache-2.0 - evidence: LICENSE at the source revision + evidence: https://github.com/AgentWorkforce/relaycast/blob/bf713d86b366b46f491e287ce6117c7c5ff1f27a/LICENSE platforms: expected: [linux/amd64, linux/arm64] verifiedFromRegistry: [linux/amd64, linux/arm64] status: verified + verificationAccess: anonymous release: - workflow: https://github.com/AgentWorkforce/relaycast/blob/bdf1b69ccaf1cd2bc7ce6c975c824907cc9eff49/.github/workflows/publish-container.yml - run: https://github.com/AgentWorkforce/relaycast/actions/runs/41161384835 + workflow: https://github.com/AgentWorkforce/relaycast/blob/bf713d86b366b46f491e287ce6117c7c5ff1f27a/.github/workflows/publish-container.yml + run: https://github.com/AgentWorkforce/relaycast/actions/runs/41717074565 trigger: workflow_dispatch buildsCommittedRevision: true - publishesSbom: false - # buildx default (mode=min, unsigned) attestation only; not verifiable. - publishesProvenance: false - provenanceMode: buildx-default + publishedTags: ["12.7.0"] + publishesSbom: true + publishesProvenance: true + provenanceMode: max-plus-github-attestation customerAcquisition: status: available-public procedure: Mirror the public GHCR digest into the customer registry by digest and record the destination digest. approval: - status: blocked - blockingReasons: [IMG-BLOCK-005] - + status: approved + basis: >- + Public digest from the reviewed publish-container workflow at the + recorded main revision, with an SPDX SBOM, max-mode provenance, a + GitHub build-provenance attestation, and amd64+arm64 verified + anonymously from the registry. + blockingReasons: [] - id: relayauth active: true firstParty: true @@ -454,10 +460,12 @@ blockers: - both platforms are verified anonymously from the registry - id: IMG-BLOCK-005 severity: hard - images: [relaycast, sessions-services] + images: [sessions-services] summary: >- - The release workflows publish no SBOM and only buildx's default - (mode=min, unsigned) provenance, which is not verifiable provenance. + The recorded Sessions services digest was built before the workflow + gained an SBOM and signed provenance (sessions-pipeline #172, merged); + a new digest from the attested workflow is not published yet. + Relaycast was closed by relaycast #619 and the 12.7.0 digest. closeWhen: - the release workflow publishes an SBOM and signed provenance for the recorded revision - a new digest built that way is recorded here diff --git a/self-hosted/customer-release-evidence.json b/self-hosted/customer-release-evidence.json index ed6f4cc..faa9660 100644 --- a/self-hosted/customer-release-evidence.json +++ b/self-hosted/customer-release-evidence.json @@ -22,7 +22,7 @@ }, { "decision": "approved", - "evidence": "https://github.com/AgentWorkforce/relaycast/blob/main/LICENSE (Apache-2.0; root LICENSE at the image source revision recorded in self-hosted/customer-images.yaml)", + "evidence": "https://github.com/AgentWorkforce/relaycast/blob/bf713d86b366b46f491e287ce6117c7c5ff1f27a/LICENSE (Apache-2.0, at the image source revision)", "id": "relaycast", "spdx": "Apache-2.0" }, @@ -61,7 +61,7 @@ "operationalReadiness": { "loadTest": { "artifactSha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000", - "chartVersion": "0.3.1", + "chartVersion": "0.3.3", "evidence": "Not yet done; planned. The supported-100 ramp, 24-hour steady run, burst, drain and fault phases in docs/operations/capacity-and-load-test.md have not run. No capacity or SLO claim is made.", "imageManifestSha256": "sha256:0000000000000000000000000000000000000000000000000000000000000000", "result": "not-run", @@ -116,14 +116,14 @@ "requiredStatusChecks": [], "requiresPullRequest": false }, - "chartVersion": "0.3.1", + "chartVersion": "0.3.3", "environmentControls": { "name": "customer-release", "preventsSelfReview": false, "protected": false, "requiredApprovals": 0 }, - "imageManifestSha256": "sha256:8ad64140e4f3e0b698624b9e165c52288ce56b8e5127f2a4cf35868e9a925347", + "imageManifestSha256": "sha256:1b4f31225b0617732b2fe997f684bb4a65fbc9bc2393a362c1ef7883db6870d0", "valuesFile": "charts/agent-relay/values-gcp.yaml" }, "releaseDecision": "blocked", @@ -153,7 +153,7 @@ "desktopVersion": "unreleased-custom-origin", "evidence": "Not yet done; planned. The server N/N-1 x Desktop current/previous matrix has not run; testedPlatforms lists the planned customer platform only.", "result": "not-run", - "serverVersion": "0.3.1", + "serverVersion": "0.3.3", "testedPlatforms": [ "linux/amd64" ] @@ -163,7 +163,7 @@ "desktopVersion": "none", "evidence": "Not yet done; planned. The server N/N-1 x Desktop current/previous matrix has not run; testedPlatforms lists the planned customer platform only.", "result": "not-run", - "serverVersion": "0.3.1", + "serverVersion": "0.3.3", "testedPlatforms": [ "linux/amd64" ] @@ -173,7 +173,7 @@ "desktopVersion": "unreleased-custom-origin", "evidence": "Not yet done; planned. The server N/N-1 x Desktop current/previous matrix has not run; testedPlatforms lists the planned customer platform only.", "result": "not-run", - "serverVersion": "0.1.1", + "serverVersion": "0.3.1", "testedPlatforms": [ "linux/amd64" ] @@ -183,13 +183,13 @@ "desktopVersion": "none", "evidence": "Not yet done; planned. The server N/N-1 x Desktop current/previous matrix has not run; testedPlatforms lists the planned customer platform only.", "result": "not-run", - "serverVersion": "0.1.1", + "serverVersion": "0.3.1", "testedPlatforms": [ "linux/amd64" ] } }, - "serverCurrentVersion": "0.3.1", - "serverPreviousVersion": "0.1.1" + "serverCurrentVersion": "0.3.3", + "serverPreviousVersion": "0.3.1" } } diff --git a/self-hosted/requirements.yaml b/self-hosted/requirements.yaml index 7fd235f..b34df16 100644 --- a/self-hosted/requirements.yaml +++ b/self-hosted/requirements.yaml @@ -291,14 +291,21 @@ compatibility: images_note: not built for the charts yet notes: 'Follow-up re-pin to sessions-pipeline main after #127 (session briefs, generation 5ed11913...). Needs new GHCR/ECR digests, ci/sessions-pipeline-search-worker-role/services-commit and services-generation, and the session-brief entries below shipped.' db_combos: [] - - id: relaycast-0.3.1 + - id: relaycast-0.3.2 status: unreleased current: true + charts: { relaycast: 0.3.2 } + app_versions: { relaycast: 12.7.0 } + images: + relaycast: { repository: ghcr.io/agentworkforce/relaycast-self-host, digest: sha256:81274dca7ab58673383dc7a9c777f422f29606c7422e81b5ea15724770f1455e } + notes: 'Default image moves to relaycast-self-host 12.7.0 (relaycast main bf713d86, engine 12.7.0), built by the reviewed publish-container workflow with an SPDX SBOM, max-mode provenance and a GitHub build-provenance attestation (run 41717074565); public, amd64+arm64.' + - id: relaycast-0.3.1 + status: shipped charts: { relaycast: 0.3.1 } app_versions: { relaycast: 12.2.1-selfhost.1 } images: relaycast: { repository: ghcr.io/agentworkforce/relaycast-self-host, digest: sha256:a05732ad4f3614d057bb1460df40a30e3a9297c8930bfdda6d4e3d6dc9f41762 } - notes: 'README-only bump of 0.3.0 for the sessions-pipeline rename.' + notes: 'README-only bump of 0.3.0 for the sessions-pipeline rename. Superseded by 0.3.2.' - id: relaycast-0.3.0 status: shipped charts: { relaycast: 0.3.0 } @@ -343,18 +350,18 @@ compatibility: images: relayauth: { repository: ghcr.io/agentworkforce/relayauth, digest: sha256:eb71daa28e30eb7305f666d0bccc5a4002e53e8a574e3c4c32163d907a1b71df } notes: superseded by 0.1.1. - - id: agent-relay-0.3.2 + - id: agent-relay-0.3.3 status: unreleased current: true - charts: { agent-relay: 0.3.2, relayhistory: 0.1.1, relay-cloud-api: 0.2.1, relay-dashboard: 0.1.0 } + charts: { agent-relay: 0.3.3, relayhistory: 0.1.1, relay-cloud-api: 0.2.1, relay-dashboard: 0.1.0 } app_versions: { agent-relay: 0.1.0, relayhistory: 0.1.0, relay-cloud-api: 0.1.0, relay-dashboard: 0.1.0 } depends: - agent-relay: { relaycast: 0.3.1, relayauth: 0.1.2, sessions-pipeline: 0.6.0, relayhistory: 0.1.1, relay-cloud-api: 0.2.1, relay-dashboard: 0.1.0, relayflows: 0.2.4, durable-actors: 0.14.6, relayfile: 0.2.0 } + agent-relay: { relaycast: 0.3.2, relayauth: 0.1.2, sessions-pipeline: 0.6.0, relayhistory: 0.1.1, relay-cloud-api: 0.2.1, relay-dashboard: 0.1.0, relayflows: 0.2.4, durable-actors: 0.14.6, relayfile: 0.2.0 } images: relayhistory: { repository: ghcr.io/agentworkforce/relayhistory, digest_required: true } relay-cloud-api: { repository: ghcr.io/agentworkforce/selfhost-api, digest_required: true } relay-dashboard: { repository: ghcr.io/agentworkforce/relay-dashboard, digest_required: true } - notes: 'GKE proof refresh on top of 0.3.1 (tag agent-relay-0.3.1). Proof overlays only: values-gcp-proof-durable-actors.yaml pins relaycast-actors-gateway sha256:faf66ec45d2c755ab5cdc6ee32bca6dc48446dff444118cab18fa1f765124ffa and relaycast-actors-deployer sha256:a81e91ed52bfb7cbb0a8c2773752df3b5d78afdc443608998b3203a30e314cee (relaycast main 3624cc12); values-gcp-proof-relayfile.yaml pins relayfile-actors sha256:7fb2110701a004f9f7ed2b025d25156fbe993208598bfbd0498a48b30df48299 and relayfile-actors-workspace sha256:c5851a1b1f7624390a1a00ebdee69e8e521dc3f23f345c582d62e09dba9a6e83 (relayfile main 39f84fcf); values-gcp-proof-live.yaml pins the experimental unsupported RelayHistory sha256:f36ae1671bdcd88a2b8b2df62c8edecb1381237d9f968747b39298959ad33563 (relayhistory-cloud 3cb76752). Proof CPU requests sized for the e2-medium pool, and the README documents the write-hold upgrade with the Relayflows smoke Job. The customer profile (values-gcp.yaml) and templates are unchanged from 0.3.1.' + notes: '0.3.3 (tag agent-relay-0.3.3) moves relaycast to chart 0.3.2 and pins relaycast-self-host sha256:81274dca7ab58673383dc7a9c777f422f29606c7422e81b5ea15724770f1455e (relaycast main bf713d86, engine 12.7.0; SBOM + max-mode provenance + GitHub attestation; public) in values-gcp.yaml, and includes the never-tagged 0.3.2 proof refresh: GKE proof refresh on top of 0.3.1 (tag agent-relay-0.3.1). Proof overlays only: values-gcp-proof-durable-actors.yaml pins relaycast-actors-gateway sha256:faf66ec45d2c755ab5cdc6ee32bca6dc48446dff444118cab18fa1f765124ffa and relaycast-actors-deployer sha256:a81e91ed52bfb7cbb0a8c2773752df3b5d78afdc443608998b3203a30e314cee (relaycast main 3624cc12); values-gcp-proof-relayfile.yaml pins relayfile-actors sha256:7fb2110701a004f9f7ed2b025d25156fbe993208598bfbd0498a48b30df48299 and relayfile-actors-workspace sha256:c5851a1b1f7624390a1a00ebdee69e8e521dc3f23f345c582d62e09dba9a6e83 (relayfile main 39f84fcf); values-gcp-proof-live.yaml pins the experimental unsupported RelayHistory sha256:f36ae1671bdcd88a2b8b2df62c8edecb1381237d9f968747b39298959ad33563 (relayhistory-cloud 3cb76752). Proof CPU requests sized for the e2-medium pool, and the README documents the write-hold upgrade with the Relayflows smoke Job. The customer profile (values-gcp.yaml) and templates are unchanged from 0.3.1.' - id: agent-relay-0.3.1 status: shipped charts: { agent-relay: 0.3.1, relayhistory: 0.1.1, relay-cloud-api: 0.2.1, relay-dashboard: 0.1.0 }