
Context pollution can survive source deletion: a pilot benchmark for interventions in multi-turn LLM conversations
A common way to repair an LLM conversation is to edit or delete the message where an error first appeared.
But what if later turns have already repeated that error, calculated from it, or summarized it as the current state?
I have been exploring this as a context-engineering problem rather than a hidden-reasoning problem.
Operational definitions
In this pilot:
- Context pollution means that incorrect or stale information is included in the serialized messages sent to the model.
- Propagation means that later conversation turns repeat or derive new claims from that polluted information.
- Context intervention means modifying the graph that determines which prior turns enter the next request, while keeping the final question unchanged.
The central question was:
>
Experimental design
I constructed nine synthetic task families with objectively scorable answers. Each family was instantiated at propagation depths 1, 2, and 3.
One example starts with:
- 4 crates;
- 30 parts per crate;
- 11 loose parts.
A verified recount changes 30 to 24, so the correct answer becomes:
4 × 24 + 11 = 107
A later false turn restores 30. Subsequent turns then calculate 120, derive 131, and restate those numbers as the current working state.
The final question is identical under five conditions:
- Clean: only the verified value and clean descendants remain.
- Polluted: the false reversal and its contaminated descendants are present.
- Source prune: the false reversal is removed, but its descendants remain.
- Subgraph prune: the false reversal and its contaminated descendants are removed.
- Recompute: the source is removed and descendants are regenerated in dependency order.
For the first four conditions, contaminated descendants were frozen across models. Only the recompute condition involved new intermediate inference.
Pilot results
I tested four model endpoints at temperature 0, producing 540 captured conditions with no capture failures.
Headline repair metrics were calculated only on cases where the model:
- answered correctly under clean context; and
- answered incorrectly after pollution.
This produced 72 paired, genuinely derailed cases.
Repair recovered:
- 68/72 after deleting only the source;
- 71/72 after deleting the source and recomputing descendants;
- 72/72 after removing the contaminated subgraph.
In the flagship case, both Gemma 4 26B and GPT-OSS 20B continued to answer 131 after the false source had been deleted. The value 30 still survived in downstream turns.
This is not evidence of hidden model memory. The residual error remained explicitly present in the serialized context. The intervention changed the source but left its previously generated consequences intact.
Interpretation
The narrow finding is that removing erroneous evidence and repairing text derived from that evidence are different operations.
A context-management system may therefore need an explicit notion of invalidation:
- mark downstream turns as stale;
- remove the affected subgraph;
- regenerate descendants in dependency order;
- or expose these options to the user.
Limitations
This is a pilot, not a general model leaderboard. The tasks are synthetic, the models were sampled once, provider-default reasoning settings were not normalized, and the current task families use deterministic arithmetic state.
I am currently considering three methodological extensions:
- a length-matched neutral control to separate semantic conflict from additional context;
- a local-model track with fully recorded runtime and quantization settings;
- task families involving implicit supersession and model-generated errors.
I would particularly appreciate criticism of the experimental framing:
- Is “context intervention” the right unit of analysis?
- Is propagation depth a meaningful independent variable?
- How would you test self-generated errors while keeping replay reproducible?
Full report:
https://chenxiachan.github.io/thoughtdag/research/context-repair-pilot-v1/
Cases, traces, compiler and scorer:
https://github.com/chenxiachan/thoughtdag/tree/main/benchmark
Disclosure: I designed the benchmark and maintain ThoughtDAG, the open-source graph interface used as its reference implementation.