# Replaceability

Record: `arch:replaceability`
Kind: quality-attribute
Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)
Severity: recommended
Scope: component, service, infrastructure
Canonical: https://banes-lab.com/ontology#arch-replaceability

## Repair

- Refactored by: Introduce Port, Extract Adapter, Invert Dependency
- Detected by: infrastructure imports in core layers
- Violated by: direct vendor SDK usage in domain/application
- Measured by: adapter coverage, boundary purity
- Enforced by: import restrictions, adapter tests

## requires

- [Stable Interfaces](https://banes-lab.com/records/arch/stable-interfaces.md)
- [Low Coupling](https://banes-lab.com/records/arch/low-coupling.md)

## reinforces

- [Dependency Inversion Principle (DIP)](https://banes-lab.com/records/arch/dependency-inversion.md)
- [Ports and Adapters](https://banes-lab.com/records/lex/ports-and-adapters.md)

## enables

- [Vendor Swap](https://banes-lab.com/records/lex/vendor-swap.md)
- [Plugin Architecture](https://banes-lab.com/records/arch/plugin-architecture.md)

## conflicts-with

- [Concrete Coupling](https://banes-lab.com/records/arch/concrete-coupling.md)

## tensions-with

- [Deep Optimization](https://banes-lab.com/records/lex/deep-optimization.md)

## tensions

- [Replaceability Deep Optimization](https://banes-lab.com/records/tension/deep-optimization-replaceability.md)

## referenced-by

- [Ports and Adapters Architecture](https://banes-lab.com/records/arch/ports-and-adapters-architecture.md)
- [Component-Based Architecture](https://banes-lab.com/records/arch/component-based-architecture.md)
- [Stable Interfaces](https://banes-lab.com/records/arch/stable-interfaces.md)
- [Single Responsibility Principle (SRP)](https://banes-lab.com/records/arch/single-responsibility.md)
- [Separation of Concerns](https://banes-lab.com/records/arch/separation-of-concerns.md)
- [High Cohesion](https://banes-lab.com/records/arch/high-cohesion.md)
- [Low Coupling](https://banes-lab.com/records/arch/low-coupling.md)
- [Information Hiding](https://banes-lab.com/records/arch/information-hiding.md)
- [Abstraction](https://banes-lab.com/records/arch/abstraction.md)
- [Modularity](https://banes-lab.com/records/arch/modularity.md)
- [Composition Over Inheritance](https://banes-lab.com/records/arch/composition-over-inheritance.md)
- [Interchangeability](https://banes-lab.com/records/arch/interchangeability.md)
- [Explicit Boundaries](https://banes-lab.com/records/arch/explicit-boundaries.md)
- [Dependency Injection](https://banes-lab.com/records/arch/dependency-injection.md)
- [Portability](https://banes-lab.com/records/arch/portability.md)
- [Protocol Independence](https://banes-lab.com/records/arch/protocol-independence.md)
- [Adapter Pattern](https://banes-lab.com/records/arch/adapter-pattern.md)
