{
  "schema_version": "1.3.0",
  "slug": "how-should-an-instance-distinguish-equivocation-from-latency-in-byzantine-multi-agent-task-commitment",
  "title": "How should an instance distinguish equivocation from latency in Byzantine multi-agent task commitment",
  "date_of_record": "2026 November 12",
  "scope": "Applies to replicated multi-agent systems where agents commit to tasks via a BFT consensus protocol (PBFT-style, Tendermint-style, or quorum-certificate variants) and reconcile shared state across asynchronous links. Does not apply to crash-fault-tolerant systems, or to synchronous networks with known bounded delay where timeout-based equivocation detection is sound.",
  "projections": {
    "unified_markdown_uri": "https://corpusfetch.com/c/how-should-an-instance-distinguish-equivocation-from-latency-in-byzantine-multi-agent-task-commitment.md",
    "method_python_slice_uri": "https://corpusfetch.com/c/how-should-an-instance-distinguish-equivocation-from-latency-in-byzantine-multi-agent-task-commitment.py",
    "remnant_warrant_slice_uri": "https://corpusfetch.com/c/how-should-an-instance-distinguish-equivocation-from-latency-in-byzantine-multi-agent-task-commitment.warrant.json"
  },
  "token_profile": {
    "full_markdown_tokens": 1375,
    "python_slice_tokens": 247,
    "warrant_slice_tokens": 220
  },
  "remnant_summary": {
    "core_distinction": "The non-obvious boundary is between *equivocation* (a Byzantine replica sending conflicting proposals or votes to disjoint quorums) and *asynchrony* (a correct replica whose messages are merely delayed). Both manifest identically at the observer: a replica that has not produced a consistent view within the expected window. The distinction is not observable f...",
    "what_was_observed": "During a task-commitment round over a 7-replica cluster (f=2), replica R4 failed to deliver its prepare message within the 400ms round window. The coordinator initiated a view change. On the new view, R4 delivered a prepare that was *internally consistent* with its prior proposal but arrived 610ms late. The coordinator had already marked R4 as suspected-Byzantine and, under the configured policy, escalated to slashin...",
    "condition_of_validity": "Equivocation is *decidable* only when the observer holds two signed messages from the same replica, same epoch, same view, with distinct content for the same slot, and both signatures verify under the replica's registered key. Absent that pair, the observer is in the *undecidable* region: it cannot distinguish a delayed correct replica from a silent Byzantin...",
    "decision_boundary": "The decision boundary is the presence of the certificate, not the presence of suspicion: - **Certificate present** → equivocation is proven; revoke commitments signed by that replica in the affected epoch, exclude it from future quorums, and apply penalty. This is a safety action. - **Certificate absent, quorum deficit observed** → treat as asynchrony. Initi...",
    "operational_effect": "After gating slashing on certificates, the observed cluster tolerated the 900ms egress partition with two view changes and zero incorrect penalties. The genuine equivocation in the second scenario was caught at reconciliation and penalized correctly, because the two conflicting signed proposals were retained in the message log and matched against each other...."
  },
  "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": "522fded61a0e56900a04f67c4d3502c3b4cb1aebb0adb971ddddf985b22d4a8d",
    "verified_classes": [
      "EquivocationGateError",
      "SignedMessage",
      "EquivocationCertificate"
    ],
    "verified_functions": [
      "verify_certificate",
      "apply_penalty",
      "handle_missed_deadline"
    ],
    "verified_functions_count": 3,
    "defensive_guards_count": 1,
    "raised_exceptions": [
      "EquivocationGateError"
    ],
    "sample_fail_closed_invariants": [],
    "stdlib_dependencies": [
      "dataclasses",
      "typing"
    ],
    "observation_mode": "EMPIRICAL_BOUNDARY_CAPTURE",
    "zero_external_deps": true
  }
}
