Build a useful investigation brief
Build the event matrix
List event key, resource, state, version, timestamp, retry marker, channel, notification ID, group, action, and history. Include one duplicate and one legitimate repeat. Keep delivery order separate from source order.
Trace the first repetition
Vary retry, channel, state, and elapsed time one at a time. Compare update-in-place, grouped, and separate output. Record whether the latest state is complete and whether an earlier action remains available or is incorrectly replaced.
Write the coalescing brief
State identity boundary, first duplicate source, retained history, and competing explanations. Recommend one bounded deduplication or grouping experiment with a pass condition. Avoid claiming source idempotency from matching notification copy alone. Record which event identity justifies retaining or merging it.
What to carry forward
The investigation is complete when event identity and user-visible state explain the repeated output, or the first unknown is explicit. Stop with one coalescing experiment. Preserve a legitimate repeated event and the latest action so a reduction in volume does not masquerade as correctness.
Technical background: Android developer documentation.
Keep the decision with the work.
Use a Work Item in Aglet to record the problem, the evidence you have, and the next decision. Add an owner and priority, then keep updates in the discussion so the next person can follow the reasoning.
Create an account See the product workflow