From e0af1edadf13bca525a52aa4d6a8dd69bce34fde Mon Sep 17 00:00:00 2001 From: Joey Yakimowich-Payne Date: Fri, 13 Mar 2026 21:27:08 -0600 Subject: [PATCH] fix: safety valve only flushes partial openers, not real tags MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Long cleanup tags (e.g. collapse summaries) can span 30+ SSE deltas. The safety valve was flushing after 6 deltas regardless, dumping incomplete tags into the output. Now only flushes when buffering a partial opener ( self._MAX_BUFFERED_DELTAS and not has_close: + # Safety valve: if we've buffered many deltas waiting for a *partial* + # opener to resolve (e.g. ""), + # flush everything. But NEVER flush when _inside_tag is True — that + # means we matched a real opening tag and are waiting for the close. + # Real tags (e.g. long collapse summaries) can span 30+ deltas. + if ( + self._buffered_deltas > self._MAX_BUFFERED_DELTAS + and not self._inside_tag + and not has_close + ): result = self._buf self._buf = "" self._inside_tag = False