# Composability

Record: `arch:composability`
Kind: principle
Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)
Severity: recommended
Scope: function, component, system
Canonical: https://banes-lab.com/ontology#arch-composability

## Repair

- Refactored by: Normalize Interface, Extract Component, Introduce Adapter
- Detected by: non-chainable APIs, incompatible contracts
- Violated by: [hidden side effects](https://banes-lab.com/records/lex/hidden-side-effects.md), [incompatible interfaces](https://banes-lab.com/records/lex/incompatible-interfaces.md)
- Measured by: composition count, interface compatibility
- Enforced by: contract tests, type checks

## requires

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

## reinforces

- [Modularity](https://banes-lab.com/records/arch/modularity.md)
- [Reusability](https://banes-lab.com/records/arch/reusability.md)

## enables

- [Pipeline Architecture](https://banes-lab.com/records/arch/pipeline-architecture.md)
- [Plugin Architecture](https://banes-lab.com/records/arch/plugin-architecture.md)

## conflicts-with

- [Monolithic Procedures](https://banes-lab.com/records/lex/monolithic-procedures.md)

## tensions-with

- [Performance Overhead](https://banes-lab.com/records/lex/performance-overhead.md)

## tensions

- [Composability Performance Overhead](https://banes-lab.com/records/tension/composability-performance-overhead.md)

## referenced-by

- [Component-Based Architecture](https://banes-lab.com/records/arch/component-based-architecture.md)
- [Pipes and Filters](https://banes-lab.com/records/arch/pipes-and-filters.md)
- [Modularity](https://banes-lab.com/records/arch/modularity.md)
- [Reusability](https://banes-lab.com/records/arch/reusability.md)
- [Pipeline Architecture](https://banes-lab.com/records/arch/pipeline-architecture.md)
- [Decorator Pattern](https://banes-lab.com/records/arch/decorator-pattern.md)
