How should SSE chat streams emit incremental state without stale or duplicate UI updates?