# CAP Theorem

> A conceptual representation of the choice a distributed store makes during a network partition, between consistency and availability.

Record: `architecture:cap-theorem`
Kind: model
Layer: [Causality Core](https://banes-lab.com/records/layer/causality-core.md)
Severity: contextual
Scope: distributed state, consistency, availability
Canonical: https://banes-lab.com/ontology#architecture-cap-theorem

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Total-Order Broadcast](https://banes-lab.com/records/architecture/total-order-broadcast.md) and before [PACELC Theorem](https://banes-lab.com/records/architecture/pacelc-theorem.md).

## Repair

- Refactored by: Choose CP or AP explicitly per data class under partition
- Detected by: split-brain writes or stalls during network partitions
- Violated by: a distributed store assumed to be both strongly consistent and fully available under partition
- Measured by: consistency/availability violations during partition events
- Enforced by: distributed-systems review

## Requires

- [Network Partition Possibility](https://banes-lab.com/records/lexicon/network-partition-possibility.md)

## Reinforces

- [Causal Consistency](https://banes-lab.com/records/architecture/causal-consistency.md)
- [Eventual Consistency](https://banes-lab.com/records/architecture/eventual-consistency.md)

## Enables

- [Explicit Consistency/Availability Choice Under Partition](https://banes-lab.com/records/lexicon/explicit-consistency-availability-choice-under-partition.md)

## Conflicts with

- [Assumed Total Consistency And Availability](https://banes-lab.com/records/lexicon/assumed-total-consistency-and-availability.md)

## In tension with

- [Latency](https://banes-lab.com/records/architecture/latency.md)

## Tensions

- [CAP Theorem / Latency](https://banes-lab.com/records/tension/cap-theorem-latency.md)

## Severity

- [contextual](https://banes-lab.com/records/vocabulary/severity-contextual.md)

## Category

- [Causality / Ordering / Distributed Time](https://banes-lab.com/records/architecture-category/causality-ordering-distributed-time.md)

## Required by

- [PACELC Theorem](https://banes-lab.com/records/architecture/pacelc-theorem.md)

## Reinforced by

- [PACELC Theorem](https://banes-lab.com/records/architecture/pacelc-theorem.md)

## Linked from

- [Separate, trade, or mitigate](https://banes-lab.com/software-architecture/principles/separate-trade-or-mitigate.md)
- [Causality / Ordering / Distributed Time](https://banes-lab.com/ontology/principles/architecture-category-causality-ordering-distributed-time.md)
- [Event / Messaging / Asynchronous Architecture](https://banes-lab.com/ontology/principles/architecture-category-event-messaging-asynchronous-architecture.md)
- [Scalability / Performance / Optimization](https://banes-lab.com/ontology/principles/architecture-category-scalability-performance-optimization.md)
- [Causality / Ordering / Distributed Time](https://banes-lab.com/ontology/lexicon/lexicon-category-causality-ordering-distributed-time.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
