Aglet

How to diagnose out-of-order events by version and effect

Out-of-order delivery is only harmful when event order carries meaning for the aggregate or consumer. This triage guide compares creation sequence, arrival sequence, processing order, versions, and final state for related events, then checks an in-order control case with the same input.

Establish what is happening

  1. Capture a related event sequence

    Record aggregate or resource identity, event identifiers, source sequence or version, creation time, arrival time, claim time, processing completion, retry history, and final state. Preserve the action affected by the state. Redact payload values while retaining fields needed to compare order.

  2. Compare creation and arrival order

    Align source commit, event creation, transport receipt, consumer start, acknowledgment, projection write, and visible result for each related event. Mark where order changes. Compare with a sequence that arrived in order so an intentional historical replay is not mistaken for a delivery failure.

  3. Check whether order changes meaning

    Apply the same events in both observed and source order in a controlled environment. Compare final version, fields, state transitions, notifications, and audit history. If order is not supposed to matter, document that evidence; if it is, preserve the exact older event that overwrote or blocked newer state.

What to carry forward

Return an ordering scope statement naming related events, source and arrival order, first harmful boundary, final-state difference, and uncertainty. Route next work to sequencing, version checks, consumer concurrency, or an intentional order-independent design. Stop when one permutation can test the leading risk.

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