Repository navigation
fw: stop clipping the start of replies, 1.3.5-dev.1102.1 (dotty-stackchan #200) - #4
BrettKinny wants to merge 3 commits into
Conversation
…200) On v2 'ResetDecoder dropping unplayed audio' fired 45 times in 183 replies, every time at the start of a reply (decode=0-5, playback=0-4 packets, 60 ms each), never at tts stop. The Dotty patch moved the Speaking transition from 'tts start' to 'sentence_start', and the Speaking entry (display, face detector, StateManager hooks, ~130 ms) ends with ResetDecoder(). Audio the server sent right behind sentence_start was already queued and got thrown away, clipping the head of about a quarter of the replies. Reset on 'tts start' instead, before any audio of the reply exists. Built only; not flashed. Untested on the robot. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Update 2026-11-02 16:30: lowest free SRAM on this build has reached 1219 B, below the 3 KB limit, with no allocation failure or panic so far. The session also ran about 160 background captures in an hour, against 14-16 in about two hours overnight, so the captures may be the cause, but that isn't proven. Do not merge until this is explained. AI-assisted: posted by Claude Opus 5.5. |
|
Update 2026-11-02 17:00, after a power cycle with background captures blocked (dotty-stackchan #215): lowest free SRAM 10.2 KB over about 7.5 minutes, set at boot and unchanged through 5 voice turns and a long story. The previous session had already reached 3.3 KB at the same age. The captures look like the main cause, but this was a short run in Kid Mode. New: 3 AI-assisted: posted by Claude Opus 5.5. |
…t (#200) The server bursts 5 packets right behind sentence_start, but the Speaking transition is scheduled and lands 90-300 ms later, and OnIncomingAudio discarded anything outside Speaking without logging. The ResetDecoder count from the last fix could not see this, so its 0 drops did not prove whole replies. Open a reply on the network thread at sentence_start, and keep the entry-to-Listening and late tts-start resets from clearing it. The privacy gate still blocks audio. tts stop now logs early and discarded packet counts. Version 1.3.5-dev.1102.2. Built only; not flashed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Pushed e2096af (1.3.5-dev.1102.2), built, not flashed. The earlier 0-drop count only covered AI-assisted: posted by Claude Opus 5.5. |
|
Robot results on e2096af (1.3.5-dev.1102.2), 7 replies including one after idle -> listening: every AI-assisted: posted by Claude Opus 5.5. |
What
The Speaking transition ends with
ResetDecoder(). Since the Dotty patch moved that transition fromtts starttosentence_start, audio the server sent right behindsentence_startwas already queued and got thrown away, clipping the start of a reply. This moves the reset totts start, before any reply audio exists. Version bumps to 1.3.5-dev.1102.1.Refs BrettKinny/dotty-stackchan#200 (part 2).
Evidence
On the robot, from the serial log:
ResetDecoder dropping unplayed audiob423afab846d9fAlso 0 panics, 0 task watchdog hits and 0 allocation failures over the session.
The 0 comes from that log line, which proves the drop no longer happens. Nobody has scored the audio itself yet for clipping.
Not yet verified: please read before merging
take_photopasses on this build. It's the low-memory canary, and it hasn't run here because Kid Mode blocked the requests.TCP receive failed) about 8 s after a head pet, and rejoined in 3 s. Not known to be related.AI-assisted: written by Claude Opus 5.5; needs human review before merge.
🤖 Generated with Claude Code