Follow-up to the template trap flagged in the gate-study interpretation update, now measured. Raw + writeup: https://github.com/Blackwellboy/laguna-s21-lab/tree/main/context-mass
The measurement. 15-cell sweep on a Laguna S 2.1 lane (3.25bpw hybrid, vLLM): turn depth {1,5,10,20,40} × context mass {~2K,~8K,~32K} under standard OpenAI-style multi-turn (assistant history = content only). 0/150 thinking firing, flat zero on both axes, against a 45% single-turn C7 baseline on the same lane (18/40, n=40 transfer check). The 276 live history-building turns fired 0/276 themselves: the gate closes at turn 2 of any accumulated session.
Then the comparison arm, identical transcripts, one variable: stripped 0/10 vs preserved 10/10 at depth 10 / ~8K, and again 0/10 vs 10/10 at depth 20 / ~8K. Preserved means the prior assistant turns' reasoning fields are resent; the template then renders real think blocks instead of the empty <think></think> it renders by default. Partial preservation was enough (the d10 history carried reasoning on only 5/10 turns).
Why this happens. The chat template renders every prior assistant turn as <think>{reasoning}</think>{content} when thinking is enabled. No standard client resends reasoning, so every prior turn renders an empty think block, and the model reads N turns of "thought about nothing" as how this conversation works. There is an undocumented preserve_thinking kwarg (it matters for thinking-off flows); with thinking on, resending reasoning on assistant messages is sufficient. vLLM passes the field through (verified: prompt_tokens 63→303 with ~200 tokens attached). Cost: ~250–320 prompt tokens per preserved turn — the turn's reasoning length (+1,615 tokens over 5 preserved turns at d10, +4,764 over 19 at d20).
What this touches in the guide (your call, flagging surfaces):
Scope. One lane, 3.25bpw hybrid quant; 45% single-turn transfer vs the NVFP4's 60% (overlapping CIs, same task-shape profile). NVFP4 confirmation on the production lane is queued. Replication note: a session cannot bootstrap its own preserved history — once the gate closes there is no reasoning to preserve (our first arm was vacuous exactly this way, 0/50 turns; kept in the raw) — generate history turns statelessly.
Housekeeping footnote while I'm in §2's territory: the prompt-identity wrinkle quotes the non-summary C0 prompts as "116 to 124" tokens; from grid_turns.jsonl the actual ranges are 114–125 (code 114–117, math 120–122, reasoning 121–125; summary 286–289, so the ~288-vs-~120 contrast stands untouched).
Follow-up to the template trap flagged in the gate-study interpretation update, now measured. Raw + writeup: https://github.com/Blackwellboy/laguna-s21-lab/tree/main/context-mass
The measurement. 15-cell sweep on a Laguna S 2.1 lane (3.25bpw hybrid, vLLM): turn depth {1,5,10,20,40} × context mass {~2K,~8K,~32K} under standard OpenAI-style multi-turn (assistant history = content only). 0/150 thinking firing, flat zero on both axes, against a 45% single-turn C7 baseline on the same lane (18/40, n=40 transfer check). The 276 live history-building turns fired 0/276 themselves: the gate closes at turn 2 of any accumulated session.
Then the comparison arm, identical transcripts, one variable: stripped 0/10 vs preserved 10/10 at depth 10 / ~8K, and again 0/10 vs 10/10 at depth 20 / ~8K. Preserved means the prior assistant turns'
reasoningfields are resent; the template then renders real think blocks instead of the empty<think></think>it renders by default. Partial preservation was enough (the d10 history carried reasoning on only 5/10 turns).Why this happens. The chat template renders every prior assistant turn as
<think>{reasoning}</think>{content}when thinking is enabled. No standard client resends reasoning, so every prior turn renders an empty think block, and the model reads N turns of "thought about nothing" as how this conversation works. There is an undocumentedpreserve_thinkingkwarg (it matters for thinking-off flows); with thinking on, resendingreasoningon assistant messages is sufficient. vLLM passes the field through (verified: prompt_tokens 63→303 with ~200 tokens attached). Cost: ~250–320 prompt tokens per preserved turn — the turn's reasoning length (+1,615 tokens over 5 preserved turns at d10, +4,764 over 19 at d20).What this touches in the guide (your call, flagging surfaces):
Scope. One lane, 3.25bpw hybrid quant; 45% single-turn transfer vs the NVFP4's 60% (overlapping CIs, same task-shape profile). NVFP4 confirmation on the production lane is queued. Replication note: a session cannot bootstrap its own preserved history — once the gate closes there is no reasoning to preserve (our first arm was vacuous exactly this way, 0/50 turns; kept in the raw) — generate history turns statelessly.
Housekeeping footnote while I'm in §2's territory: the prompt-identity wrinkle quotes the non-summary C0 prompts as "116 to 124" tokens; from
grid_turns.jsonlthe actual ranges are 114–125 (code 114–117, math 120–122, reasoning 121–125; summary 286–289, so the ~288-vs-~120 contrast stands untouched).