# Separation of Concerns

Record: `arch:separation-of-concerns`
Kind: principle
Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)
Severity: mandatory
Scope: module, package, component, system
Canonical: https://banes-lab.com/ontology#arch-separation-of-concerns

## Repair

- Refactored by: Extract Layer, Move Logic, Introduce Boundary
- Detected by: layer imports, mixed naming roles, cross-boundary logic
- Violated by: business logic in controllers, persistence logic in domain
- Measured by: dependency direction, layer purity, concern overlap
- Enforced by: import rules, dependency graph checks

## requires

- [Explicit Boundaries](https://banes-lab.com/records/arch/explicit-boundaries.md)
- [Abstraction](https://banes-lab.com/records/arch/abstraction.md)

## reinforces

- [Single Responsibility Principle (SRP)](https://banes-lab.com/records/arch/single-responsibility.md)
- [Modularity](https://banes-lab.com/records/arch/modularity.md)
- [Layered Architecture](https://banes-lab.com/records/arch/layered-architecture.md)

## enables

- [Maintainability](https://banes-lab.com/records/lex/maintainability.md)
- [Replaceability](https://banes-lab.com/records/arch/replaceability.md)

## conflicts-with

- [Cross-Cutting Leakage](https://banes-lab.com/records/lex/cross-cutting-leakage.md)
- [Mixed Layers](https://banes-lab.com/records/lex/mixed-layers.md)

## tensions-with

- [Over-Layering](https://banes-lab.com/records/lex/over-layering.md)

## tensions

- [Separation of Concerns Over-Layering](https://banes-lab.com/records/tension/over-layering-separation-of-concerns.md)

## referenced-by

- [Visitor Pattern](https://banes-lab.com/records/arch/visitor-pattern.md)
- [Statecharts](https://banes-lab.com/records/arch/statecharts.md)
- [Layered Architecture](https://banes-lab.com/records/arch/layered-architecture.md)
- [Single Responsibility Principle (SRP)](https://banes-lab.com/records/arch/single-responsibility.md)
- [Modularity](https://banes-lab.com/records/arch/modularity.md)
- [One Concern Per File](https://banes-lab.com/records/arch/one-concern-per-file.md)
