Skip to content

Commit 2db429b

Browse files
committed
chore(release): repin x402 images to c19ffaf for rc14
Rebuild x402-verifier, serviceoffer-controller, and x402-buyer from release/v0.10.0-rc14 HEAD (docker-publish-x402 workflow_dispatch run 27265470511) and repin the embedded manifests to the new multi-arch digests. Resolves the FOLLOW-UP gate recorded in embed_image_pin_test.go: the prior 04bebbc pins were this train's merge base and contained none of the train's verifier/controller/buyer changes (settled-but-failed ConfirmSpend, settle tx hash on the error path, maxTimeoutSeconds on the 402 wire, UID-1000 sub-agent rendering, Hermes v2026.6.5 default).
1 parent c19ffaf commit 2db429b

4 files changed

Lines changed: 27 additions & 30 deletions

File tree

internal/embed/embed_crd_test.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -819,10 +819,12 @@ func TestX402VerifierImage_CarriesAgentAuthFix(t *testing.T) {
819819
t.Fatalf("ReadInfrastructureFile: %v", err)
820820
}
821821

822-
// Bumped to 04bebbc (current main HEAD as of rc13) to also carry ab71481
823-
// (suppress verifyOnly=false warning on the in-process settle path). The
824-
// agent upstream auth fix from abfd55a remains in scope.
825-
const ref = "ghcr.io/obolnetwork/x402-verifier:04bebbc@sha256:a80f72c89341a422724ad1b5d5d5da0c8cdd246b9dcabc6560e369b48ed5d775"
822+
// Bumped to c19ffaf (release/v0.10.0-rc14 HEAD) to carry the rc14
823+
// verifier changes: settle tx hash surfaced via X-PAYMENT-RESPONSE on
824+
// the error path and ClampMaxTimeoutSeconds on the 402 wire. The agent
825+
// upstream auth fix from abfd55a and ab71481's verifyOnly warning
826+
// suppression remain in scope (ancestors via main).
827+
const ref = "ghcr.io/obolnetwork/x402-verifier:c19ffaf@sha256:535067aa8bcfaac6f628d76733c5786b0d0e46f70e8ffdc978d53e91e27fb8e6"
826828
if !strings.Contains(string(data), "image: "+ref) {
827829
t.Fatalf("x402-verifier image must carry agent upstream auth fix: %s", ref)
828830
}
@@ -835,7 +837,9 @@ func TestX402VerifierImage_CarriesAgentAuthFix(t *testing.T) {
835837
// built from source that has that behaviour — the prior f5d94fc side-branch pin
836838
// did not, so the deployed binary Updated the per-agent Secrets on re-reconcile
837839
// and 403'd. b39bcaa (post-rc10 main) carries the fix, and also ships PR #590's
838-
// actionable pending-registration status message.
840+
// actionable pending-registration status message. The current c19ffaf pin
841+
// (release/v0.10.0-rc14 HEAD) descends from b39bcaa via main, so the fix
842+
// remains in scope.
839843
// Bumping this pin requires a conscious, documented change here so a future
840844
// downgrade can't silently re-ship the bug.
841845
func TestServiceOfferControllerImage_CarriesSecretCreateOnlyFix(t *testing.T) {
@@ -844,7 +848,7 @@ func TestServiceOfferControllerImage_CarriesSecretCreateOnlyFix(t *testing.T) {
844848
t.Fatalf("ReadInfrastructureFile: %v", err)
845849
}
846850

847-
const ref = "ghcr.io/obolnetwork/serviceoffer-controller:04bebbc@sha256:286d07604c001006d54a5f89ef854210ab805859c072e7b8dd89fe0c6f130d7d"
851+
const ref = "ghcr.io/obolnetwork/serviceoffer-controller:c19ffaf@sha256:7d907f525f7b020a5b40a87c7088b9a12286b4c9197bd2f1ee8d5e4710ff7346"
848852
if !strings.Contains(string(data), "image: "+ref) {
849853
t.Fatalf("serviceoffer-controller image must carry the Secret-create-only reconciler fix "+
850854
"(else per-agent provisioning 403s under the no-update/patch Secret RBAC): %s", ref)

internal/embed/embed_image_pin_test.go

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -230,31 +230,24 @@ func TestEmbeddedImages_X402ControllerAndBuyerUseFixPins(t *testing.T) {
230230
ref string
231231
}{
232232
{
233-
// Repinned to 04bebbc (current main HEAD as of rc13) to pick up:
234-
// - ab71481 fix(x402): suppress verifyOnly=false warning on the
235-
// in-process settle path — covers the per-request log spam
236-
// seen by sell-agent buyers on the prior pin.
237-
// - 86b8c9f fix(x402-buyer): drop expired pre-signed auths
238-
// before signing — affects long-running paid inference.
233+
// Repinned to c19ffaf (release/v0.10.0-rc14 HEAD; the rc11
234+
// pattern, cf. 8fb1553) — images built from the release branch
235+
// via docker-publish-x402 workflow_dispatch, so unlike the prior
236+
// 04bebbc base pin they DO contain this train's source changes:
237+
// - controller renders sub-agents with Hermes v2026.6.5 and
238+
// the UID-1000 kubelet-owned permission model (#610), and
239+
// surfaces maxTimeoutSeconds in the catalog ext (#614).
240+
// - buyer carries the settled-but-failed ConfirmSpend branch
241+
// (>=400 + settle tx hash counts as money moved) (#614).
239242
// Still carries the Secret-create-only reconciler change from
240-
// b39bcaa. See TestServiceOfferControllerImage_CarriesSecretCreateOnlyFix.
241-
//
242-
// FOLLOW-UP REQUIRED after this PR merges: 04bebbc is this PR's
243-
// own merge base, so these images do NOT contain this PR's source
244-
// changes — the controller still renders sub-agents with Hermes
245-
// v2026.5.28 (compiled-in agent_render.go default), the verifier
246-
// still hardcodes maxTimeoutSeconds=60 and drops the settle tx
247-
// hash on facilitator errors, and the buyer lacks the
248-
// settled-but-failed ConfirmSpend branch. Rebuild all three from
249-
// the merge commit and repin (the rc11 pattern, cf. 8fb1553)
250-
// before cutting v0.10.0 final. OBOL_DEVELOPMENT=true masks this
251-
// locally because dev clusters rebuild from worktree source.
243+
// b39bcaa and the earlier ab71481/86b8c9f fixes (ancestors via
244+
// main). See TestServiceOfferControllerImage_CarriesSecretCreateOnlyFix.
252245
file: "base/templates/x402.yaml",
253-
ref: "ghcr.io/obolnetwork/serviceoffer-controller:04bebbc@sha256:286d07604c001006d54a5f89ef854210ab805859c072e7b8dd89fe0c6f130d7d",
246+
ref: "ghcr.io/obolnetwork/serviceoffer-controller:c19ffaf@sha256:7d907f525f7b020a5b40a87c7088b9a12286b4c9197bd2f1ee8d5e4710ff7346",
254247
},
255248
{
256249
file: "base/templates/llm.yaml",
257-
ref: "ghcr.io/obolnetwork/x402-buyer:04bebbc@sha256:1c2bb19824bae2caf4b305a495b6686ff6e973b378c2b88fc89d73a06265aaf7",
250+
ref: "ghcr.io/obolnetwork/x402-buyer:c19ffaf@sha256:e23e30430670600faf2c1082c1bfbd5ae78d99c0355cf31c98e3c77e52f5fd2d",
258251
},
259252
}
260253

internal/embed/infrastructure/base/templates/llm.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,14 +303,14 @@ spec:
303303
- name: x402-buyer
304304
# Pinned by sha256 digest (multi-arch manifest list, amd64+arm64)
305305
# so the deployed sidecar is byte-for-byte identical across QA
306-
# hosts. The :04bebbc tag is preserved for human readability; the
306+
# hosts. The :c19ffaf tag is preserved for human readability; the
307307
# digest is authoritative.
308308
# Previous tag-only pin allowed the local-build path to silently
309309
# reuse a 5-day-old `:latest` image and ate the release-smoke 503
310310
# investigation: stale buyer serialized X-PAYMENT with empty
311311
# authorization fields → facilitator /verify 400 → 503 cascade
312312
# across flow-08/11/14/13. See internal/embed/embed_image_pin_test.go.
313-
image: ghcr.io/obolnetwork/x402-buyer:04bebbc@sha256:1c2bb19824bae2caf4b305a495b6686ff6e973b378c2b88fc89d73a06265aaf7
313+
image: ghcr.io/obolnetwork/x402-buyer:c19ffaf@sha256:e23e30430670600faf2c1082c1bfbd5ae78d99c0355cf31c98e3c77e52f5fd2d
314314
imagePullPolicy: IfNotPresent
315315
# PSS Restricted + writable PVC. On fresh clusters the StorageClass
316316
# asks local-path-provisioner for local PVs, so kubelet applies the

internal/embed/infrastructure/base/templates/x402.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,7 +250,7 @@ spec:
250250
type: RuntimeDefault
251251
containers:
252252
- name: verifier
253-
image: ghcr.io/obolnetwork/x402-verifier:04bebbc@sha256:a80f72c89341a422724ad1b5d5d5da0c8cdd246b9dcabc6560e369b48ed5d775
253+
image: ghcr.io/obolnetwork/x402-verifier:c19ffaf@sha256:535067aa8bcfaac6f628d76733c5786b0d0e46f70e8ffdc978d53e91e27fb8e6
254254
imagePullPolicy: IfNotPresent
255255
# PSS Restricted: per-container hardening. Verifier is a Go binary
256256
# reading two RO ConfigMaps; no writeable rootfs paths required.
@@ -352,7 +352,7 @@ spec:
352352
# bug; b39bcaa (post-rc10 main) carries it, and also ships PR #590's
353353
# actionable pending-registration status message.
354354
# See TestServiceOfferControllerImage_CarriesSecretCreateOnlyFix.
355-
image: ghcr.io/obolnetwork/serviceoffer-controller:04bebbc@sha256:286d07604c001006d54a5f89ef854210ab805859c072e7b8dd89fe0c6f130d7d
355+
image: ghcr.io/obolnetwork/serviceoffer-controller:c19ffaf@sha256:7d907f525f7b020a5b40a87c7088b9a12286b4c9197bd2f1ee8d5e4710ff7346
356356
imagePullPolicy: IfNotPresent
357357
securityContext:
358358
allowPrivilegeEscalation: false

0 commit comments

Comments
 (0)