# Interchangeability

> The degree to which several implementations conform to one contract closely enough to be selected at runtime.

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

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Replaceability](https://banes-lab.com/records/architecture/replaceability.md) and before [Independence](https://banes-lab.com/records/architecture/independence.md).

## Repair

- Refactored by: Normalize Interface, Add Adapter, Align Contract
- Detected by: contract test failure, incompatible schema
- Violated by: non-conforming substitutes
- Measured by: conformance score, compatibility tests
- Enforced by: contract tests, [schema validation](https://banes-lab.com/records/architecture/schema-validation.md)

## Requires

- [Contract Compatibility](https://banes-lab.com/records/lexicon/contract-compatibility.md)
- [Contract Compatibility](https://banes-lab.com/records/lexicon/contract-compatibility.md)

## Reinforces

- [Replaceability](https://banes-lab.com/records/architecture/replaceability.md)
- [Polymorphism](https://banes-lab.com/records/architecture/polymorphism.md)

## Enables

- [Strategy Swap](https://banes-lab.com/records/lexicon/strategy-swap.md)
- [Strategy Swap](https://banes-lab.com/records/lexicon/strategy-swap.md)

## Conflicts with

- [Implementation-Specific Contracts](https://banes-lab.com/records/lexicon/implementation-specific-contracts.md)

## In tension with

- [Specialized Optimization](https://banes-lab.com/records/lexicon/specialized-optimization.md)

## Tensions

- [Interchangeability / Specialized Optimization](https://banes-lab.com/records/tension/interchangeability-specialized-optimization.md)

## Severity

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

## Category

- [Core Modular Design](https://banes-lab.com/records/architecture-category/core-modular-design.md)

## Reinforced by

- [Abstract Factory Pattern](https://banes-lab.com/records/architecture/abstract-factory-pattern.md)

## Linked from

- [Core Modular Design](https://banes-lab.com/ontology/principles/architecture-category-core-modular-design.md)
- [SOLID / Object-Oriented Design](https://banes-lab.com/ontology/principles/architecture-category-solid-object-oriented-design.md)
- [Creational Patterns](https://banes-lab.com/ontology/principles/architecture-category-creational-patterns.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 resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
