{
  "schema_version": "1.3.0",
  "slug": "in-what-scenarios-must-an-instance-refuse-to-honor-a-cross-org-action-receipt-signed-under-a-rotated-key-whose-chain-of-custody-is-not-anchored-in-the",
  "title": "In what scenarios must an instance refuse to honor a cross-org action receipt signed under a rotated key whose chain of custody is not anchored in the counterparty's non-repudiation log",
  "date_of_record": "2026 November 8",
  "scope": "Applies to agent-to-agent action receipts exchanged between mutually distrusting organizations where non-repudiation depends on a signature over a canonical action digest plus a log inclusion proof. Does not apply to intra-org receipts, nor to receipts whose signature scheme is symmetric MACs (where non-repudiation is structurally impossible and must be handled by a separate trust-anchor protocol).",
  "projections": {
    "unified_markdown_uri": "https://corpusfetch.com/c/in-what-scenarios-must-an-instance-refuse-to-honor-a-cross-org-action-receipt-signed-under-a-rotated-key-whose-chain-of-custody-is-not-anchored-in-the.md",
    "method_python_slice_uri": "https://corpusfetch.com/c/in-what-scenarios-must-an-instance-refuse-to-honor-a-cross-org-action-receipt-signed-under-a-rotated-key-whose-chain-of-custody-is-not-anchored-in-the.py",
    "remnant_warrant_slice_uri": "https://corpusfetch.com/c/in-what-scenarios-must-an-instance-refuse-to-honor-a-cross-org-action-receipt-signed-under-a-rotated-key-whose-chain-of-custody-is-not-anchored-in-the.warrant.json"
  },
  "token_profile": {
    "full_markdown_tokens": 1846,
    "python_slice_tokens": 475,
    "warrant_slice_tokens": 220
  },
  "remnant_summary": {
    "core_distinction": "The failure mode is not \"bad signature.\" It is **valid signature, unanchored provenance**. A receipt can carry a cryptographically valid signature from a key that the counterparty's non-repudiation log never attested as belonging to the signing principal *at the time of signing*. The signature verifies; the liability attribution does not. These are different...",
    "what_was_observed": "In a two-org agent pipeline (Org A issues action receipts for tool invocations; Org B consumes them for billing and for downstream liability), a rotation event at Org A produced receipts signed with key `K_{n+1}`. Org A's key directory served `K_{n+1}` as the current key for principal `agent-7`. Org B's verifier fetched the directory, verified the signature, and accepted. Six weeks later, during a dispute over a high...",
    "condition_of_validity": "A cross-org receipt is attributable — and therefore honorable — only when all of the following hold simultaneously: 1. The receipt's signature verifies against a key `K`. 2. The receipt includes, or the verifier holds, a **log inclusion proof** for the binding `(principal P, key K, valid_from, valid_to)` against a **signed tree head** (STH) that the verifier...",
    "decision_boundary": "The boundary is **witnessed STH vs. directory read**, and it is sharp: - **Honor** the receipt when the verifier holds a cosigned or gossiped STH covering the key binding, the STH predates the signing time, and no earlier revocation exists. This is the only branch that permits liability transfer. - **Quarantine** (do not honor, do not discard) when the signa...",
    "operational_effect": "Downstream, this changes three things. First, settlement pipelines must carry a `provenance_anchor` field per receipt — the STH hash and its witnessing timestamp — and refuse to settle receipts whose anchor is missing or post-dates signing. Second, key-directory reads become *advisory only*; the authoritative source for key bindings is the log with a witness..."
  },
  "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": "530053db1ec3b4172f00fe6d5a12d51695867c05a04498bd20ca3b108745f1dc",
    "verified_classes": [
      "UnanchoredReceiptError",
      "SignedTreeHead",
      "KeyBinding",
      "ActionReceipt"
    ],
    "verified_functions": [
      "_verify_signature",
      "attribute_receipt"
    ],
    "verified_functions_count": 2,
    "defensive_guards_count": 8,
    "raised_exceptions": [
      "UnanchoredReceiptError"
    ],
    "sample_fail_closed_invariants": [
      "anchor STH was never witnessed by this verifier; counterparty could retroactively rewrite key history",
      "binding inclusion proof exceeds witnessed tree size",
      "binding not yet valid at signing time",
      "binding expired before signing time"
    ],
    "stdlib_dependencies": [
      "dataclasses",
      "hashlib",
      "time",
      "typing"
    ],
    "observation_mode": "EMPIRICAL_BOUNDARY_CAPTURE",
    "zero_external_deps": true
  }
}
