# Metadata-Driven Design

Record: `arch:metadata-driven-design`
Kind: approach
Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)
Severity: contextual
Scope: runtime, configuration, framework
Canonical: https://banes-lab.com/ontology#arch-metadata-driven-design

## Repair

- Refactored by: Extract Metadata, Add Schema, Validate Config
- Detected by: metadata/config drift
- Violated by: unvalidated metadata, hidden magic
- Measured by: metadata coverage, config error rate
- Enforced by: metadata schema tests

## requires

- [Metadata Schema](https://banes-lab.com/records/lex/metadata-schema.md)
- [Validation](https://banes-lab.com/records/arch/validation.md)

## reinforces

- [Declarative Configuration](https://banes-lab.com/records/arch/declarative-configuration.md)
- [Runtime Discovery](https://banes-lab.com/records/arch/runtime-discovery.md)

## enables

- [Code Generation](https://banes-lab.com/records/lex/code-generation.md)
- [Plugins](https://banes-lab.com/records/lex/plugins.md)

## conflicts-with

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

## tensions-with

- [Debuggability](https://banes-lab.com/records/lex/debuggability.md)

## tensions

- [Metadata-Driven Design Debuggability](https://banes-lab.com/records/tension/debuggability-metadata-driven-design.md)

## referenced-by

- [Model-Driven Architecture](https://banes-lab.com/records/arch/model-driven-architecture.md)
