Corrections and superseded facts

Corrections are new immutable events

Oway never mutates or retracts a body that was already delivered. When shipment information is
corrected, Oway emits a new event of the same type:

  • the correction has a new event_id;
  • supersedes contains the earlier event's ID;
  • data contains the corrected values;
  • both records remain independently verifiable and deduplicated.

For example, an arrival time can be corrected:

{
  "event_id": "shipment_milestone:01J3B4R6E7Y2V8W4H6K9M1N2P4",
  "type": "shipment.arrived_at_pickup",
  "supersedes": "shipment_milestone:01J3B4R6E7Y2V8W4H6K9M1N2P3"
}

Store facts by event_id and preserve the supersession edge. If your application maintains a
materialized latest view, update it only after the correction is durably stored. Do not delete the
original; it remains part of the audit history.

A delivery retry or manual replay is not a correction: it keeps the same event_id, body, and
supersedes value.


Did this page help you?