package / wheel (pull_request) Waiting to run
_finish_stream appended the completed reply to self.history - whatever list that name currently pointed at - not to the conversation the stream was actually answering. /new reassigns self.history to a fresh list; a stream still running when that happens finished by silently appending the old conversation's trailing reply onto the new one, which then rides along in that new conversation's next /chat/stream history payload. The conversation_id was already captured by closure for this exact reason (see the tool-denial path); self.history needed the same treatment.