# ACID

Record: `arch:acid`
Kind: model
Layer: [Atomic Boundary](https://banes-lab.com/records/layer/atomic-boundary.md)
Severity: contextual
Scope: database, transaction
Canonical: https://banes-lab.com/ontology#arch-acid

## Repair

- Refactored by: Define Transaction Boundary, Add Constraints
- Detected by: non-transactional multi-write invariants
- Violated by: inconsistent transactional boundaries
- Measured by: transactional invariant defects
- Enforced by: DB transactions, isolation tests

## requires

- [Atomicity](https://banes-lab.com/records/arch/atomicity.md)
- [Consistency](https://banes-lab.com/records/arch/consistency.md)
- [Isolation](https://banes-lab.com/records/arch/isolation.md)
- [Durability](https://banes-lab.com/records/lex/durability.md)

## reinforces

- [Correctness](https://banes-lab.com/records/arch/correctness.md)

## enables

- [Strong Transactional Guarantees](https://banes-lab.com/records/lex/strong-transactional-guarantees.md)

## tensions-with

- [Distributed Availability](https://banes-lab.com/records/lex/distributed-availability.md)
- [BASE/Eventual Consistency](https://banes-lab.com/records/lex/base-eventual-consistency.md)

## tensions

- [ACID Distributed Availability](https://banes-lab.com/records/tension/acid-distributed-availability.md)
- [ACID BASE/Eventual Consistency](https://banes-lab.com/records/tension/acid-base-eventual-consistency.md)
