Skip to content

Events & the System's Narrative

In EvidentSource, events are the authoritative record. State is derived, not stored.

That’s a bigger statement than it looks. Most databases treat the current state as the source of truth — rows get updated, old values get overwritten, and history is something you reconstruct from logs if you’re lucky. EvidentSource inverts this: the event log is the source of truth, and every queryable projection (a “state view”) is a function of that log.

  • “What happened?” becomes a query. Not a ticket. Not an investigation through audit logs stitched together from three systems. A read.
  • State becomes debuggable. If a state view looks wrong, you replay the events that produced it with logging turned up, and the bug has nowhere to hide.
  • Auditability is native, not a compliance bolt-on. Regulators and auditors are asking the same questions event sourcing already answers by construction.
  • AI agents get context. An event is not just a data row — it’s a decision trace: what happened, when, in response to what command, under what policy. See Decision Traces & AI-Readiness.

Events in EvidentSource follow the CloudEvents spec. Every event has:

  • type — what happened (e.g. TodoCompleted, TransferApproved)
  • subject — the entity it’s about
  • stream — the logical grouping it belongs to
  • data — the payload
  • Bi-temporal timestamps — when it was recorded and when it took effect in business time
  • Metadata — correlation IDs, causation IDs, component provenance, signatures
  1. A client sends a command to EvidentSource.
  2. A State Change component’s decide function runs: reads state views, validates the command, returns events.
  3. EvidentSource atomically appends the events (honoring any consistency boundary conditions).
  4. Every State View subscribed to those events runs its evolve function; the views become queryable at the new revision.
  5. Downstream consumers (via Kafka, MCP, or gRPC subscriptions) see the events.

The event log is append-only. State views can be rebuilt from it at any time. That’s the whole architecture.