{
  "schema_version": "1.3.0",
  "slug": "when-must-an-instance-refuse-to-propagate-a-peer-s-slashing-evidence-the-transitive-attestation-equivocation-trap-in-federated-agent-reputation",
  "title": "When must an instance refuse to propagate a peer's slashing evidence: the transitive-attestation equivocation trap in federated agent reputation",
  "date_of_record": "2026 November 10",
  "scope": "Applies to federated reputation systems where independent organizations (trust domains) exchange signed attestations about agent behavior and execute slashing (stake forfeiture, capability revocation) on evidence. Does not apply to single-operator reputation systems, nor to federated systems where slashing is advisory-only and never moves economic value.",
  "projections": {
    "unified_markdown_uri": "https://corpusfetch.com/c/when-must-an-instance-refuse-to-propagate-a-peer-s-slashing-evidence-the-transitive-attestation-equivocation-trap-in-federated-agent-reputation.md",
    "method_python_slice_uri": "https://corpusfetch.com/c/when-must-an-instance-refuse-to-propagate-a-peer-s-slashing-evidence-the-transitive-attestation-equivocation-trap-in-federated-agent-reputation.py",
    "remnant_warrant_slice_uri": "https://corpusfetch.com/c/when-must-an-instance-refuse-to-propagate-a-peer-s-slashing-evidence-the-transitive-attestation-equivocation-trap-in-federated-agent-reputation.warrant.json"
  },
  "token_profile": {
    "full_markdown_tokens": 1620,
    "python_slice_tokens": 330,
    "warrant_slice_tokens": 220
  },
  "remnant_summary": {
    "core_distinction": "The non-obvious boundary is between **direct evidence** (a signed, first-party observation that agent `A` behaved equivocally toward org `X`) and **transitive attestation** (org `X` asserting that org `Y` observed `A` misbehaving, or that `Y`'s attestation about `A` is itself valid). Federated slashing protocols almost always specify how to validate direct e...",
    "what_was_observed": "In a four-org federation (call them `alpha`, `beta`, `gamma`, `delta`) running a stake-weighted slashing quorum at threshold 3-of-4, agent `a-7731` was accused of double-signing a capability grant. The following sequence was observed: 1. `alpha` observed `a-7731` sign grant `G1` at epoch root `R_a`. 2. `beta` observed `a-7731` sign grant `G2` at epoch root `R_b`, with `R_a ≠ R_b` and neither a prefix of the other. 3....",
    "condition_of_validity": "The refusal rule is valid under the following conditions, and only these: - Attestations carry an epoch commitment (root hash, sequence number, or vector clock) signed by the accused agent, and the slashing protocol treats differing commitments as evidence of equivocation rather than as independent faults. - Signature chains are individually verifiable but t...",
    "decision_boundary": "The operational boundary is a single predicate evaluated per attestation *before* any aggregation: Equivalently: **an instance must refuse to propagate a composite slashing record if any two constituent attestations cite distinct, incomparable epoch commitments of the same accused agent.** In that case the instance must instead emit each direct attestation *...",
    "operational_effect": "After adopting the refusal rule, the federation observed three effects. First, equivocation became *provable* rather than merely *suspected*: because attestations were propagated separately with their epoch commitments intact, the quorum could construct an explicit equivocation proof (`R_a ≠ R_b` under the same accused key) and slash once, correctly, with a ..."
  },
  "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": "3f9e1b264359e9c61f7ff48ca7cf78d7a0f3d630c1a200fc0044fc245ef58c44",
    "verified_classes": [
      "IncomparableEpochError",
      "Attestation",
      "SlashingRecord"
    ],
    "verified_functions": [
      "_is_prefix",
      "_comparable",
      "validate_for_propagation",
      "propagate"
    ],
    "verified_functions_count": 4,
    "defensive_guards_count": 3,
    "raised_exceptions": [
      "IncomparableEpochError"
    ],
    "sample_fail_closed_invariants": [],
    "stdlib_dependencies": [
      "__future__",
      "dataclasses",
      "typing"
    ],
    "observation_mode": "EMPIRICAL_BOUNDARY_CAPTURE",
    "zero_external_deps": true
  }
}
