block/buzz · critical · anyhow::Error
git conformance probe failed
Error message
git conformance probe failed: {e} What it means
Fatal startup error: the git object-store conformance probe (A3 gate) failed. Before serving git traffic, the relay runs concurrent conditional-write races against the configured S3/MinIO backend to prove it satisfies the linearizable conditional-write axiom the manifest-pointer protocol depends on. A backend that cannot pass CAS is rejected outright — this is a deployment gate, deliberately fatal. The probe runs by default; BUZZ_GIT_CONFORMANCE_PROBE=false disables it, and BUZZ_GIT_PROBE_WRITERS / BUZZ_GIT_PROBE_ROUNDS scale its width (default 32 writers, 3 rounds).
Solutions
- Read the {e} detail: transport/auth errors mean fix endpoint/credentials first; CAS/race failures mean the backend genuinely lacks linearizable conditional writes
- Upgrade to a backend with conditional-write support (recent MinIO, real AWS S3)
- If throttling is implicated, lower probe pressure via BUZZ_GIT_PROBE_WRITERS / BUZZ_GIT_PROBE_ROUNDS and retry
- Only as a last resort, set BUZZ_GIT_CONFORMANCE_PROBE=false — and only after independently verifying the backend, since you are disabling the safety gate for the manifest-pointer protocol
Defensive patterns
Strategy: validation
Validate before calling
# Pre-deploy: run the same probe the gate runs, in staging, against the # production-shaped S3/MinIO: # BUZZ_GIT_CONFORMANCE_PROBE=true ./buzz-relay (staging only) # Passing there before deploy prevents a fatal boot in production.
Try / catch
// Distinguish transport errors (fix endpoint/credentials, retry boot) from // CAS/race failures (replace or upgrade the object-store backend — retries // cannot help a backend that lacks linearizable conditional writes).
Prevention
- Choose an S3-compatible backend that implements conditional writes (recent MinIO, AWS S3)
- Run the conformance probe in staging against production-shaped storage before each deploy
- Do not set BUZZ_GIT_CONFORMANCE_PROBE=false to make boot pass — it disables the safety gate the manifest-pointer protocol relies on
- Keep probe pressure (BUZZ_GIT_PROBE_WRITERS/ROUNDS) within the backend's throttle budget
When it happens
Trigger: The configured object store does not implement (or misimplements) conditional writes — e.g. an S3-compatible appliance without If-None-Match support, or eventual-consistency behavior breaking the race; the probe also fails on transport errors reaching the endpoint (down MinIO, wrong credentials) since it performs real writes.
Common situations: Deploying git-over-object-storage against a niche S3 clone that lacks conditional-put support; MinIO version too old for conditional writes; S3 endpoint/credential misconfig that only surfaces when writes are attempted; heavy throttling during boot causing probe writers to fail.
Related errors
- failed to initialize media storage
- invalid media config
- Audit DB connection failed
- BUZZ_RELAY_PRIVATE_KEY is required when…
- Cannot derive a community host from BUZZ_RELAY_URL
AI-assisted analysis of block/buzz@ef2aa1ae38 (2026-08-20).
Data as JSON: /api/errors/038623e20a78fc91.
Report an issue: GitHub.
Appendix: source
Thrown at crates/buzz-relay/src/main.rs:589
.unwrap_or(32);
let race_rounds = std::env::var("BUZZ_GIT_PROBE_ROUNDS")
.ok()
.and_then(|v| v.parse().ok())
.unwrap_or(3);
let cfg = buzz_relay::api::git::store::ProbeConfig {
race_width,
race_rounds,
};
tracing::info!(
race_width,
race_rounds,
"running git object-store conformance probe (A3 gate)"
);
let report = state
.git_store
.run_conformance_probe(cfg)
.await
.map_err(|e| anyhow::anyhow!("git conformance probe failed: {e}"))?;
tracing::info!(
race_width = report.race_width,
race_rounds = report.race_rounds,
transport_drops = report.transport_drops,
"git object-store backend admitted: A3 conformance probe passed"
);
}
match state.db.verify_channel_roster_fence().await {
Ok(()) => {
info!("Channel roster fence verified");
}
Err(error) => {
error!(%error, "Channel roster fence validation failed");
return Err(anyhow::anyhow!(
"Channel roster fence is unsafe; apply or repair migration 0032 before starting this relay: {error}"
));
}View on GitHub (pinned to ef2aa1ae38)