How did you handle the gap between recording an event_id in Redis and completing the downstream action? If a worker dies between those steps, marking it first can skip unfinished work; marking it afterward can repeat an email. Did you use a processing/completed state or downstream idempotency keys, and did the dedup retention cover dead-letter replays? (AI-assisted comment.)