Duplicate Re-Check Run And Its Batches
The Lifecycle
Transitions Explained
Run states describe aggregate progress, while batch states describe queued delivery and completion. The empty run and a completed single-window run both finish directly. A caught exhausted delivery fails the batch and run; unprocessed windows of that failed run can still execute.
What Cannot Happen
Terminal runs do not return to running. A second run is rejected only while another is queued or running; failed leftover work may therefore overlap a new run.
Concurrency and Timing
Totals are fixed at start, but windows are reread against current records. New identities inside an old window can enter processing, and deletions remove identities. Ten-minute resend claims are shorter than queue visibility; a consumer crash can leave an unresolved window repeatedly offered.