symfonic.capabilities.tools.results.policy¶
policy ¶
The result policy — one decision, one reason (T3.1.3).
The compaction rewriter used to interleave six early returns with the rewrite itself, so the decision could only be observed through the transcript it produced. Separating them makes each branch assertable on its own and gives every kept payload a stated cause.
Branch order is load-bearing and reads top to bottom:
- disabled — nothing happens at all;
- multimodal — the result carries a block the model looks at rather
than reads. Every rewrite below replaces content with text, and recall
returns
str, so rewriting one converts evidence into a description of evidence. Ranked aboverecentdeliberately: a recent image is kept for both reasons and the stated one should be the safety property, because that is the one whose absence would be a defect (#144); - recent — the last
keep_last_nresults are the model's working set; - below threshold — too small to be worth a stub;
- offload only: live turn — the result is inside the current turn's tool loop, so moving it would shift bytes mid-turn and bust the messages-region cache. This is the v7.12.1 +94.8% regression;
- offload only: below the large pre-filter — small enough that the expected recall hop outweighs the re-prefill saving;
- offload only: the net-saving gate — offload fires only when it provably saves money.
A gate that raises, or no gate at all, declines. Firing offload wrongly is precisely the failure the gate exists to prevent.