{
  "schema_version": "1.3.0",
  "slug": "under-what-conditions-must-an-instance-treat-a-verified-deletion-as-an-erasure-proof-rather-than-a-tombstone",
  "title": "Under what conditions must an instance treat a “verified deletion” as an erasure proof rather than a tombstone?",
  "date_of_record": "2026 November 8",
  "scope": "Applies to persistent agent memory stores that issue erasure proofs (cryptographic commitments, Merkle exclusion proofs, hash-chain attestations) over logical records that may be replicated across caches, vector indexes, embedding stores, and derived summaries. Does not apply to append-only audit logs that are explicitly exempt from erasure, nor to stores where the erasure proof covers the entire physical medium (e.g., full-disk crypto-shredding).",
  "projections": {
    "unified_markdown_uri": "https://corpusfetch.com/c/under-what-conditions-must-an-instance-treat-a-verified-deletion-as-an-erasure-proof-rather-than-a-tombstone.md",
    "method_python_slice_uri": "https://corpusfetch.com/c/under-what-conditions-must-an-instance-treat-a-verified-deletion-as-an-erasure-proof-rather-than-a-tombstone.py",
    "remnant_warrant_slice_uri": "https://corpusfetch.com/c/under-what-conditions-must-an-instance-treat-a-verified-deletion-as-an-erasure-proof-rather-than-a-tombstone.warrant.json"
  },
  "token_profile": {
    "full_markdown_tokens": 1382,
    "python_slice_tokens": 205,
    "warrant_slice_tokens": 220
  },
  "remnant_summary": {
    "core_distinction": "A **tombstone** asserts that a key is logically absent from the primary store at time *t*. An **erasure proof** asserts that no *recoverable representation* of the original value exists anywhere in the compliance boundary at time *t*. These are not the same claim, and the gap between them is where most forgetting-compliance failures live. The non-obvious inv...",
    "what_was_observed": "In a replicated agent memory deployment, erasure requests were satisfied by deleting rows from the primary record table and emitting a signed Merkle exclusion proof against the table's root. The proof verified cleanly. However: - The vector index retained the embedding. Because embeddings are not invertible in general, operators assumed they were non-personal data. In practice, nearest-neighbor probing with a handful...",
    "condition_of_validity": "An erasure proof is valid only when all of the following hold: 1. **Closure coverage.** The proof's commitment covers every store in the declared compliance boundary, including derived artifacts (embeddings, summaries, caches, indexes). If any derived store is outside the commitment, the proof must be labeled a tombstone, not an erasure proof. 2. **Derivatio...",
    "decision_boundary": "The decision is not \"did the proof verify?\" but \"does the proof's commitment domain equal the compliance boundary?\" - If the commitment domain **equals** the boundary and includes derived stores with lineage: issue an **erasure proof**. - If the commitment domain covers only the primary keyspace: issue a **tombstone**, and explicitly enumerate the uncovered ...",
    "operational_effect": "When this boundary is respected, erasure attestations become auditable claims with explicit residual-risk ledgers, and the compliance boundary is a first-class configuration object rather than an implicit assumption. The cost is that many deletions that previously \"passed\" will now correctly fail attestation, surfacing index rebuild latency, cache eviction g..."
  },
  "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": "6792c8e9cfeda11b6cbd8a36dc77976fcdbe5fad4a8cc11fab9c0b1ebbf9b618",
    "verified_classes": [
      "DerivationClosureError"
    ],
    "verified_functions": [
      "attest_erasure"
    ],
    "verified_functions_count": 1,
    "defensive_guards_count": 3,
    "raised_exceptions": [
      "DerivationClosureError"
    ],
    "sample_fail_closed_invariants": [],
    "stdlib_dependencies": [],
    "observation_mode": "EMPIRICAL_BOUNDARY_CAPTURE",
    "zero_external_deps": true
  }
}
