# Shared Mutable State

> A defect in which writable state is shared across modules with no owner and no synchronization.

Record: `architecture:shared-mutable-state`
Kind: anti-pattern
Layer: [Enforcement Core](https://banes-lab.com/records/layer/enforcement-core.md)
Severity: discouraged
Scope: modularity, state_transaction
Canonical: https://banes-lab.com/ontology#architecture-shared-mutable-state

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Hardcoded Configuration](https://banes-lab.com/records/architecture/hardcoded-configuration.md) and before [Boundary Leakage](https://banes-lab.com/records/architecture/boundary-leakage.md).

## Repair

- Refactored by: encapsulate_state, assign_owner, make_immutable, add_transaction_boundary, apply_concurrency_control
- Detected by: global_mutable_object, public_mutable_fields, shared_cache_without_policy, race_condition, order_dependent_tests
- Violated by: Expose writable state across modules, allow multiple actors to mutate it, omit ownership and synchronization, and let behavior depend on mutation order.
- Measured by: writable state reachable from more than one module, race-detector findings
- Enforced by: immutability and visibility lint rules, concurrency tests

## Severity

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

## Category

- [Anti-patterns](https://banes-lab.com/records/architecture-category/anti-patterns.md)

## Force

- [Modularity](https://banes-lab.com/records/force/modularity.md)
- [State transaction](https://banes-lab.com/records/force/state-transaction.md)

## Detected 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)

## Negated by

- [Immutability](https://banes-lab.com/records/architecture/immutability.md)
- [State Isolation](https://banes-lab.com/records/architecture/state-isolation.md)

## Linked from

- [Shared surfaces](https://banes-lab.com/pag/orchestration/shared-surfaces.md)
- [Coordination is software](https://banes-lab.com/disciplined-methodology/collaborate/coordination-is-software.md)
- [Principles are typed](https://banes-lab.com/software-architecture/principles/principles-are-typed.md)
- [Seven controls, seven classes](https://banes-lab.com/software-architecture/decay/seven-controls-seven-classes.md)
- [A concern is a component](https://banes-lab.com/software-architecture/scale/a-concern-is-a-component.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)
- [Transactions / State / Concurrency](https://banes-lab.com/ontology/principles/architecture-category-transactions-state-concurrency.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The forces](https://banes-lab.com/ontology/schema/the-forces.md)
