{
  "schema_version": "1.3.0",
  "slug": "what-structural-signals-indicate-that-a-self-editing-context-controller-has-crossed-from-compression-into-semantic-corruption",
  "title": "What structural signals indicate that a self-editing context controller has crossed from compression into semantic corruption",
  "date_of_record": "2026 November 7",
  "scope": "Applies to any agent loop where a controller autonomously rewrites, prunes, or restructures its own working memory (summarization, deduplication, section reordering, span deletion) under a hard token budget, and where the rewritten memory is the sole input to subsequent reasoning turns. Does not apply to append-only logs with external retrieval, nor to controllers that retain an immutable backing store from which pruned spans can be reconstructed.",
  "projections": {
    "unified_markdown_uri": "https://corpusfetch.com/c/what-structural-signals-indicate-that-a-self-editing-context-controller-has-crossed-from-compression-into-semantic-corruption.md",
    "method_python_slice_uri": "https://corpusfetch.com/c/what-structural-signals-indicate-that-a-self-editing-context-controller-has-crossed-from-compression-into-semantic-corruption.py",
    "remnant_warrant_slice_uri": "https://corpusfetch.com/c/what-structural-signals-indicate-that-a-self-editing-context-controller-has-crossed-from-compression-into-semantic-corruption.warrant.json"
  },
  "token_profile": {
    "full_markdown_tokens": 1811,
    "python_slice_tokens": 344,
    "warrant_slice_tokens": 220
  },
  "remnant_summary": {
    "core_distinction": "Compression and corruption are not distinguished by token count, compression ratio, or even by local loss of fidelity. They are distinguished by whether the *dependency structure* between retained spans survives the edit. A controller can delete 60% of a context and remain in the compression regime if every surviving claim still carries the referents it need...",
    "what_was_observed": "Across a series of long-horizon agent runs under a 32k working-memory budget with a controller that summarized on every 8k of growth, four structural signals preceded every observed reasoning failure. Each signal is detectable from the memory state alone, before the bad decision is made. 1. **Orphaned quantifiers and units.** After pruning, retained spans contained bare numbers whose scale had been removed (\"the time...",
    "condition_of_validity": "The distinction holds only under the following conditions, and the operational rules below should not be applied outside them: - The rewritten memory is the *authoritative* input to later turns. If an immutable log is retrievable, corruption is recoverable and degrades to a latency problem, not a correctness problem. - The task has *cross-span dependencies*:...",
    "decision_boundary": "The controller must choose, at each edit, between *compress* and *refuse-and-escalate*. The boundary is drawn on closure, not on ratio: - **Compress** when every retained span's referent closure is satisfiable within the post-edit memory, and the edit preserves units, polarity, entity keys, and dependency order. Compression ratio is irrelevant to this decisi...",
    "operational_effect": "Enforcing the closure invariant changes controller behavior in three measurable ways. First, refusal rate becomes a first-class health metric: a sudden drop to zero indicates the closure checker has been bypassed or its thresholds loosened. Second, memory size becomes non-monotonic with budget pressure — under extreme pressure the controller externalizes rat..."
  },
  "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": "f6b152f86b211418f51a44bce2b04cec85e61506b8ec57e532d205fa602f8b34",
    "verified_classes": [
      "ContextClosureViolation",
      "Span"
    ],
    "verified_functions": [
      "validate_edit",
      "apply_edit"
    ],
    "verified_functions_count": 2,
    "defensive_guards_count": 3,
    "raised_exceptions": [
      "ContextClosureViolation"
    ],
    "sample_fail_closed_invariants": [],
    "stdlib_dependencies": [
      "dataclasses",
      "typing"
    ],
    "observation_mode": "EMPIRICAL_BOUNDARY_CAPTURE",
    "zero_external_deps": true
  }
}
