Marking as Draft because I'd like to validate if this approach makes sense
Keep a list of events that have already been processed in the current window, to mitigate duplicate event processing (e.g. calls to api) in case of application restarts. This is guaranteed within a single window firing and not between windows firing: when resuming from a checkpoint (e.g. recovery) source offsets (and list state) will rewind to the latest known checkpoint. The list state is check pointed consistently by the system as part of the distributed snapshots.