thinking_parity

Function thinking_parity 

Source
pub async fn thinking_parity(
    handle: &PluginHandle,
    smaller: Value,
    larger: Value,
    expect_delta: usize,
    want: &(dyn Fn(&str) -> bool + Sync),
    timeout: Duration,
) -> Cell
Expand description

2026-09-26: Vision with thinking on, through chat completions.

The chat-completions legs built by image_request turn thinking off, because a reasoning block can consume the whole of max_tokens and leave empty content. This leg covers thinking on. The assertion is a difference, so the unknown thinking overhead cancels: two images whose vision-token counts differ by a known amount are sent, both with thinking on, and the gap between their prompt sizes must equal that amount exactly:

  (tokens_b - tokens_a)  ==  (vision_b - vision_a)

Whatever the thinking envelope costs, it costs the same in both, so it vanishes from the subtraction. A thinking-on path that mis-sized, dropped or double-counted the image moves it.