# Anti-Corruption Layer

> A design pattern that translates an external system's model into the local domain's terms at the boundary.

Record: `architecture:anti-corruption-layer`
Kind: pattern
Layer: [Domain Modeling](https://banes-lab.com/records/layer/domain-modeling.md)
Severity: recommended
Scope: integration, bounded context boundary
Canonical: https://banes-lab.com/ontology#architecture-anti-corruption-layer

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Context Mapping](https://banes-lab.com/records/architecture/context-mapping.md) and before [Explicit Boundaries](https://banes-lab.com/records/architecture/explicit-boundaries.md).

## Repair

- Refactored by: Add Translator, Add Adapter, Introduce Boundary DTO
- Detected by: external DTOs used in domain layer
- Violated by: external model leaking into domain
- Measured by: leakage count, adapter coverage
- Enforced by: import rules, layer tests

## Requires

- [Explicit Boundary](https://banes-lab.com/records/lexicon/explicit-boundary.md)
- [Translation Model](https://banes-lab.com/records/lexicon/translation-model.md)

## Reinforces

- [Domain Purity](https://banes-lab.com/records/lexicon/domain-purity.md)
- [Low Coupling](https://banes-lab.com/records/architecture/low-coupling.md)

## Enables

- [Legacy/System Integration](https://banes-lab.com/records/lexicon/legacy-system-integration.md)

## Conflicts with

- [Vendor Lock-In Leakage](https://banes-lab.com/records/architecture/vendor-lock-in-leakage.md)

## In tension with

- [Mapping Overhead](https://banes-lab.com/records/lexicon/mapping-overhead.md)

## Tensions

- [Anti-Corruption Layer / Mapping Overhead](https://banes-lab.com/records/tension/anti-corruption-layer-mapping-overhead.md)

## Contracts

- [Anti-Corruption Layer Over Cross-Context Leak](https://banes-lab.com/records/algorithms/no-leaky-context.md)

## Severity

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

## Category

- [Domain Architecture](https://banes-lab.com/records/architecture-category/domain-architecture.md)

## Enabled by

- [Context Mapping](https://banes-lab.com/records/architecture/context-mapping.md)

## Reinforced by

- [Adapter Pattern](https://banes-lab.com/records/architecture/adapter-pattern.md)

## Linked from

- [The principle architecture](https://banes-lab.com/software-architecture/glossary/the-principle-architecture.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)
- [Core Modular Design](https://banes-lab.com/ontology/principles/architecture-category-core-modular-design.md)
- [Structural Patterns](https://banes-lab.com/ontology/principles/architecture-category-structural-patterns.md)
- [Domain Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-domain-architecture.md)
- [Quality Attributes](https://banes-lab.com/ontology/lexicon/lexicon-category-quality-attributes.md)
- [Architectural Rules](https://banes-lab.com/ontology/algorithms/algorithms-domain-architectural-rules.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
