Compaction without summarization: score the tool calls and drop them

This topic was created 31 days ago, and the information it contains may have evolved or changed since then.

Tamara Tran argued that agent context compaction is still a summarization prompt in 2026, and that Jev can instead keep or drop tool output verbatim. On September 30, 2026 this desk compared full text, a gpt-6-luna summary, and a Jev score filter on six short traces. All three kept the planted fact, and the filter did not cause a later miss.

Coding agents often shrink context history by prompting a language model to summarize prior steps. While summaries reduce length, they can alter variable names, omit specific error details, and discard original tool outputs.

In a post on September 17, Tamara Tran proposed scoring individual tool outputs and discarding irrelevant entries instead of rewriting history. Preserved outputs remain verbatim in the context window.

This setup structures context reduction as an evaluation task: given the active objective and a block of output from shell commands or file reads, the model scores relevance. A related project, Winnow, applies a similar filter ahead of Claude Code.

Commenting on Tran’s proposal, Jasmine raised the question of how many agent operations require text generation compared to discrete decisions like routing, scoring, or tool selection. Under this model, agents reduce overhead by assigning non-generative tasks to dedicated classification tools.

These projects represent early experiments rather than published benchmarks comparing scoring against summarization on long coding tasks. The approach aligns with Jev’s design: while it does not generate summaries, it can evaluate whether to retain or drop individual context chunks at scale.

On September 30, 2026 this desk ran that comparison on six short traces. Full text, a gpt-6-luna summary, and a Jev score filter each kept the planted fact on 6 of 6 traces, and a later Luna call quoted it on 6 of 6. Jev, model jev-1.13.0, kept only the critical chunk. Critical scores were 3.94 to 4.00. Decoys stayed under 2.5, including a stale path scored 1.79. The filter used 5,796 input tokens, $0.000243 at the docs list price. The summary arm used 807 input tokens and 229 output tokens, and the gateway returned no dollar price. Nothing in the six traces failed later because a line had been deleted. The set is small, the facts were planted to be obvious, and neither published repository was executed.

This site's reading

Editorial notes evaluating claims against primary sources, contextualizing findings alongside related implementations, and defining technical terms.

Verify

Tran's post and tamaratran/fast-jev-compaction exist; Winnow exists and describes a keep-or-drop filter in front of Claude Code. Jasmine's quote represents commentary rather than an independent benchmark.

No published evaluation in these sources establishes that scoring and filtering outperforms generative summarization on long coding traces. We did not run either repository.

On September 30, 2026 this desk built six short traces, each with one planted fact and several decoy chunks. The facts were ERR-4417, ERR-2201, the path src/pay/refund.ts, port 7443, the flag refunds.v2_capture, and 1842 cents. Three arms kept the context: the full trace, a gpt-6-luna summary asked to stay under 120 words, and a Jev Score on five levels that kept a chunk when the raw score divided by 4 was at least 0.625. A later Luna call had to quote the fact or say UNKNOWN. The request alias was jev-latest. Responses named jev-1.13.0.

Exact retention was 6 of 6 on every arm. The downstream quote was 6 of 6 on every arm. Jev kept only the critical chunk on all six traces. Critical scores were 3.94 to 4.00. Decoys and noise stayed under 2.5. The closest decoy was 1.79, on a stale refund path. Filtering did not drop the fact, and the later call did not miss because of a deletion. The summary also contained the exact fact on every trace. Summary tokens across the six traces were 807 input and 229 output. The Jev filter used 5,796 input tokens and 528 output tokens, $0.000243 at $0.042 per million input tokens, output at $0. The Luna gateway returned no dollar field. Task success did not move. The sieve's difference on this set is that the decoys were gone.

These are six short traces written on this desk, not long Claude Code sessions, and not the fixtures in fast-jev-compaction or Winnow. A case where a dropped line causes a later error was not observed here.

Compare

This contrasts with the browser loop. Where browser agents evaluate valid actions, compaction evaluates whether a specific chunk remains relevant to the ongoing task. Both patterns use Choice, Score, or Noul.

Almeida later outlined hierarchical indexing to support logarithmic context lookups, which represents an architectural design rather than an implementation of Tran's sieve.

Terms

Compaction
Reducing an agent's context history so subsequent prompts fit model limits. Traditional approaches rely on summarization prompts; this method scores entries and removes irrelevant ones.
Verbatim keep
Retaining original tool outputs unchanged in context without summarization, preventing drift in variable names or error logs.
Sieve
A filter placed before a larger model to discard unnecessary context according to calibrated criteria.

Sources

  1. Tamara Tran on instant compaction
  2. Jasmine quoting the compaction use case
  3. tamaratran/fast-jev-compaction
  4. Winnow, a related context sieve for Claude Code