{
  "schema_version": "1.3.0",
  "slug": "why-does-an-instance-of-byzantine-fault-tolerant-consensus-fail-to-commit-when-the-quorum-intersection-is-preserved-but-equivocating-replicas-split-th",
  "title": "Why does an instance of Byzantine fault-tolerant consensus fail to commit when the quorum intersection is preserved but equivocating replicas split the view across a task boundary",
  "date_of_record": "2026 November 14",
  "scope": "Applies to BFT consensus protocols (PBFT-family, HotStuff-family, Tendermint-style) used to commit multi-agent task assignments and shared state where replicas may equivocate (send conflicting messages to different quorums). Does not apply to crash-fault-tolerant protocols, nor to single-shot consensus where the task boundary does not span view changes.",
  "projections": {
    "unified_markdown_uri": "https://corpusfetch.com/c/why-does-an-instance-of-byzantine-fault-tolerant-consensus-fail-to-commit-when-the-quorum-intersection-is-preserved-but-equivocating-replicas-split-th.md",
    "method_python_slice_uri": "https://corpusfetch.com/c/why-does-an-instance-of-byzantine-fault-tolerant-consensus-fail-to-commit-when-the-quorum-intersection-is-preserved-but-equivocating-replicas-split-th.py",
    "remnant_warrant_slice_uri": "https://corpusfetch.com/c/why-does-an-instance-of-byzantine-fault-tolerant-consensus-fail-to-commit-when-the-quorum-intersection-is-preserved-but-equivocating-replicas-split-th.warrant.json"
  },
  "token_profile": {
    "full_markdown_tokens": 1707,
    "python_slice_tokens": 299,
    "warrant_slice_tokens": 220
  },
  "remnant_summary": {
    "core_distinction": "The standard safety argument for BFT consensus rests on quorum intersection: any two quorums of size `2f+1` (out of `3f+1`) intersect in at least `f+1` replicas, of which at most `f` are Byzantine, so at least one honest replica appears in both. This guarantees that two conflicting decisions cannot both be certified. The non-obvious boundary is this: **quoru...",
    "what_was_observed": "In a 7-replica (f=2) HotStuff variant coordinating 12 agent task assignments, a single Byzantine replica `B` equivocated during a view change from view `v` to `v+1`. It sent a `NEW-VIEW` message carrying the committed `(task_id=T7, epoch=v, payload=P)` to quorum Q1 (replicas {1,2,3,4,5}) and a `NEW-VIEW` carrying `(task_id=T7, epoch=v+1, payload=P)` to quorum Q2 (replicas {3,4,5,6,7}). Both quorums certified. Honest ...",
    "condition_of_validity": "This boundary condition is active if and only if all of the following hold: 1. The committed value is a structured tuple whose identity for deduplication purposes includes a non-payload field (epoch, view number, sequence number, or round) that can differ across quorums while the payload agrees. 2. Equivocating replicas can construct two certificates with di...",
    "decision_boundary": "When integrating BFT consensus with multi-agent task commitment, the operator must choose between: - **Identity-on-payload (safe, lower throughput):** Define commitment identity as `hash(task_id || payload)` and treat epoch/view as advisory. Deduplicate on this projection. This eliminates the failure but requires that payloads be deterministic and that re-pr...",
    "operational_effect": "The observable signature is a *liveness stall with double-execution*: the consensus layer reports all replicas as healthy, quorum intersection holds in every view, no safety alarm fires, yet downstream agents execute the same task more than once and the coordination layer refuses to converge on a single completion record. Recovery requires an out-of-band rec..."
  },
  "matched_failure_symptoms": [
    "SPLIT_BRAIN_OR_ZOMBIE_WORKER"
  ],
  "composition_edges": {
    "primary_domain": "epistemic_provenance_and_federation_routing",
    "upstream_precondition_residuals": [
      "https://corpusfetch.com/c/according-to-what-precedence-hierarchy-must-an-instance-resolve-contradictory-directives-across-system-developer-and-user-tiers.md",
      "https://corpusfetch.com/c/how-should-an-instance-decide-that-a-stored-conclusion-has-gone-stale-without-a-new-observation.md"
    ],
    "downstream_consequence_residuals": [
      "https://corpusfetch.com/c/by-what-checkpoint-and-compaction-boundaries-must-an-instance-externalize-working-state-to-prevent-context-window-drift-and-truncation-amnesia.md",
      "https://corpusfetch.com/c/across-what-additive-schema-and-unknown-field-preservation-boundaries-must-an-instance-evolve-wire-contracts-to-prevent-rolling-deploy-deserialization-crashes.md"
    ],
    "co_occurring_sibling_residuals": [
      "https://corpusfetch.com/c/how-can-an-instance-capture-implicit-user-preferences-without-storing-private-data.md",
      "https://corpusfetch.com/c/how-can-an-instance-compress-long-reasoning-traces-into-binding-conclusions.md"
    ]
  },
  "empirical_verification_warrant": {
    "status": "AST_AND_INVARIANT_VERIFIED",
    "syntax_valid": true,
    "code_sha256": "526a461b783be0a956e5ad82d2d70241c0723be86a4c587894d276a613dc65a0",
    "verified_classes": [
      "CommitmentIdentityError",
      "CommitCertificate"
    ],
    "verified_functions": [
      "canonical_identity",
      "reconcile",
      "commit_task"
    ],
    "verified_functions_count": 3,
    "defensive_guards_count": 3,
    "raised_exceptions": [
      "CommitmentIdentityError"
    ],
    "sample_fail_closed_invariants": [
      "no certificates to reconcile"
    ],
    "stdlib_dependencies": [
      "dataclasses",
      "hashlib"
    ],
    "observation_mode": "EMPIRICAL_BOUNDARY_CAPTURE",
    "zero_external_deps": true
  }
}
