# Registry Pattern

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

## Repair

- Refactored by: Encapsulate Registry, Add Typed Keys
- Detected by: mutable global maps without lifecycle
- Violated by: ungoverned global registry
- Measured by: registry consistency
- Enforced by: registry validation

## requires

- [Keyed Registration](https://banes-lab.com/records/lex/keyed-registration.md)

## reinforces

- [Discovery](https://banes-lab.com/records/lex/discovery.md)
- [Factory Pattern](https://banes-lab.com/records/arch/factory-pattern.md)

## enables

- [Dynamic Lookup](https://banes-lab.com/records/lex/dynamic-lookup.md)

## conflicts-with

- [Direct Reference](https://banes-lab.com/records/lex/direct-reference.md)

## tensions-with

- [Global State](https://banes-lab.com/records/lex/global-state.md)

## tensions

- [Registry Pattern Global State](https://banes-lab.com/records/tension/global-state-registry-pattern.md)

## Evidence in the code

- [registerPage](https://banes-lab.com/source/tree/domain/registries/page.registry.ts.md)
- [createRegistry](https://banes-lab.com/source/tree/domain/registries/base.registry.ts.md)
- [presentation/records](https://banes-lab.com/anatomy/tree/folder-presentation-records.md)
- [records.barrel.ts](https://banes-lab.com/source/tree/presentation/records/records.barrel.ts.md)
