# Circular Dependency

> A defect in which modules depend on each other, directly or through others, so none can change alone.

Record: `architecture:circular-dependency`
Kind: anti-pattern
Layer: [Enforcement Core](https://banes-lab.com/records/layer/enforcement-core.md)
Severity: discouraged
Scope: modularity
Aliases: Cyclic Dependencies
Canonical: https://banes-lab.com/ontology#architecture-circular-dependency

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Vendor Lock-In Leakage](https://banes-lab.com/records/architecture/vendor-lock-in-leakage.md) and before [Cyclic Deployment Dependency](https://banes-lab.com/records/architecture/cyclic-deployment-dependency.md).

## Repair

- Refactored by: invert_dependency, extract_interface, split_shared_contract, introduce_event_or_mediator
- Detected by: dependency_cycle, mutual_imports, bootstrap_order_hacks, bidirectional_service_calls
- Violated by: Allow modules to depend on each other directly or indirectly until no module can change, test, deploy, or initialize independently.
- Measured by: dependency cycles and their length
- Enforced by: a dependency-cycle check in the build

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

## Detected by

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

## Negated by

- [Directed Acyclic Graph](https://banes-lab.com/records/architecture/directed-acyclic-graph.md)
- [Low Coupling](https://banes-lab.com/records/architecture/low-coupling.md)

## Linked from

- [Orchestration as declared structure](https://banes-lab.com/pag/orchestration/declared-structure.md)
- [Counting copies](https://banes-lab.com/disciplined-methodology/verify/counting-copies.md)
- [A system is a graph](https://banes-lab.com/software-architecture/model/a-system-is-a-graph.md)
- [The direction axis](https://banes-lab.com/software-architecture/model/the-direction-axis.md)
- [Principles are typed](https://banes-lab.com/software-architecture/principles/principles-are-typed.md)
- [What can drift, seen through how it drifts](https://banes-lab.com/software-architecture/coverage/what-can-drift-seen-through-how-it-drifts.md)
- [Anti-patterns](https://banes-lab.com/ontology/principles/architecture-category-anti-patterns.md)
- [Domain Architecture](https://banes-lab.com/ontology/principles/architecture-category-domain-architecture.md)
- [Causality / Ordering / Distributed Time](https://banes-lab.com/ontology/principles/architecture-category-causality-ordering-distributed-time.md)
- [Core Modular Design](https://banes-lab.com/ontology/principles/architecture-category-core-modular-design.md)
- [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The forces](https://banes-lab.com/ontology/schema/the-forces.md)
