# Extension Points

Record: `arch:extension-points`
Kind: mechanism
Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)
Severity: recommended
Scope: framework, plugin, module
Canonical: https://banes-lab.com/ontology#arch-extension-points

## Repair

- Refactored by: Add Hook, Add SPI, Extract Interface
- Detected by: repeated core edits for variants
- Violated by: modifying internals to add behavior
- Measured by: extension coverage
- Enforced by: extension tests, API review

## requires

- [Stable Interfaces](https://banes-lab.com/records/arch/stable-interfaces.md)
- [Contracts](https://banes-lab.com/records/lex/contracts.md)

## reinforces

- [Open/Closed Principle (OCP)](https://banes-lab.com/records/arch/open-closed.md)
- [Plugin Architecture](https://banes-lab.com/records/arch/plugin-architecture.md)

## enables

- [Third-Party Extension](https://banes-lab.com/records/lex/third-party-extension.md)

## conflicts-with

- [Closed Core](https://banes-lab.com/records/lex/closed-core.md)

## tensions-with

- [API Surface Growth](https://banes-lab.com/records/lex/api-surface-growth.md)

## tensions

- [Extension Points API Surface Growth](https://banes-lab.com/records/tension/api-surface-growth-extension-points.md)

## referenced-by

- [Plugin Architecture](https://banes-lab.com/records/arch/plugin-architecture.md)
- [Runtime Extensibility](https://banes-lab.com/records/arch/runtime-extensibility.md)
- [Open/Closed Principle (OCP)](https://banes-lab.com/records/arch/open-closed.md)
