# Introspection

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

## Repair

- Refactored by: Add Public Metadata API
- Detected by: introspection of private internals
- Violated by: relying on undocumented internal structure
- Measured by: introspection usage risk
- Enforced by: API boundaries

## requires

- [Type Metadata](https://banes-lab.com/records/lex/type-metadata.md)

## reinforces

- [Self-Describing Systems](https://banes-lab.com/records/lex/self-describing-systems.md)

## enables

- [Discovery](https://banes-lab.com/records/lex/discovery.md)
- [Diagnostics](https://banes-lab.com/records/lex/diagnostics.md)

## conflicts-with

- [Opaque Runtime](https://banes-lab.com/records/lex/opaque-runtime.md)
- [Opaque Runtime Behavior](https://banes-lab.com/records/arch/opaque-runtime-behavior.md)

## tensions-with

- [Encapsulation](https://banes-lab.com/records/arch/encapsulation.md)

## tensions

- [Introspection Encapsulation](https://banes-lab.com/records/tension/encapsulation-introspection.md)

## referenced-by

- [Self-Describing Structures](https://banes-lab.com/records/arch/self-describing-structures.md)
- [Reflection](https://banes-lab.com/records/arch/reflection.md)
