# Plugin Architecture

Record: `arch:plugin-architecture`
Kind: style
Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)
Severity: contextual
Scope: component, runtime, system
Canonical: https://banes-lab.com/ontology#arch-plugin-architecture

## Repair

- Refactored by: Introduce SPI, Add Registry, Extract Extension Point
- Detected by: direct plugin imports, central switch for plugins
- Violated by: core importing plugin implementations
- Measured by: plugin isolation score
- Enforced by: plugin contract tests, dependency rules

## requires

- [Extension Points](https://banes-lab.com/records/arch/extension-points.md)
- [Stable Interfaces](https://banes-lab.com/records/arch/stable-interfaces.md)
- [Discovery](https://banes-lab.com/records/lex/discovery.md)

## reinforces

- [Open/Closed Principle (OCP)](https://banes-lab.com/records/arch/open-closed.md)
- [Modularity](https://banes-lab.com/records/arch/modularity.md)

## enables

- [Runtime Extensibility](https://banes-lab.com/records/arch/runtime-extensibility.md)

## conflicts-with

- [Hardcoded Extensions](https://banes-lab.com/records/lex/hardcoded-extensions.md)

## tensions-with

- [Static Analysis](https://banes-lab.com/records/arch/static-analysis.md)
- [Security](https://banes-lab.com/records/lex/security.md)

## tensions

- [Plugin Architecture Static Analysis](https://banes-lab.com/records/tension/plugin-architecture-static-analysis.md)
- [Plugin Architecture Security](https://banes-lab.com/records/tension/plugin-architecture-security.md)

## referenced-by

- [Modularity](https://banes-lab.com/records/arch/modularity.md)
- [Composability](https://banes-lab.com/records/arch/composability.md)
- [Replaceability](https://banes-lab.com/records/arch/replaceability.md)
- [Self-Describing Architecture](https://banes-lab.com/records/arch/self-describing-architecture.md)
- [Extension Points](https://banes-lab.com/records/arch/extension-points.md)
- [Runtime Discovery](https://banes-lab.com/records/arch/runtime-discovery.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)
