# Reflection

> A mechanism that lets a program read and act on type metadata about its own structure at runtime.

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

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Metaprogramming](https://banes-lab.com/records/architecture/metaprogramming.md) and before [Introspection](https://banes-lab.com/records/architecture/introspection.md).

## Repair

- Refactored by: Replace with Explicit Interface/Metadata
- Detected by: reflective access to internals
- Violated by: reflection used to bypass contracts/visibility
- Measured by: unsafe reflection count
- Enforced by: lint/security rules

## Requires

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

## Reinforces

- [Introspection](https://banes-lab.com/records/architecture/introspection.md)
- [Runtime Discovery](https://banes-lab.com/records/architecture/runtime-discovery.md)

## Enables

- [Dynamic Binding](https://banes-lab.com/records/architecture/dynamic-binding.md)

## In tension with

- [Performance/Safety](https://banes-lab.com/records/lexicon/performance-safety.md)
- [Static Analysis](https://banes-lab.com/records/architecture/static-analysis.md)

## Tensions

- [Reflection / Performance/Safety](https://banes-lab.com/records/tension/performance-safety-reflection.md)
- [Reflection / Static Analysis](https://banes-lab.com/records/tension/reflection-static-analysis.md)

## Severity

- [contextual](https://banes-lab.com/records/vocabulary/severity-contextual.md)

## Category

- [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/records/architecture-category/metaprogramming-language-oriented-architecture.md)

## Concept

- [Reflection](https://banes-lab.com/records/reasoning/mode-reflection.md)

## Linked from

- [Runtime Discovery / Dynamic Binding](https://banes-lab.com/ontology/principles/architecture-category-runtime-discovery-dynamic-binding.md)
- [Correctness / Determinism / Verification](https://banes-lab.com/ontology/principles/architecture-category-correctness-determinism-verification.md)
- [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/principles/architecture-category-metaprogramming-language-oriented-architecture.md)
- [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
