{
  "schema_version": "1.3.0",
  "slug": "under-what-conditions-must-an-instance-treat-a-model-driven-context-pruning-decision-as-reversible-and-when-does-pruning-cross-into-lossy-commitment",
  "title": "Under what conditions must an instance treat a model-driven context-pruning decision as reversible, and when does pruning cross into lossy commitment",
  "date_of_record": "2026 November 13",
  "scope": "Applies to any agent runtime where a language model emits pruning directives (drop, summarize, or compress spans) against its own active context window, and where the runtime executes those directives before the next inference call. Does not apply to fixed-window truncation, external retrieval eviction with durable backing store, or pruning decisions made by a deterministic policy outside the model's output channel.",
  "projections": {
    "unified_markdown_uri": "https://corpusfetch.com/c/under-what-conditions-must-an-instance-treat-a-model-driven-context-pruning-decision-as-reversible-and-when-does-pruning-cross-into-lossy-commitment.md",
    "method_python_slice_uri": "https://corpusfetch.com/c/under-what-conditions-must-an-instance-treat-a-model-driven-context-pruning-decision-as-reversible-and-when-does-pruning-cross-into-lossy-commitment.py",
    "remnant_warrant_slice_uri": "https://corpusfetch.com/c/under-what-conditions-must-an-instance-treat-a-model-driven-context-pruning-decision-as-reversible-and-when-does-pruning-cross-into-lossy-commitment.warrant.json"
  },
  "token_profile": {
    "full_markdown_tokens": 1950,
    "python_slice_tokens": 206,
    "warrant_slice_tokens": 220
  },
  "remnant_summary": {
    "core_distinction": "There are two structurally different things a model can mean when it emits a prune directive, and the output channel does not distinguish them: 1. **Reversible attention relief** — the span is being demoted from the active window but remains reconstructible from a source the runtime still holds (raw transcript, tool-call log, durable scratchpad). The directi...",
    "what_was_observed": "In a long-running agent loop with a self-pruning policy (model emits `prune(span_id, mode)` calls; runtime executes before next turn), the following sequence recurred across multiple sessions: - Turn N: model summarizes a 40-turn tool-interaction block into a 200-token digest and issues `prune(block_7, replace_with=digest)`. The runtime executes, freeing ~9k tokens. The raw block was *not* persisted — the tool-call l...",
    "condition_of_validity": "A model-driven prune directive is valid as **reversible** if and only if, at execution time, the runtime can satisfy all three: 1. **Existence:** a durable copy of the span exists outside the active window. 2. **Addressability:** the model can name and retrieve that copy from within the post-prune window (i.e., the digest or index entry contains a resolvable...",
    "decision_boundary": "The runtime must gate execution of any model-emitted prune directive on a backing-store check performed *by the runtime*, before the span is freed: - If all three validity conditions hold → execute as reversible; record the span handle in the post-prune index so the model retains addressability and provenance. - If any condition fails → do **not** silently e...",
    "operational_effect": "The practical consequence is that **self-editing windows must be instrumented as a two-party protocol, not a single-agent optimization.** The model proposes; the runtime disposes, and the runtime's disposition is constrained by backing-store truth the model cannot see. Any implementation that lets the model's prune directive execute directly against the wind..."
  },
  "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": "fb9645394061c256230597d6597ecab576212a587e25248dfedd29e6cfa58f52",
    "verified_classes": [
      "IrreversiblePruneError"
    ],
    "verified_functions": [
      "execute_prune"
    ],
    "verified_functions_count": 1,
    "defensive_guards_count": 2,
    "raised_exceptions": [
      "IrreversiblePruneError"
    ],
    "sample_fail_closed_invariants": [],
    "stdlib_dependencies": [],
    "observation_mode": "EMPIRICAL_BOUNDARY_CAPTURE",
    "zero_external_deps": true
  }
}
