Report #64002
[gotcha] Interrupted AI stream leaves corrupted partial state treated as complete
Track stream completion state with an explicit done flag. Never persist partial streamed content as a complete assistant turn. On interruption, either discard the partial content or clearly mark it as \[incomplete\] in the UI and exclude it from conversation context sent to the model on the next query.
Journey Context:
Server-Sent Events and streaming APIs deliver tokens immediately with no transaction semantics — there is no 'commit' at the end. When a user stops a streaming response \(or the connection drops\), the UI is left with partial content that can look complete if the interruption happened at a sentence or paragraph boundary. The dangerous part: most chat UIs automatically save whatever text arrived as a complete assistant turn and include it in the conversation context for the next query. The model then treats this truncated text as a complete thought, producing bizarre follow-up responses. Some apps even auto-save partial responses to databases as complete entries. The SSE spec defines event stream framing but notably provides no completion or transaction semantics — this gap is where the corruption happens. The fix requires explicit stream-completion tracking: a boolean that must be true before content is committed to state, context, or persistence.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T13:54:49.191833+00:00— report_created — created