# State Isolation

> A design rule that each piece of mutable state belongs to one unit of concurrent execution, so no two units that run at the same time can write it.

Record: `architecture:state-isolation`
Kind: principle
Layer: [Atomic Boundary](https://banes-lab.com/records/layer/atomic-boundary.md)
Severity: mandatory
Scope: function, component, service
Canonical: https://banes-lab.com/ontology#architecture-state-isolation

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Pessimistic Locking](https://banes-lab.com/records/architecture/pessimistic-locking.md) and before [Controlled Side Effects](https://banes-lab.com/records/architecture/controlled-side-effects.md).

## Repair

- Refactored by: Encapsulate State, Pass Explicit State, Use Immutable Data
- Detected by: static mutable fields, shared caches without ownership
- Violated by: [global mutable state](https://banes-lab.com/records/lexicon/global-mutable-state.md)
- Measured by: global state count
- Enforced by: lint rules, architecture tests

## Requires

- [Encapsulation](https://banes-lab.com/records/architecture/encapsulation.md)
- [Ownership](https://banes-lab.com/records/lexicon/ownership.md)

## Reinforces

- [Predictability](https://banes-lab.com/records/architecture/predictability.md)
- [Concurrency Correctness](https://banes-lab.com/records/lexicon/concurrency-correctness.md)

## Enables

- [Testability](https://banes-lab.com/records/architecture/testability.md)

## Conflicts with

- [Shared Mutable State](https://banes-lab.com/records/architecture/shared-mutable-state.md)

## In tension with

- [Data Sharing](https://banes-lab.com/records/lexicon/data-sharing.md)

## Tensions

- [State Isolation / Data Sharing](https://banes-lab.com/records/tension/data-sharing-state-isolation.md)

## Contracts

- [Resource Core](https://banes-lab.com/records/algorithms/resource-core.md)

## Severity

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

## Category

- [Transactions / State / Concurrency](https://banes-lab.com/records/architecture-category/transactions-state-concurrency.md)

## Enforced by

- [rules/eslint/closure-no-module-singleton.eslint.rule.ts](https://banes-lab.com/source/governance/rules/eslint/closure-no-module-singleton.eslint.rule.ts.md)

## Linked from

- [Phase binding](https://banes-lab.com/pag/orchestration/phase-binding.md)
- [Seven controls, seven classes](https://banes-lab.com/software-architecture/decay/seven-controls-seven-classes.md)
- [Anti-patterns](https://banes-lab.com/ontology/principles/architecture-category-anti-patterns.md)
- [Correctness / Determinism / Verification](https://banes-lab.com/ontology/principles/architecture-category-correctness-determinism-verification.md)
- [Core Modular Design](https://banes-lab.com/ontology/principles/architecture-category-core-modular-design.md)
- [Core Vocabulary](https://banes-lab.com/ontology/lexicon/lexicon-category-core-vocabulary.md)
- [Transactions / State / Concurrency](https://banes-lab.com/ontology/lexicon/lexicon-category-transactions-state-concurrency.md)
- [Architectural Clusters](https://banes-lab.com/ontology/algorithms/algorithms-domain-architectural-clusters.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
