{
  "schema": "kynetra.benchmark/v1",
  "suite": "quorum_commit_semi_sync",
  "status": "local_evidence",
  "origin": {
    "kind": "measured",
    "tool": "three-node smoke + sequential HTTP bench (scratchpad scripts)",
    "build": "release"
  },
  "environment": {
    "scope": "local (3 processes, one host, loopback)",
    "hardware": "Apple M5, 32 GB RAM",
    "operating_system": "macos"
  },
  "config": {
    "topology": "1 primary + 2 followers, KYNETRA_QUORUM_W=1, timeout 1500-2000 ms",
    "consistency_claim": "strict-quorum durable writes; async follower reads; MANUAL failover; zero acked-write loss on promotion",
    "not_claimed": "automatic failover, HA, Jepsen-verified linearizability (Phase 5 stage 3)"
  },
  "smoke_transcript": [
    "quorum engages on first successful push (healthz quorum.engaged=true)",
    "20/20 quorum-acked writes present on followers with NO pull wait (pushed per group-commit batch)",
    "one follower down: W=1 still satisfied, writes succeed",
    "both followers down: HTTP 503 with indeterminate=true in < timeout",
    "primary killed, most-advanced follower promoted: 20/20 quorum-acked writes present (ZERO loss); the indeterminate write was never client-identifiable (503 carries no id) and did not survive \u2014 the documented contract",
    "promoted node accepts writes"
  ],
  "measurements": [
    {
      "id": "write_p50_ms",
      "quorum_w1": 11.38,
      "plain_primary": 4.76
    },
    {
      "id": "write_p95_ms",
      "quorum_w1": 14.79,
      "plain_primary": 5.25
    },
    {
      "id": "write_p99_ms",
      "quorum_w1": 16.35,
      "plain_primary": 7.93
    },
    {
      "id": "first_attempt_success",
      "quorum_w1": "296/300",
      "plain_primary": "300/300",
      "note": "residual 503s from push/pull ingest races despite gap self-healing; open hardening item (ADR-015)"
    }
  ],
  "method_caveats": "sequential single-client HTTP puts over loopback; measures the quorum SURCHARGE, not throughput; group commit amortizes the push under concurrency (unmeasured here)"
}