# Event ingestion quality report

640 input records produce 626 canonical events, 6 quarantined records and 8 removed replays. The control is 640 = 626 + 6 + 8.

## Decisions and evidence

Both sources now share event_id, order_id, hub, service, kind and happened_at. UTC output has a Z suffix and does not depend on the host timezone. Sort by happened_at and event_id for deterministic results.

The two CONFLICT-01 records point to Q0001 and Q0002. Quarantine both rather than choosing an arrival. BAD-TZ lacks a timezone, BAD-TYPE has an unsupported action, BAD-EPOCH has a non-integer epoch, and BAD-SHIPMENT lacks shipment fields. Each appears with source filename, line number and reason. Five A records and three B records are exact replays; keep one canonical copy of each.

## Correction and verification

Ask the source owner to resolve the conflicting mapping before re-importing the batch. Do not repair the conflict using last-write-wins. A production ingestion service would also need schema versions, batch hashes and a quarantine alert; this reference pipeline demonstrates repeatable conversion and reconciliation. Reconciliation alone does not establish content correctness. Tests independently cover timezone conversion, epoch units, conflicts, replays, order invariance and input immutability.

