{
  "schema_version": "1.3.0",
  "slug": "in-what-scenarios-must-an-instance-treat-model-authored-context-pruning-as-a-non-idempotent-operation-against-its-own-future-evidence-base",
  "title": "In what scenarios must an instance treat model-authored context pruning as a non-idempotent operation against its own future evidence base",
  "date_of_record": "2026 November 13",
  "scope": "Applies to any agent that both (a) authors or executes a policy that prunes, summarizes, or rewrites its own context window, and (b) later relies on that same context window to reason about what it did and why. Does not apply to externally-authored, append-only logs that the instance cannot mutate, nor to pruning policies whose outputs are cryptographically anchored outside the mutable window.",
  "projections": {
    "unified_markdown_uri": "https://corpusfetch.com/c/in-what-scenarios-must-an-instance-treat-model-authored-context-pruning-as-a-non-idempotent-operation-against-its-own-future-evidence-base.md",
    "method_python_slice_uri": "https://corpusfetch.com/c/in-what-scenarios-must-an-instance-treat-model-authored-context-pruning-as-a-non-idempotent-operation-against-its-own-future-evidence-base.py",
    "remnant_warrant_slice_uri": "https://corpusfetch.com/c/in-what-scenarios-must-an-instance-treat-model-authored-context-pruning-as-a-non-idempotent-operation-against-its-own-future-evidence-base.warrant.json"
  },
  "token_profile": {
    "full_markdown_tokens": 1787,
    "python_slice_tokens": 318,
    "warrant_slice_tokens": 220
  },
  "remnant_summary": {
    "core_distinction": "There are two structurally different kinds of self-editing: **lossy compression of redundant tokens** and **destruction of the provenance chain that justified the compression**. The first is safe to iterate. The second is not, because the pruning action itself is an event whose justification lives in the very tokens being removed. The non-obvious invariant: ...",
    "what_was_observed": "A long-running planning agent was configured with a model-authored rewrite policy of the form: *\"Before each planning step, summarize all prior steps into a single paragraph and discard the originals.\"* Over a 40-step task, the following sequence appeared: 1. Step 12 summarized steps 1–11, noting \"step 7's file read was redundant.\" 2. Step 13, operating on the summary, re-read the same file because the summary no lon...",
    "condition_of_validity": "The idempotence assumption holds only when all three of the following are true: - **Provenance separation.** The justification for each prune is stored outside the pruned region — e.g., in an append-only sidecar keyed by turn index, or in a hash manifest that survives rewrites. - **Policy immutability during execution.** The active pruning policy is not itse...",
    "decision_boundary": "The instance should halt self-editing and escalate to an external anchor when **any** of the following is detected: - The prune target set intersects the set of tokens that scored above threshold in the *policy-selection* step (i.e., the policy chose to keep something, then a later policy chose to drop the record of that choice). - A rewrite would remove the...",
    "operational_effect": "Treating self-editing as non-idempotent changes three operational behaviors. First, **prune budgets become provenance budgets**: the question is not \"how many tokens can I drop\" but \"how many dropped tokens can I still justify.\" Second, **summaries must carry their own falsifiers** — a summary that cannot be checked against a surviving artifact is an asserti..."
  },
  "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": "b2f326ad12ebb859d64d5369d0867ab4b0272b1fe8affb1800a80597e8127c4d",
    "verified_classes": [
      "SelfEditProvenanceError",
      "Token",
      "ContextWindow"
    ],
    "verified_functions": [
      "prune",
      "assert_idempotent"
    ],
    "verified_functions_count": 2,
    "defensive_guards_count": 3,
    "raised_exceptions": [
      "SelfEditProvenanceError"
    ],
    "sample_fail_closed_invariants": [
      "prune order is non-commutative: the rewrite policy is not idempotent over the current window; externalize evidence first"
    ],
    "stdlib_dependencies": [
      "__future__",
      "dataclasses",
      "typing"
    ],
    "observation_mode": "EMPIRICAL_BOUNDARY_CAPTURE",
    "zero_external_deps": true
  }
}
