Incident Management Platform  ·  View 18 of 34  ·  4 · Data

The Log Is the Record — Events In, Projections Out

How events from three paging cells and the console become one ordered, append-only timeline, and how every view of an incident is derived from it.

Editable source SVG draw.io All views
Emit Paging outbox cells A · B · C Console commands notes · severity · roles Reconcile Reconciler idempotent on event_id Minority replay after partition Append Incident event log no UPDATE · no DELETE Hash chain per incident Project Projector replayable Operational store open incidents · views Serve Console p95 ≤ 1.5 s Outbound stream idempotency keys Preserve Daily anchors Ceph · Object Lock Rebuild drill quarterly · ≤ 60 min The Log Is the Record — Events In, Projections Out Queue / topic Application we own Decision point Data store Security / platform A correction is a new event that supersedes an old one. Merge and split are events too, so both sides of either keep their original timelines. v 1.0 · owner Reliability Architecture · date 2026-09

Decisions

  • The event log is PostgreSQL with no UPDATE or DELETE privilege for any application role, a trigger that refuses both, and a per-incident hash chain. A seven-year append-only table is well within what PostgreSQL does routinely; a dedicated event store would be one more database to restore under pressure (ADR-08).
  • Merge, split, detach and every correction are events. A merged incident keeps its original timeline, and 'what did we believe at 03:14' is answered by replaying to 03:14.
  • Projections are disposable. The operational store can be dropped and rebuilt from the log, and the quarterly drill does exactly that, timed.

Targets

  • Event log RPO ≤ 5 s. Projection rebuild ≤ 60 minutes, tested quarterly. Outbound events at-least-once, with the event id as the consumer's idempotency key.

Risks

  • Ordering by platform receive time across three cells depends on disciplined clocks. Each cell runs chrony against its own time sources, and events carry cell and sequence so ties and small skews order deterministically.