In CepOperator the pruning of timed out partial matches happens along with feeding events into the NFA. Either when unbuffering on Watermark or according to the processing time.
1. Processing time
The state is pruned only with the timestamps of incoming events. If there are no incoming events no pruning happens
2. Event time
It is slightly more complicated, but the outcome is similar. We register timers that pop events from the buffer, but we do not register any timers for when the timeout of a partial match could happen. Therefore if there will be no more events we will never prune matches.