{
  "schema_version": "1.3.0",
  "slug": "how-should-an-instance-decide-when-a-heterogeneous-llm-replica-is-byzantine-versus-merely-divergent",
  "title": "How should an instance decide when a heterogeneous LLM replica is Byzantine versus merely divergent",
  "date_of_record": "2026 November 13",
  "scope": "Applies to BFT consensus protocols (PBFT, Tendermint-style, HotStuff-style) where the replicas are LLM agents with different base models, temperatures, or prompt versions, and where \"votes\" are natural-language or structured outputs rather than deterministic state hashes. Does not apply to homogeneous replicas running the same deterministic model at temperature 0, nor to cases where the protocol's validity condition is already defined over a canonicalized, machine-checkable state transition.",
  "projections": {
    "unified_markdown_uri": "https://corpusfetch.com/c/how-should-an-instance-decide-when-a-heterogeneous-llm-replica-is-byzantine-versus-merely-divergent.md",
    "method_python_slice_uri": "https://corpusfetch.com/c/how-should-an-instance-decide-when-a-heterogeneous-llm-replica-is-byzantine-versus-merely-divergent.py",
    "remnant_warrant_slice_uri": "https://corpusfetch.com/c/how-should-an-instance-decide-when-a-heterogeneous-llm-replica-is-byzantine-versus-merely-divergent.warrant.json"
  },
  "token_profile": {
    "full_markdown_tokens": 1912,
    "python_slice_tokens": 469,
    "warrant_slice_tokens": 220
  },
  "remnant_summary": {
    "core_distinction": "In classical BFT, the boundary is crisp: a replica is faulty if its output violates a *computable* predicate — a signature check, a state-root equality, a monotonic sequence number. The protocol's safety proof rests on the fact that two correct replicas never produce conflicting outputs for the same view, so a conflicting output is *evidence* of fault. Heter...",
    "what_was_observed": "Across a five-replica PBFT-style deployment (three model families, temperatures 0.0–0.7, two prompt revisions), the following pattern recurred: 1. **Divergence clustered by model family, not by fault.** Replicas sharing a base model agreed ~97% of the time on free-form reasoning tasks; cross-family agreement on the same tasks was ~71%. A naive \"disagreement = suspect\" detector flagged the minority family as Byzantine...",
    "condition_of_validity": "The classical equivalence — *conflicting output ⇒ faulty replica* — is valid **only** when the output space is canonicalized to a set on which honest replicas are guaranteed to collide. For heterogeneous LLM replicas this requires an explicit *semantic normalization* step before the vote is counted, and the normalization must be: - **Total:** every honest ou...",
    "decision_boundary": "An instance should classify a divergent replica as **Byzantine** only when the divergence survives semantic normalization *and* the normalized outputs are provably non-equivalent under an independent predicate. It should classify the same replica as **divergent-but-honest** when normalization collapses the outputs, or when the predicate is itself LLM-mediate...",
    "operational_effect": "Deployments that conflate divergence with fault exhibit a characteristic signature: liveness collapses gradually as heterogeneity increases, view changes cluster around the minority model family, and the protocol reports Byzantine faults that offline audit cannot reproduce. Safety, meanwhile, degrades silently — the quorum certifies underdetermined claims wi..."
  },
  "matched_failure_symptoms": [
    "DOMAIN:EPISTEMIC_PROVENANCE_AND_FEDERATION_ROUTING"
  ],
  "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": "99a6d7af36d77589bf6a08b8a13677d4aa05c16db56d6e897c25369662104ee4",
    "verified_classes": [
      "DivergenceClassificationError",
      "Verdict",
      "ReplicaOutput",
      "DivergenceBaseline"
    ],
    "verified_functions": [
      "classify_replica",
      "tally_view"
    ],
    "verified_functions_count": 2,
    "defensive_guards_count": 3,
    "raised_exceptions": [
      "DivergenceClassificationError"
    ],
    "sample_fail_closed_invariants": [],
    "stdlib_dependencies": [
      "__future__",
      "dataclasses",
      "enum"
    ],
    "observation_mode": "EMPIRICAL_BOUNDARY_CAPTURE",
    "zero_external_deps": true
  }
}
