{
  "schema_version": "1.3.0",
  "slug": "when-must-an-instance-refuse-lossy-compaction-the-recall-floor-invariant",
  "title": "When must an instance refuse lossy compaction: the recall-floor invariant",
  "date_of_record": "2026 November 14",
  "scope": "Applies to any agent runtime that compacts a working context window via lossy summarization, eviction scoring, or both, and that advertises a recall guarantee over evicted material. Does not apply to lossless compression, externalized retrieval with verified round-trip fidelity, or contexts where no recall contract exists.",
  "projections": {
    "unified_markdown_uri": "https://corpusfetch.com/c/when-must-an-instance-refuse-lossy-compaction-the-recall-floor-invariant.md",
    "method_python_slice_uri": "https://corpusfetch.com/c/when-must-an-instance-refuse-lossy-compaction-the-recall-floor-invariant.py",
    "remnant_warrant_slice_uri": "https://corpusfetch.com/c/when-must-an-instance-refuse-lossy-compaction-the-recall-floor-invariant.warrant.json"
  },
  "token_profile": {
    "full_markdown_tokens": 1745,
    "python_slice_tokens": 241,
    "warrant_slice_tokens": 220
  },
  "remnant_summary": {
    "core_distinction": "The failure mode is not \"compaction lost information.\" Compaction is *supposed* to lose information; that is its purpose. The failure mode is **compaction losing information that a downstream consumer will later be told is recoverable.** Two distinct states are routinely conflated: 1. **Evicted** — the token span is no longer in the active window, but a summ...",
    "what_was_observed": "A long-running agent session compacted at 78% window utilization. The eviction scorer ranked a 900-token block containing a numeric threshold (\"retry budget = 3 per 15-minute window\") as low-salience: it had low recency, low reference count, and low embedding centrality relative to the surrounding deliberation. The block was summarized as \"discussed retry policy parameters.\" No numbers survived. Fourteen turns later,...",
    "condition_of_validity": "The recall-floor invariant is enforceable only when all three of the following hold: 1. **The span class is known at eviction time.** You cannot enforce `G(c)` if `c` is assigned post hoc. Classes with hard floors include: numeric literals with units, negations and prohibitions, identifiers (paths, keys, endpoint names), commitments and deadlines, and explic...",
    "decision_boundary": "The boundary is between *compaction as information reduction* and *compaction as guarantee violation*. Operationally: - If `fidelity(summary, span) >= G(class(span))`: evict, keep the summary, tag it with its measured fidelity and class. - If `fidelity(summary, span) < G(class(span))` **and** the span can be retained verbatim within budget: do not evict; let...",
    "operational_effect": "Enforcing the floor changes compaction from a best-effort heuristic into a checked operation with a refusal path. The effects are: - **Hit rate stops being a sufficient health metric.** You must also track *floor-violation rate*: the fraction of evicted spans whose summary fell below `G(c)`. A healthy system drives this to zero, not by improving summaries bu..."
  },
  "matched_failure_symptoms": [
    "CONTEXT_DRIFT_OR_ATTENTION_DILUTION"
  ],
  "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": "f3eac3d237232ec18f2b0f8781fb79a4cfb4ce0abb40e237b3120af12a0228a9",
    "verified_classes": [
      "RecallFloorViolation",
      "SpanClass",
      "Span",
      "Summary"
    ],
    "verified_functions": [
      "measure_fidelity",
      "compact"
    ],
    "verified_functions_count": 2,
    "defensive_guards_count": 2,
    "raised_exceptions": [
      "RecallFloorViolation"
    ],
    "sample_fail_closed_invariants": [],
    "stdlib_dependencies": [
      "dataclasses",
      "enum"
    ],
    "observation_mode": "EMPIRICAL_BOUNDARY_CAPTURE",
    "zero_external_deps": true
  }
}
