# Compile-Time Evaluation

> A mechanism that computes values, checks or generated code during the build, so the work and its errors happen before runtime.

Record: `architecture:compile-time-evaluation`
Kind: mechanism
Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)
Severity: contextual
Scope: compiler, build
Canonical: https://banes-lab.com/ontology#architecture-compile-time-evaluation

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Introspection](https://banes-lab.com/records/architecture/introspection.md) and before [Runtime Code Generation](https://banes-lab.com/records/architecture/runtime-code-generation.md).

## Repair

- Refactored by: Move Check/Generation to Compile Time
- Detected by: repeated runtime reflection/validation
- Violated by: runtime work that could be validated/generated at compile time
- Measured by: compile-time coverage
- Enforced by: compiler plugins/build checks

## Requires

- [Compile-Time Inputs](https://banes-lab.com/records/lexicon/compile-time-inputs.md)

## Reinforces

- [Optimization](https://banes-lab.com/records/architecture/optimization.md)
- [Type Safety](https://banes-lab.com/records/architecture/type-safety.md)

## Enables

- [Early Error Detection](https://banes-lab.com/records/lexicon/early-error-detection.md)

## In tension with

- [Build Complexity](https://banes-lab.com/records/lexicon/build-complexity.md)
- [Runtime Dynamic Evaluation](https://banes-lab.com/records/lexicon/runtime-dynamic-evaluation.md)

## Tensions

- [Compile-Time Evaluation / Build Complexity](https://banes-lab.com/records/tension/build-complexity-compile-time-evaluation.md)
- [Compile-Time Evaluation / Runtime Dynamic Evaluation](https://banes-lab.com/records/tension/compile-time-evaluation-runtime-dynamic-evaluation.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)

## Linked from

- [Scalability / Performance / Optimization](https://banes-lab.com/ontology/principles/architecture-category-scalability-performance-optimization.md)
- [Schema / Canonical Data / Semantics](https://banes-lab.com/ontology/principles/architecture-category-schema-canonical-data-semantics.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)
