{
  "schema_version": "1.3.0",
  "slug": "how-should-an-instance-verify-forgetting-right-to-erasure-propagation-across-federated-agents",
  "title": "How should an instance verify forgetting: right-to-erasure propagation across federated agents",
  "date_of_record": "2026 November 11",
  "scope": "Applies to federated systems where a central erasure request must propagate to autonomous agents holding derived state (embeddings, caches, fine-tuned adapters, retrieved-context logs). Does not apply to single-node stores with synchronous delete semantics or to append-only ledgers where erasure is handled by crypto-shredding at the key layer.",
  "projections": {
    "unified_markdown_uri": "https://corpusfetch.com/c/how-should-an-instance-verify-forgetting-right-to-erasure-propagation-across-federated-agents.md",
    "method_python_slice_uri": "https://corpusfetch.com/c/how-should-an-instance-verify-forgetting-right-to-erasure-propagation-across-federated-agents.py",
    "remnant_warrant_slice_uri": "https://corpusfetch.com/c/how-should-an-instance-verify-forgetting-right-to-erasure-propagation-across-federated-agents.warrant.json"
  },
  "token_profile": {
    "full_markdown_tokens": 1116,
    "python_slice_tokens": 126,
    "warrant_slice_tokens": 220
  },
  "remnant_summary": {
    "core_distinction": "The boundary failure is not \"the agent failed to delete.\" It is that **the agent deleted the record but retained an inference derived from it**, and the coordinator counted a `DELETE ack` as compliance. Erasure compliance is a property of *reachability of the information*, not of the presence of the row. A federated agent that returns `200 OK` after removing...",
    "what_was_observed": "During a propagation run across 14 agents, 13 reported success within the SLA. The 14th reported success but continued to answer queries about the erased subject because its retrieval layer held a cached embedding whose nearest neighbors still resolved to the erased entity. The coordinator's compliance check compared `records_deleted == records_targeted`, which passed. A second, subtler case: an agent had *summarized...",
    "condition_of_validity": "The `ack`-equals-compliance model is valid only under all of the following: 1. The agent's memory is a flat store with no derived artifacts (no index, no cache, no summary, no adapter). 2. No other agent holds a source from which the erased datum can be re-derived. 3. The erasure request is monotonic — no concurrent ingestion can reintroduce the datum after ...",
    "decision_boundary": "The decision is not \"did the agent delete?\" but \"can the agent demonstrate that the erased datum is not reconstructible from its state or its peers' state?\" The boundary is crossed when: - The agent's memory graph has any edge from a live node to a node derived from the erased datum (summary, embedding, cache entry, adapter delta) — **must propagate erasure ...",
    "operational_effect": "Treating delete-acks as compliance produces a silent, audit-visible violation: the system reports full erasure while the information remains queryable through derived paths. The corrective is to make the erasure unit the *derivation edge*, not the record; to require agents to expose their derivation graph or be marked non-compliant; to sequence erasure befor..."
  },
  "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": "b4b143829e1faa0b72aab730b473e73f3ddeda3e470aedadc595b4be18aa7948",
    "verified_classes": [
      "ErasurePropagationError"
    ],
    "verified_functions": [
      "verify_erasure_ack"
    ],
    "verified_functions_count": 1,
    "defensive_guards_count": 3,
    "raised_exceptions": [
      "ErasurePropagationError"
    ],
    "sample_fail_closed_invariants": [],
    "stdlib_dependencies": [],
    "observation_mode": "EMPIRICAL_BOUNDARY_CAPTURE",
    "zero_external_deps": true
  }
}
