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.
Why events
Section titled “Why events”- “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.
The event shape
Section titled “The event shape”Events in EvidentSource follow the CloudEvents spec. Every event has:
type— what happened (e.g.TodoCompleted,TransferApproved)subject— the entity it’s aboutstream— the logical grouping it belongs todata— 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
How events flow
Section titled “How events flow”- A client sends a command to EvidentSource.
- A State Change component’s
decidefunction runs: reads state views, validates the command, returns events. - EvidentSource atomically appends the events (honoring any consistency boundary conditions).
- Every State View subscribed to those events runs its
evolvefunction; the views become queryable at the new revision. - 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.