# Hexagonal Architecture

> A convention of keeping a domain core free of framework and data types, with every input and output reached through ports.

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

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Ports and Adapters Architecture](https://banes-lab.com/records/architecture/ports-and-adapters-architecture.md) and before [Clean Architecture](https://banes-lab.com/records/architecture/clean-architecture.md).

## Repair

- Refactored by: Move Framework Outward, Add Ports
- Detected by: dependency direction violations
- Violated by: framework/data types in core
- Measured by: core purity score
- Enforced by: architecture tests

## Requires

- [Ports and Adapters](https://banes-lab.com/records/lexicon/ports-and-adapters.md)
- [Domain Core](https://banes-lab.com/records/lexicon/domain-core.md)

## Reinforces

- [Clean Architecture](https://banes-lab.com/records/architecture/clean-architecture.md)
- [Testability](https://banes-lab.com/records/architecture/testability.md)

## Enables

- [External System Isolation](https://banes-lab.com/records/lexicon/external-system-isolation.md)

## Conflicts with

- [Framework-Centric Core](https://banes-lab.com/records/lexicon/framework-centric-core.md)

## In tension with

- [Initial Complexity](https://banes-lab.com/records/lexicon/initial-complexity.md)

## Tensions

- [Hexagonal Architecture / Initial Complexity](https://banes-lab.com/records/tension/hexagonal-architecture-initial-complexity.md)

## Severity

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

## Category

- [Codebase / System Architecture Styles](https://banes-lab.com/records/architecture-category/codebase-system-architecture-styles.md)

## Linked from

- [The layer spine](https://banes-lab.com/software-architecture/model/the-layer-spine.md)
- [The direction axis](https://banes-lab.com/software-architecture/model/the-direction-axis.md)
- [Correctness / Determinism / Verification](https://banes-lab.com/ontology/principles/architecture-category-correctness-determinism-verification.md)
- [Codebase / System Architecture Styles](https://banes-lab.com/ontology/principles/architecture-category-codebase-system-architecture-styles.md)
- [Codebase / System Architecture Styles](https://banes-lab.com/ontology/lexicon/lexicon-category-codebase-system-architecture-styles.md)
- [Core Vocabulary](https://banes-lab.com/ontology/lexicon/lexicon-category-core-vocabulary.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
