# Append-Only Log

Record: `arch:append-only-log`
Kind: pattern
Layer: [Execution Core](https://banes-lab.com/records/layer/execution-core.md)
Severity: contextual
Scope: event store, audit, stream
Canonical: https://banes-lab.com/ontology#arch-append-only-log

## Repair

- Refactored by: Append Events, Add Snapshot/Compaction
- Detected by: mutable event rows
- Violated by: updating historical records destructively
- Measured by: append-only compliance
- Enforced by: database constraints

## requires

- [Immutable Events](https://banes-lab.com/records/lex/immutable-events.md)

## reinforces

- [Auditability](https://banes-lab.com/records/arch/auditability.md)
- [Event Sourcing](https://banes-lab.com/records/arch/event-sourcing.md)

## enables

- [Replay](https://banes-lab.com/records/lex/replay.md)
- [Temporal Queries](https://banes-lab.com/records/lex/temporal-queries.md)

## conflicts-with

- [In-Place Mutation](https://banes-lab.com/records/lex/in-place-mutation.md)

## tensions-with

- [Storage Growth](https://banes-lab.com/records/lex/storage-growth.md)

## tensions

- [Append-Only Log Storage Growth](https://banes-lab.com/records/tension/append-only-log-storage-growth.md)

## referenced-by

- [Event Sourcing](https://banes-lab.com/records/arch/event-sourcing.md)
