# Metaprogramming / Language-Oriented Architecture

> Every term in this category is listed as one record, with its kind, its definition and its aliases, the principles whose relations name it, the principle or…

Page: Ontology · Lexicon
Canonical: https://banes-lab.com/ontology/lexicon#lexicon-category-metaprogramming-language-oriented-architecture

Listed in [Ontology · Lexicon](https://banes-lab.com/api/pages/ontology/lexicon.md), after [Metadata / Self-Description / Declarative Systems](https://banes-lab.com/ontology/lexicon/lexicon-category-metadata-self-description-declarative-systems.md) and before [Model Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-model-architecture.md).

Every term in this category is listed as one record, with its kind, its definition and its aliases, the principles whose relations name it, the principle or contract that carries the same name where one exists, and the layer its category belongs to. A tag category also gives each term an example, which is the file the tag places or the rename from a refused word onto a covering tag.

### AST or Data Representation

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The requirement that code be represented as a structured syntax tree or data rather than as raw text.

Referenced by
[Code as Data](https://banes-lab.com/records/architecture/code-as-data.md)

How it is checked

Checked by
[Code as Data](https://banes-lab.com/records/architecture/code-as-data.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Boilerplate Elimination

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The ability to remove repetitive boilerplate by generating it from a single declaration.

Referenced by
[Metaprogramming](https://banes-lab.com/records/architecture/metaprogramming.md)

How it is checked

Checked by
[Metaprogramming](https://banes-lab.com/records/architecture/metaprogramming.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Build Complexity

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The degree to which moving work into the build to run at compile time makes the build harder to set up and reason about.

Referenced by
[Compile-Time Evaluation](https://banes-lab.com/records/architecture/compile-time-evaluation.md)

How it is checked

Checked by
the tension resolution with compile-time-evaluation

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Code Generation or Interpreters

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The requirement that a domain language be backed by a generator or interpreter that executes it.

Referenced by
[Language-Oriented Programming](https://banes-lab.com/records/architecture/language-oriented-programming.md)

How it is checked

Checked by
[Language-Oriented Programming](https://banes-lab.com/records/architecture/language-oriented-programming.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Code-as-Data Representation

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The requirement that a program's code be representable in the same data structures the language manipulates.

Referenced by
[Homoiconicity](https://banes-lab.com/records/architecture/homoiconicity.md)

How it is checked

Checked by
[Homoiconicity](https://banes-lab.com/records/architecture/homoiconicity.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Compile-Time Inputs

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The requirement that the inputs a computation needs be known at compile time so it can run then.

Referenced by
[Compile-Time Evaluation](https://banes-lab.com/records/architecture/compile-time-evaluation.md)

How it is checked

Checked by
[Compile-Time Evaluation](https://banes-lab.com/records/architecture/compile-time-evaluation.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Diagnostics

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The ability to inspect a running system's own structure and state to diagnose it.

Referenced by
[Introspection](https://banes-lab.com/records/architecture/introspection.md)

How it is checked

Checked by
[Introspection](https://banes-lab.com/records/architecture/introspection.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Domain Expressiveness

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The ability to express domain rules directly in terms a domain expert recognizes.

Referenced by
[Domain-Specific Language (DSL)](https://banes-lab.com/records/architecture/domain-specific-language.md)

How it is checked

Checked by
[Domain-Specific Language (DSL)](https://banes-lab.com/records/architecture/domain-specific-language.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Domain Modeling

- Kind: [activity](https://banes-lab.com/records/kind/activity.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
Expressing a problem domain as a first-class language of its own concepts and rules.

Contract
[Domain Modeling](https://banes-lab.com/records/algorithms/domain-modeling.md)

Referenced by
[Language-Oriented Programming](https://banes-lab.com/records/architecture/language-oriented-programming.md)

How it is checked

Checked by
[Language-Oriented Programming](https://banes-lab.com/records/architecture/language-oriented-programming.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Dynamic Optimization/Adaptation

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The ability to generate specialized code at runtime to optimize or adapt to observed conditions.

Referenced by
[Runtime Code Generation](https://banes-lab.com/records/architecture/runtime-code-generation.md)

How it is checked

Checked by
[Runtime Code Generation](https://banes-lab.com/records/architecture/runtime-code-generation.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Early Error Detection

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The ability to catch errors at compile time rather than letting them surface at runtime.

Referenced by
[Compile-Time Evaluation](https://banes-lab.com/records/architecture/compile-time-evaluation.md)

How it is checked

Checked by
[Compile-Time Evaluation](https://banes-lab.com/records/architecture/compile-time-evaluation.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Explicit Handwritten Code

- Kind: [approach](https://banes-lab.com/records/kind/approach.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
Writing code out by hand explicitly rather than generating it, favoring directness and debuggability over reuse.

Referenced by
[Metaprogramming](https://banes-lab.com/records/architecture/metaprogramming.md)

How it is checked

Checked by
the tension resolution with metaprogramming

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Formal Grammar/Semantics

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The requirement that a domain language have a defined grammar and semantics rather than an ad-hoc syntax.

Referenced by
[Domain-Specific Language (DSL)](https://banes-lab.com/records/architecture/domain-specific-language.md)

How it is checked

Checked by
[Domain-Specific Language (DSL)](https://banes-lab.com/records/architecture/domain-specific-language.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Formal Model

- Kind: [model](https://banes-lab.com/records/kind/model.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
A precise, machine-processable model of a system from which implementations are generated.

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

How it is checked

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

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### General-Purpose Boilerplate

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
Expressing domain logic through verbose general-purpose code and its boilerplate instead of a concise domain notation.

Referenced by
[Domain-Specific Language (DSL)](https://banes-lab.com/records/architecture/domain-specific-language.md)

How it is checked

Checked by
[Domain-Specific Language (DSL)](https://banes-lab.com/records/architecture/domain-specific-language.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Generated Implementations

- Kind: [artifact](https://banes-lab.com/records/kind/artifact.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
Implementation code produced automatically from a model rather than written by hand.

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

How it is checked

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

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Handwritten Divergence

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
Hand-editing generated code so it drifts from the model it came from, breaking regeneration.

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

How it is checked

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

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### High-Level Domain Expression

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The ability to express solutions in high-level domain terms rather than low-level general-purpose code.

Referenced by
[Language-Oriented Programming](https://banes-lab.com/records/architecture/language-oriented-programming.md)

How it is checked

Checked by
[Language-Oriented Programming](https://banes-lab.com/records/architecture/language-oriented-programming.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Macro Systems

- Kind: [mechanism](https://banes-lab.com/records/kind/mechanism.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
A facility that lets code transform other code at compile time by operating on its data representation.

Referenced by
[Homoiconicity](https://banes-lab.com/records/architecture/homoiconicity.md)

How it is checked

Checked by
[Homoiconicity](https://banes-lab.com/records/architecture/homoiconicity.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### One-Size General-Purpose Code

- Kind: [approach](https://banes-lab.com/records/kind/approach.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
Expressing every domain in a single general-purpose language, rather than in domain-specific notations.

Referenced by
[Language-Oriented Programming](https://banes-lab.com/records/architecture/language-oriented-programming.md)

How it is checked

Checked by
the tension resolution with language-oriented-programming

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Opaque Syntax Trees

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
Syntax trees a program cannot inspect or manipulate as data, so code cannot be transformed programmatically.

Referenced by
[Homoiconicity](https://banes-lab.com/records/architecture/homoiconicity.md)

How it is checked

Checked by
[Homoiconicity](https://banes-lab.com/records/architecture/homoiconicity.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Performance/Safety

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The degree to which inspecting and dispatching on types at runtime costs performance and bypasses static safety.

Referenced by
[Reflection](https://banes-lab.com/records/architecture/reflection.md)

How it is checked

Checked by
the tension resolution with reflection

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Program Transformation

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The ability to analyze and rewrite a program by manipulating its structured representation.

Referenced by
[Code as Data](https://banes-lab.com/records/architecture/code-as-data.md)

How it is checked

Checked by
[Code as Data](https://banes-lab.com/records/architecture/code-as-data.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Reflection/AST/Code Generation

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The requirement that a language expose reflection, syntax trees, or code generation for programs to manipulate themselves.

Referenced by
[Metaprogramming](https://banes-lab.com/records/architecture/metaprogramming.md)

How it is checked

Checked by
[Metaprogramming](https://banes-lab.com/records/architecture/metaprogramming.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Runtime Dynamic Evaluation

- Kind: [technique](https://banes-lab.com/records/kind/technique.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
Evaluating code or expressions dynamically at runtime, trading compile-time checking for runtime flexibility.

Referenced by
[Compile-Time Evaluation](https://banes-lab.com/records/architecture/compile-time-evaluation.md)

How it is checked

Checked by
the tension resolution with compile-time-evaluation

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Runtime Type Metadata

- Kind: [artifact](https://banes-lab.com/records/kind/artifact.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
Type information retained at runtime so a program can inspect the shape of its own values.

Referenced by
[Reflection](https://banes-lab.com/records/architecture/reflection.md)

How it is checked

Checked by
[Reflection](https://banes-lab.com/records/architecture/reflection.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Safe Generation Boundary

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The requirement that runtime code generation be confined to a safe, sandboxed boundary away from untrusted input.

Referenced by
[Runtime Code Generation](https://banes-lab.com/records/architecture/runtime-code-generation.md)

How it is checked

Checked by
[Runtime Code Generation](https://banes-lab.com/records/architecture/runtime-code-generation.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Safety/Debuggability

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The degree to which treating code as manipulable data can obscure what runs and make it harder to debug.

Referenced by
[Code as Data](https://banes-lab.com/records/architecture/code-as-data.md)

How it is checked

Checked by
the tension resolution with code-as-data

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Security/Debugging

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The degree to which generating and running code at runtime widens the attack surface and complicates debugging.

Referenced by
[Runtime Code Generation](https://banes-lab.com/records/architecture/runtime-code-generation.md)

How it is checked

Checked by
the tension resolution with runtime-code-generation

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Self-Describing Systems

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The degree to which a system carries enough metadata to describe its own structure and capabilities at runtime.

Referenced by
[Introspection](https://banes-lab.com/records/architecture/introspection.md)

How it is checked

Checked by
[Introspection](https://banes-lab.com/records/architecture/introspection.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### String-Based Code Generation

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
Building code by concatenating strings, so the result is unchecked, injection-prone, and hard to analyze.

Referenced by
[Code as Data](https://banes-lab.com/records/architecture/code-as-data.md)

How it is checked

Checked by
[Code as Data](https://banes-lab.com/records/architecture/code-as-data.md)

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Toolchain Complexity

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The degree to which building custom languages adds compilers, parsers, and editors to a project's toolchain.

Referenced by
[Language-Oriented Programming](https://banes-lab.com/records/architecture/language-oriented-programming.md)

How it is checked

Checked by
the tension resolution with language-oriented-programming

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Tooling/Maintenance

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The degree to which owning a custom language burdens a team with building and maintaining its tooling.

Referenced by
[Domain-Specific Language (DSL)](https://banes-lab.com/records/architecture/domain-specific-language.md)

How it is checked

Checked by
the tension resolution with domain-specific-language

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

### Transformation Rules

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Metaprogramming / Language-Oriented Architecture](https://banes-lab.com/ontology/lexicon/lexicon-category-metaprogramming-language-oriented-architecture.md)
- Layer: [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)

Details

Definition
The requirement that explicit rules define how a model maps to generated implementation code.

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

How it is checked

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

Population
The term's definition and every architecture edge that names the term

Freshness
A verdict stands until the definition, the term's kind or an edge that names it changes

Refusal
The resolution gate fails an edge that resolves to no term, and a definition that opens as another kind

Observation
The resolution validator's pass over every edge target and every definition opening

Evidence
Watched to fire and to accept: a suite plants a term no edge names, a dangling dependency and a second check home, and the bundled terms pass

Authoritative side
The term record, which every edge that names the term cites

Depends on
Not answered

Shape it refuses
Not answered

## Links to

- [constraint](https://banes-lab.com/records/kind/constraint.md)
- [Declarative Core](https://banes-lab.com/records/layer/declarative-core.md)
- [Code as Data](https://banes-lab.com/records/architecture/code-as-data.md)
- [capability](https://banes-lab.com/records/kind/capability.md)
- [Metaprogramming](https://banes-lab.com/records/architecture/metaprogramming.md)
- [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- [Compile-Time Evaluation](https://banes-lab.com/records/architecture/compile-time-evaluation.md)
- [Language-Oriented Programming](https://banes-lab.com/records/architecture/language-oriented-programming.md)
- [Homoiconicity](https://banes-lab.com/records/architecture/homoiconicity.md)
- [Introspection](https://banes-lab.com/records/architecture/introspection.md)
- [Domain-Specific Language](https://banes-lab.com/records/architecture/domain-specific-language.md)
- [activity](https://banes-lab.com/records/kind/activity.md)
- [Domain Modeling](https://banes-lab.com/records/algorithms/domain-modeling.md)
- [Runtime Code Generation](https://banes-lab.com/records/architecture/runtime-code-generation.md)
- [approach](https://banes-lab.com/records/kind/approach.md)
- [model](https://banes-lab.com/records/kind/model.md)
- [Model-Driven Architecture](https://banes-lab.com/records/architecture/model-driven-architecture.md)
- [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- [artifact](https://banes-lab.com/records/kind/artifact.md)
- [mechanism](https://banes-lab.com/records/kind/mechanism.md)
- [Reflection](https://banes-lab.com/records/architecture/reflection.md)
- [technique](https://banes-lab.com/records/kind/technique.md)
