Environment
- Relay:
ghcr.io/block/buzz:sha-2d26db6 (2d26db6d8a7381ff0dc9b50194fd28d42957de74); reproduced identically on sha-acfbb1b (2026-07-22 main)
- Object storage: Google Cloud Storage via the S3-interop XML API (
BUZZ_S3_ENDPOINT=https://storage.googleapis.com, HMAC service-account credentials)
- Deployment: GKE, chart
buzz 0.1.6, external Postgres/Redis
What happens
Relay startup is fatal at the A3 git conformance gate:
INFO running git object-store conformance probe (A3 gate)
Error: git conformance probe failed: conformance probe failed in phase 'if_match_race' (round 0, key probe/pointer-0d592977-…)
Media paths on the same bucket/credentials work (Media storage connected;
put/get verified end-to-end through the app).
Why
The probe is right to fail: GCS's S3-interoperability layer does not honor
S3-style conditional writes (If-Match/If-None-Match preconditions on PUT),
so the linearizable pointer CAS that run_conformance_probe verifies (and
that the manifest-pointer protocol needs) cannot be satisfied. This makes
git-on-object-storage unusable on GCS for any deployer using the documented
S3 configuration — the probe converts that into a hard startup failure.
What we did (and why it's not a fix)
Booted the pilot with BUZZ_GIT_CONFORMANCE_PROBE=false and quarantined git
features operationally. That's an availability workaround, not a solution —
the probe's verdict about pointer CAS still stands.
Proposal
GCS does support real CAS — via its native preconditions
(x-goog-if-generation-match: 0 for create-if-absent, generation-match for
compare-and-swap). Options in rough order of preference:
- Native GCS storage backend for the git object store (JSON/XML API with
generation preconditions) behind the existing storage trait.
- Conditional-write shim for GCS endpoints: detect
storage.googleapis.com and translate the pointer-CAS operations to
x-goog-* preconditions while leaving plain put/get on the S3 path.
- At minimum, document that git-on-object-storage requires a backend with
S3 conditional-write semantics (AWS S3 ≥ 2024 If-Match support, MinIO, R2?)
and name GCS S3-interop as unsupported — so deployers hit a doc instead of
a fatal probe.
We (Apiary — hosted Buzz on GCP) are happy to test any of these against real
GCS, and would rather contribute the backend than run a MinIO shim in front
of GCS.
Environment
ghcr.io/block/buzz:sha-2d26db6(2d26db6d8a7381ff0dc9b50194fd28d42957de74); reproduced identically onsha-acfbb1b(2026-07-22 main)BUZZ_S3_ENDPOINT=https://storage.googleapis.com, HMAC service-account credentials)buzz0.1.6, external Postgres/RedisWhat happens
Relay startup is fatal at the A3 git conformance gate:
Media paths on the same bucket/credentials work (
Media storage connected;put/get verified end-to-end through the app).
Why
The probe is right to fail: GCS's S3-interoperability layer does not honor
S3-style conditional writes (
If-Match/If-None-Matchpreconditions on PUT),so the linearizable pointer CAS that
run_conformance_probeverifies (andthat the manifest-pointer protocol needs) cannot be satisfied. This makes
git-on-object-storage unusable on GCS for any deployer using the documented
S3 configuration — the probe converts that into a hard startup failure.
What we did (and why it's not a fix)
Booted the pilot with
BUZZ_GIT_CONFORMANCE_PROBE=falseand quarantined gitfeatures operationally. That's an availability workaround, not a solution —
the probe's verdict about pointer CAS still stands.
Proposal
GCS does support real CAS — via its native preconditions
(
x-goog-if-generation-match: 0for create-if-absent, generation-match forcompare-and-swap). Options in rough order of preference:
generation preconditions) behind the existing storage trait.
storage.googleapis.comand translate the pointer-CAS operations tox-goog-*preconditions while leaving plain put/get on the S3 path.S3 conditional-write semantics (AWS S3 ≥ 2024 If-Match support, MinIO, R2?)
and name GCS S3-interop as unsupported — so deployers hit a doc instead of
a fatal probe.
We (Apiary — hosted Buzz on GCP) are happy to test any of these against real
GCS, and would rather contribute the backend than run a MinIO shim in front
of GCS.