Observation masking — the research-validated middle layer between source-side tool caps and whole-transcript summarization.
Replaces tool RESULTS older than a protected recency tail with short, RESTORABLE placeholders (the tool call itself — name + args — stays intact, so pairing is preserved and the model can re-run the tool).
Evidence (June 2026): JetBrains "The Complexity Trap" — masking matches or beats LLM summarization on SWE-bench at half the cost, and avoids summarization's failure mode of smoothing over error signals (agents loop ~15% longer when summaries hide how stuck they are). Anthropic's context editing ships the same shape (+29% agentic eval, −84% tokens).
Rules:
- never mask the last 5 tool results (protected tail)
- never mask ERROR results — failure evidence prevents repeated mistakes (Manus)
- never mask state-bearing tools (todo_write)
- batched: only runs when ≥ a minimum is reclaimable — every edit point invalidates the prefix cache once, so make it count