# Event Sourcing

Record: `arch:event-sourcing`
Kind: pattern
Layer: [Execution Core](https://banes-lab.com/records/layer/execution-core.md)
Severity: contextual
Scope: domain, persistence
Canonical: https://banes-lab.com/ontology#arch-event-sourcing

## Repair

- Refactored by: Persist Events, Build Projections
- Detected by: state changes lacking events
- Violated by: mutating state without event record
- Measured by: event/state consistency
- Enforced by: event append rules

## requires

- [Append-Only Log](https://banes-lab.com/records/arch/append-only-log.md)
- [Domain Events](https://banes-lab.com/records/arch/domain-events.md)

## reinforces

- [Auditability](https://banes-lab.com/records/arch/auditability.md)
- [Temporal Modeling](https://banes-lab.com/records/lex/temporal-modeling.md)

## enables

- [Replay](https://banes-lab.com/records/lex/replay.md)
- [Historical Reconstruction](https://banes-lab.com/records/lex/historical-reconstruction.md)

## conflicts-with

- [CRUD-Only State Persistence](https://banes-lab.com/records/lex/crud-only-state-persistence.md)

## tensions-with

- [Query Complexity](https://banes-lab.com/records/lex/query-complexity.md)

## tensions

- [Event Sourcing Query Complexity](https://banes-lab.com/records/tension/event-sourcing-query-complexity.md)

## referenced-by

- [Event-Driven Architecture](https://banes-lab.com/records/arch/event-driven-architecture.md)
- [CQRS](https://banes-lab.com/records/arch/command-query-responsibility-segregation.md)
- [Append-Only Log](https://banes-lab.com/records/arch/append-only-log.md)
