CAP: the precise statement
Brewer's conjecture (2000), proved by Gilbert & Lynch (2002): a distributed system cannot simultaneously provide all three of:
- Consistency — every read sees the most recent write (this is actually linearizability, not just any consistency model).
- Availability — every request to a non-failing node returns a non-error response.
- Partition tolerance — the system continues to operate when the network partitions.
The critical misreading: partition tolerance is not optional. Real networks partition. The actual choice is: when a partition happens, do you sacrifice C (stay available with possibly stale data) or sacrifice A (refuse requests to preserve linearizability)? This is a binary choice during a partition, not a dial to turn. Calling a system "CA" just means you haven't thought through what happens when the network fails.
