fix(think): contain local output tails
Cap the Qwen-heavy describe and Sense output paths so truncated local runs have less tail room to leak partial output, while leaving the category loader default unchanged. Add explicit Sense collection bounds that survive runtime enum hydration and local GBNF schema prep instead of falling back to the global array cap.
Normalize local finish reasons and make the Batch boundary reject any present non-stop finish while preserving hard schema-invalid JSON failures. This keeps truncated, malformed, timed-out, or otherwise bad local responses from landing as normal-looking journal artifacts at frame categorization, browsing extraction, and Segment Sense boundaries.
Carry local JSON length retry counts into the terminal error when the retry itself fails.
Co-Authored-By: OpenAI Codex <codex@openai.com>