Simplify the finalization cache save - we already save on first event, so only save in finalization if first event wasn't emitted. This avoids TypeScript narrowing issues and duplicate cache saves.