# Runtime Discovery / Dynamic Binding

> 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-runtime-discovery-dynamic-binding

Listed in [Ontology · Lexicon](https://banes-lab.com/api/pages/ontology/lexicon.md), after [Runtime Concerns](https://banes-lab.com/ontology/lexicon/lexicon-category-runtime-concerns.md) and before [Scalability / Performance / Optimization](https://banes-lab.com/ontology/lexicon/lexicon-category-scalability-performance-optimization.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.

### Capability Addition without Core Modification

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Runtime Discovery / Dynamic Binding](https://banes-lab.com/ontology/lexicon/lexicon-category-runtime-discovery-dynamic-binding.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The ability to add new capabilities at runtime without modifying the core.

Referenced by
[Runtime Extensibility](https://banes-lab.com/records/architecture/runtime-extensibility.md)

How it is checked

Checked by
[Runtime Extensibility](https://banes-lab.com/records/architecture/runtime-extensibility.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

### Closed Static Core

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Runtime Discovery / Dynamic Binding](https://banes-lab.com/ontology/lexicon/lexicon-category-runtime-discovery-dynamic-binding.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
A core fixed at build time that cannot accept new capabilities without being recompiled.

Referenced by
[Runtime Extensibility](https://banes-lab.com/records/architecture/runtime-extensibility.md)

How it is checked

Checked by
[Runtime Extensibility](https://banes-lab.com/records/architecture/runtime-extensibility.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 Binding

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Runtime Discovery / Dynamic Binding](https://banes-lab.com/ontology/lexicon/lexicon-category-runtime-discovery-dynamic-binding.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
Fixing at build time which implementation a call uses or how components are wired together, so neither can vary or be discovered at runtime.

Aliases
Early Binding, Static Wiring, Static Linking

Referenced by
[Runtime Discovery](https://banes-lab.com/records/architecture/runtime-discovery.md), [Dynamic Binding](https://banes-lab.com/records/architecture/dynamic-binding.md)

Distinct from
[Manual Registration](https://banes-lab.com/records/lexicon/manual-registration.md): Compile-time binding fixes the choice in the build, while manual registration lists each component by hand at runtime.

How it is checked

Checked by
[Runtime Discovery](https://banes-lab.com/records/architecture/runtime-discovery.md), [Dynamic Binding](https://banes-lab.com/records/architecture/dynamic-binding.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

### Conventions

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Runtime Discovery / Dynamic Binding](https://banes-lab.com/ontology/lexicon/lexicon-category-runtime-discovery-dynamic-binding.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The requirement that components follow shared naming or placement conventions so they can be found automatically.

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

How it is checked

Checked by
[Runtime Discovery](https://banes-lab.com/records/architecture/runtime-discovery.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

### Deferred Implementation Choice

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Runtime Discovery / Dynamic Binding](https://banes-lab.com/ontology/lexicon/lexicon-category-runtime-discovery-dynamic-binding.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The ability to postpone choosing a concrete implementation until runtime, so each environment can assemble its own.

Aliases
Environment-Specific Composition

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

How it is checked

Checked by
[Dynamic Binding](https://banes-lab.com/records/architecture/dynamic-binding.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 Routing

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Runtime Discovery / Dynamic Binding](https://banes-lab.com/ontology/lexicon/lexicon-category-runtime-discovery-dynamic-binding.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The ability to route requests to service instances discovered at runtime.

Referenced by
[Service Discovery](https://banes-lab.com/records/architecture/service-discovery.md)

How it is checked

Checked by
[Service Discovery](https://banes-lab.com/records/architecture/service-discovery.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

### Extensibility

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Runtime Discovery / Dynamic Binding](https://banes-lab.com/ontology/lexicon/lexicon-category-runtime-discovery-dynamic-binding.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The degree to which new behavior can be added with minimal change to existing code.

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

How it is checked

Checked by
[Dynamic Binding](https://banes-lab.com/records/architecture/dynamic-binding.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

### Hardcoded Endpoints

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Runtime Discovery / Dynamic Binding](https://banes-lab.com/ontology/lexicon/lexicon-category-runtime-discovery-dynamic-binding.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
Hardcoding service network addresses instead of discovering them dynamically.

Referenced by
[Service Discovery](https://banes-lab.com/records/architecture/service-discovery.md)

How it is checked

Checked by
[Service Discovery](https://banes-lab.com/records/architecture/service-discovery.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

### Manual Registration

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Runtime Discovery / Dynamic Binding](https://banes-lab.com/ontology/lexicon/lexicon-category-runtime-discovery-dynamic-binding.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
Requiring each component to be registered by hand instead of being discovered automatically.

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

How it is checked

Checked by
[Runtime Discovery](https://banes-lab.com/records/architecture/runtime-discovery.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

### Replace Conditional with Polymorphism

- Kind: [technique](https://banes-lab.com/records/kind/technique.md)
- Category: [Runtime Discovery / Dynamic Binding](https://banes-lab.com/ontology/lexicon/lexicon-category-runtime-discovery-dynamic-binding.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
Replacing a branching conditional on type with polymorphic dispatch through a shared interface.

Referenced by
[Dynamic Dispatch](https://banes-lab.com/records/architecture/dynamic-dispatch.md)

How it is checked

Checked by
[Dynamic Dispatch](https://banes-lab.com/records/architecture/dynamic-dispatch.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 Resolution

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Runtime Discovery / Dynamic Binding](https://banes-lab.com/ontology/lexicon/lexicon-category-runtime-discovery-dynamic-binding.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The requirement that a symbol's concrete binding be resolved, by discovery or from configuration, during execution rather than at compile time.

Aliases
Runtime Discovery or Configuration

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

How it is checked

Checked by
[Dynamic Binding](https://banes-lab.com/records/architecture/dynamic-binding.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

### Self-Registration

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Runtime Discovery / Dynamic Binding](https://banes-lab.com/ontology/lexicon/lexicon-category-runtime-discovery-dynamic-binding.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The ability for a component to register itself on load without external wiring.

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

How it is checked

Checked by
[Runtime Discovery](https://banes-lab.com/records/architecture/runtime-discovery.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

### Startup Cost

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Runtime Discovery / Dynamic Binding](https://banes-lab.com/ontology/lexicon/lexicon-category-runtime-discovery-dynamic-binding.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The degree to which scanning for components at startup slows the system's initialization.

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

How it is checked

Checked by
the tension resolution with runtime-discovery

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

- [capability](https://banes-lab.com/records/kind/capability.md)
- [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)
- [Runtime Extensibility](https://banes-lab.com/records/architecture/runtime-extensibility.md)
- [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- [Runtime Discovery](https://banes-lab.com/records/architecture/runtime-discovery.md)
- [Dynamic Binding](https://banes-lab.com/records/architecture/dynamic-binding.md)
- [Manual Registration](https://banes-lab.com/records/lexicon/manual-registration.md)
- [constraint](https://banes-lab.com/records/kind/constraint.md)
- [Service Discovery](https://banes-lab.com/records/architecture/service-discovery.md)
- [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- [technique](https://banes-lab.com/records/kind/technique.md)
- [Dynamic Dispatch](https://banes-lab.com/records/architecture/dynamic-dispatch.md)
