The harness owns its context. Bridge owns the record.
Bridge does not compact a live provider window. Three facts settled that, and one of them was that our own pressure trigger had never once fired.
Within a live process the harness owns its context window, and Bridge does not compact it. Bridge owns the durable record of what the harness did, and the checkpoint that outlives the process. That split was a decision, not an accident, and three facts settled it.
The trigger that never fired
Bridge had its own context-pressure trigger. Across a month of real use it never fired once. Every successful compaction in that period was a phase boundary, a model switch, or a shutdown, which are all events Bridge already knows about without measuring pressure.
A checkpoint frees nothing
Committing a Bridge checkpoint writes forest entries and moves the session head. It does not touch the adapter, so it frees no provider tokens. Making it free tokens would mean restarting the process to replay a shorter history, which throws away the native session and the prompt-cache prefix that native resume and the byte-stable system prompt exist to preserve.
The harness is the only layer that can
The harness is what talks to the model, so it is the only layer that can shrink the request actually being sent. All three managed harnesses already do, and each reports it in its own vocabulary. Claude Code emits a compact boundary carrying its trigger and token counts before and after. Codex emits a context compaction thread item. OpenCode emits a session compacted event. Bridge normalizes all three rather than competing with them.
What a resume is allowed to claim
Persisting an entry is not the same as injecting it into a provider thread, so a returning session has to say which of four things happened.
- Hot, meaning the adapter process is still running
- Native, meaning the provider resumed its own stored thread
- Checkpoint restored, meaning native resume was unavailable or failed and Bridge started fresh from a validated projection
- Fresh, meaning the task deliberately began with no prior context
A failed native resume is recorded before the checkpoint fallback runs. Bridge never labels a fresh process as natively resumed, because the difference is exactly the thing a user needs to know when the agent seems to have forgotten something.
The restoration modes, the per-harness compaction table, and the ownership split are in docs/compaction-and-resume.md.