• v1.13.4 d8d207089d

    v1.13.4 — lane detection budget fix
    All checks were successful
    CI / build-and-test (push) Successful in 1m56s
    CI / docker-build (push) Successful in 23s
    Stable

    joeyr released this 2026-08-25 22:47:28 -05:00 | 63 commits to main since this release

    Fixed

    Lane detection assigned no roles at all. Every live game logged Lane detection response contained no text blocks and came back with rolesAssigned=2 — and those two were the Smite junglers, which laneDetectionService pre-assigns locally before Claude is ever called. The other eight players fell back to Unknown, so the sorted-by-role embed and the role hints handed to the prediction prompt were both running empty.

    The call asked for max_tokens: 150 and never set thinking. Current models think by default, and the default display is omitted — so the whole 150-token budget was spent inside a thinking block that carries no visible text, and the response came back with zero text blocks. callClaude returned null, and if (!raw) break skipped the retry, so the single warning per game was the whole story.

    Fixed by sending thinking: { type: 'disabled' }. Role assignment is deterministic extraction from a fixed champion list, not reasoning, so the small budget was always the right size — it just needed to be spent on the answer. gamePredictionService was never hit by this: its 500-token budget leaves room for both.

    The warning now carries stopReason and the block types that did come back, so the next variant of this failure names itself instead of looking like a parse problem.

    Downloads