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

  1. Read the {e} detail: transport/auth errors mean fix endpoint/credentials first; CAS/race failures mean the backend genuinely lacks linearizable conditional writes
  2. Upgrade to a backend with conditional-write support (recent MinIO, real AWS S3)
  3. If throttling is implicated, lower probe pressure via BUZZ_GIT_PROBE_WRITERS / BUZZ_GIT_PROBE_ROUNDS and retry
  4. 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

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


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)