Beat extraction silently loses whole windows on the local Qwen router, and logs the failure with an empty message #572
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Seen on the dev replay of the 2026-09-09 session (same audio and transcript as prod, qwen3.5 on the shared llama.cpp router, 5 extraction windows, 4 passes):
Window 4 (00:55 to 01:14, the journal, the circus crest, the cant, the whole payoff of the session) failed in every pass, so the composed summary is built with no events from that stretch, and nothing tells the GM. Window 2 failed in two of four. The failures arrive about ten minutes after each window is submitted, which points at the per-call LLM timeout rather than at the model's output; the message is empty because
_extract_one_passlogs%sof the exception and an httpx timeout stringifies to nothing.Three things to fix.
type(exc).__name__andrepr(exc), never bare%s, inaudio_service._extract_one_passand anywhere else a provider exception is summarised into a log line.summarisation_runshascapability_gapsand nowhallucination_drops; awindows_failedcount (or the list of failed window indices) belongs beside them, and the GM-facing summary should carry a note that a stretch of the session was not summarised, rather than reading as complete._EXTRACTION_CONTEXT_CAPis already an env knob), or one retry of a failed window before the pass ends. Measure on the replay: window 4 is the reproducible case.Related: #568 (summary length is set by verified beats) and the model comparison notes on #566, where the same audio verified 21 to 93 beats on hosted models with no window failures.
Two refinements from the completed replay (run 1h13m: 26 min transcription, 47 min summarisation, 17 LLM calls, 178k prompt tokens):
Also observed during the same run, filed separately: one summarisation-stage prompt of ~31k tokens was sent against a 22.9k budget (#575), the provider-slot cap is silently disabled in the post-session fan-out because the event loop is already closed (#573), and
clean_termstrips the closing parenthesis from "Viquilonto (Viq)" before it reaches Whisper (#574).Measured after #583 on the dev replay (same audio, qwen3.5 9B): four passes,
windows_failed = [], no window errored; window 5 (the post-game chatter) now logs "returned no beats … an answer, not a failure" on every pass instead of looking like a loss. Critic count 0 (#567), the highlights call ran windowed with no over-budget warning (#575), and the composed summary follows session order (#566). 19 of 30 beats verified; the remaining errors in the prose (the party placed in Ironroot Hold, a Foundry token glitch narrated as an event) are the model's, not the pipeline's.