Hypothesis: per-turn mutating context injection may cost task focus independent of injection volume
## Before submitting - [x] I searched [existing issues](https://github.com/thedotmack/claude-mem/issues) and confirmed this is not a duplicate --- **This is a hypothesis, not a bug report.** I have not verified it, and I am not asking anyone to act on it immediately. I am filing it because I could not find this specific angle in the tracker, and because the experiment that would settle it is cheap. ## What I observed After enabling AI summarization (the observer), my subjective experience of the agent degraded noticeably — not slower, but *less focused*: it drifted from the task, re-litigated settled decisions, and lost track of what I had actually asked. The degradation correlated with the observer being on, not with session length or task type. I could not turn this into a measurement, so I disabled the LLM path and zeroed injection (observations 50 → 0, session count 10 → 0). Subjectively it recovered. **That is the entire evidence base. It is one person's impression.** ## The hypothesis The usual explanation for "injection hurts" is **volume** — too many tokens in the context window. I want to propose a different variable: **mutability**. - **Static injection** (same bytes every session) is evaluated once. The model reads it, decides it is background, and moves on. - **Dynamic injection** (content changes every session, every turn, and carries live timestamps) has to be re-evaluated every time. It never fully recedes into the background, because it is never the same twice. Under this hypothesis a small dynamic injection can cost more focus than a large static one, because the cost is not the tokens — it is the repeated re-evaluation. ## Mechanism, and what is already known Several existing reports are consistent with this: - **#1079** — hook output is treated as user instructions, so injected content competes with actual user intent rather than sitting inertly in the background. - **#3897** — the observer recorded an untested hypothesis as a confident finding and never amended it when the same session disproved it 21 seconds later. Two wrong observations and one right one now sit in the corpus with equal authority. - **#4097** — observations have been produced describing a *different, concurrently active session's* topic. - **#4138** — the injected context is described as systematically incomplete, and the retrieval recall that injection depends on is unmeasured. - **#4911** — mutating injected content (live timestamps, per-step updates) breaks prefix caching, forcing full re-computation. That issue is about cost, but it demonstrates the mechanism by which per-turn mutation defeats the "evaluate once, then ignore" path. - **#4618** — newer observations and summaries crowd each other out at session start. Read together: the injected block is simultaneously (a) mutable, (b) treated as instructions, and (c) not reliably correct. ## The experiment that would distinguish volume from mutability Both hypotheses predict the same outcome from "turn injection off." They differ here: **Freeze the injection.** Keep the byte count identical, but snapshot the injected content once — fixed observation set, no live timestamps, no per-session variation — and inject that frozen block unchanged every time. - If focus recovers → **mutability** is the culprit, not volume. A static mode becomes a viable product direction. - If nothing changes → **volume** (or content quality) is the culprit, and mutability is a red herring. This isolates one variable, and it is roughly the feature already requested in **#2875**, extended by one notch: not off, but *frozen*. ## Why I am not running it myself I am not equipped to run a blind quality comparison, and a single-observer A/B on my own subjective focus would not be evidence — I would be measuring my own expectation. Someone with a task benchmark and a blind rater could settle this properly. I would rather file the hypothesis than fake a result. ## Environment (context, not diagnosis) - claude-mem: 13.15.0 - Claude Code: 2.1.302 - OS: Windows 11 - Injection before disabling: ~37 KB at SessionStart, claude-mem's share ~19% --- If this belongs in Discussions rather than Issues, feel free to move it — I filed it here because #3897 and #4138 set a precedent for analysis-type reports.