# Plugin / Extensibility / IoC

> 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-plugin-extensibility-ioc

Listed in [Ontology · Lexicon](https://banes-lab.com/api/pages/ontology/lexicon.md), after [Operations Concerns](https://banes-lab.com/ontology/lexicon/lexicon-category-operations-concerns.md) and before [Portability / Infrastructure / Deployment](https://banes-lab.com/ontology/lexicon/lexicon-category-portability-infrastructure-deployment.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.

### API Surface Growth

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The degree to which adding extension points enlarges the public API that must be kept stable.

Referenced by
[Extension Points](https://banes-lab.com/records/architecture/extension-points.md)

How it is checked

Checked by
the tension resolution with extension-points

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 Core

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
A core that cannot be extended without modifying its own source, so every addition edits the core.

Referenced by
[Extension Points](https://banes-lab.com/records/architecture/extension-points.md)

How it is checked

Checked by
[Extension Points](https://banes-lab.com/records/architecture/extension-points.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

### Constructor Complexity

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The degree to which injecting many dependencies through constructors makes them long and unwieldy.

Referenced by
[Dependency Injection](https://banes-lab.com/records/architecture/dependency-injection.md)

How it is checked

Checked by
the tension resolution with dependency-injection

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

### Continuous Delivery

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The ability to release changes to production continuously through an automated pipeline.

Referenced by
[Feature Toggle](https://banes-lab.com/records/architecture/feature-toggle.md)

How it is checked

Checked by
[Feature Toggle](https://banes-lab.com/records/architecture/feature-toggle.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

### Decoupled Deploy and Release

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The ability to deploy code and separately decide when to activate it for users.

Referenced by
[Feature Toggle](https://banes-lab.com/records/architecture/feature-toggle.md)

Distinct from
[Gradual Rollout](https://banes-lab.com/records/lexicon/gradual-rollout.md): Decoupling deploy from release separates shipping code from switching it on, while gradual rollout switches it on for a growing share of users.

How it is checked

Checked by
[Feature Toggle](https://banes-lab.com/records/architecture/feature-toggle.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

### Direct Control Ownership

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
Application code driving the overall control flow itself instead of ceding it to a framework or container.

Referenced by
[Inversion of Control (IoC)](https://banes-lab.com/records/architecture/inversion-of-control.md)

How it is checked

Checked by
[Inversion of Control (IoC)](https://banes-lab.com/records/architecture/inversion-of-control.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

### Direct Reference

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
Referring to a specific implementation directly instead of looking it up through a registry.

Referenced by
[Registry Pattern](https://banes-lab.com/records/architecture/registry-pattern.md)

How it is checked

Checked by
[Registry Pattern](https://banes-lab.com/records/architecture/registry-pattern.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 Lookup

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The ability to find a registered component by key at runtime.

Referenced by
[Registry Pattern](https://banes-lab.com/records/architecture/registry-pattern.md)

How it is checked

Checked by
[Registry Pattern](https://banes-lab.com/records/architecture/registry-pattern.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 Resolution

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The ability to resolve a service's current location or instance at runtime.

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

How it is checked

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

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The degree to which a component's dependencies are visible in its signature rather than acquired through hidden lookups.

Referenced by
[Service Locator Pattern](https://banes-lab.com/records/architecture/service-locator-pattern.md)

How it is checked

Checked by
the tension resolution with service-locator-pattern

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

### Externalized Flag State

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The requirement that feature-flag values live in external configuration, not hardcoded in the code.

Referenced by
[Feature Toggle](https://banes-lab.com/records/architecture/feature-toggle.md)

How it is checked

Checked by
[Feature Toggle](https://banes-lab.com/records/architecture/feature-toggle.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

### Flag Debt

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The degree to which stale, unremoved feature flags accumulate and clutter the code over time.

Referenced by
[Feature Toggle](https://banes-lab.com/records/architecture/feature-toggle.md)

How it is checked

Checked by
the tension resolution with feature-toggle

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

### Framework Control Flow

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The ability to let a framework drive the overall control flow and call into application code.

Referenced by
[Inversion of Control (IoC)](https://banes-lab.com/records/architecture/inversion-of-control.md)

How it is checked

Checked by
[Inversion of Control (IoC)](https://banes-lab.com/records/architecture/inversion-of-control.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

### Global State

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The degree to which a global registry behaves as shared global state that any code can reach.

Referenced by
[Registry Pattern](https://banes-lab.com/records/architecture/registry-pattern.md)

How it is checked

Checked by
the tension resolution with registry-pattern

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

### Gradual Rollout

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The ability to enable a feature for a growing subset of users over time.

Referenced by
[Feature Toggle](https://banes-lab.com/records/architecture/feature-toggle.md)

How it is checked

Checked by
[Feature Toggle](https://banes-lab.com/records/architecture/feature-toggle.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 Branch Constant

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
Controlling a feature with a hardcoded constant in the code instead of an externally-managed flag.

Referenced by
[Feature Toggle](https://banes-lab.com/records/architecture/feature-toggle.md)

How it is checked

Checked by
[Feature Toggle](https://banes-lab.com/records/architecture/feature-toggle.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 Extensions

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
Wiring extensions directly into the core so adding one requires editing and rebuilding the core.

Referenced by
[Plugin Architecture](https://banes-lab.com/records/architecture/plugin-architecture.md)

How it is checked

Checked by
[Plugin Architecture](https://banes-lab.com/records/architecture/plugin-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

### Hardcoded Instantiation

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
Creating dependencies with hardcoded constructors inside a class instead of injecting them.

Referenced by
[Dependency Injection](https://banes-lab.com/records/architecture/dependency-injection.md)

Distinct from
[Ambient Context](https://banes-lab.com/records/architecture/ambient-context.md): Hardcoded instantiation constructs a dependency inside the class, while ambient context reads request or user state from an implicit global.

How it is checked

Checked by
[Dependency Injection](https://banes-lab.com/records/architecture/dependency-injection.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 Lookup

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
Hardcoding a service's address or instance instead of resolving it through a registry.

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

How it is checked

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

### Keyed Registration

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The requirement that each component register under a unique key by which it can be retrieved.

Referenced by
[Registry Pattern](https://banes-lab.com/records/architecture/registry-pattern.md)

How it is checked

Checked by
[Registry Pattern](https://banes-lab.com/records/architecture/registry-pattern.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

### Late Resolution

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The ability to defer resolving which implementation to use until the moment it is needed.

Referenced by
[Service Locator Pattern](https://banes-lab.com/records/architecture/service-locator-pattern.md)

How it is checked

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

### Mocking

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The ability to substitute test doubles for real dependencies by injecting them.

Referenced by
[Dependency Injection](https://banes-lab.com/records/architecture/dependency-injection.md)

How it is checked

Checked by
[Dependency Injection](https://banes-lab.com/records/architecture/dependency-injection.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

### Registration Protocol

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The requirement of a defined protocol by which services register and deregister themselves.

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

How it is checked

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

### Registry

- Kind: [mechanism](https://banes-lab.com/records/kind/mechanism.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
A central store that maps keys to registered components for later lookup.

Referenced by
[Service Locator Pattern](https://banes-lab.com/records/architecture/service-locator-pattern.md)

How it is checked

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

### Registry Availability

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The degree to which the whole system's operation depends on the service registry staying available.

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

How it is checked

Checked by
the tension resolution with service-registry

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 Lookup

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The ability to look up a needed service by name at runtime.

Referenced by
[Service Locator Pattern](https://banes-lab.com/records/architecture/service-locator-pattern.md)

How it is checked

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

### Third-Party Extension

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Plugin / Extensibility / IoC](https://banes-lab.com/ontology/lexicon/lexicon-category-plugin-extensibility-ioc.md)
- Layer: [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)

Details

Definition
The ability for outside developers to extend the system through published extension points.

Referenced by
[Extension Points](https://banes-lab.com/records/architecture/extension-points.md)

How it is checked

Checked by
[Extension Points](https://banes-lab.com/records/architecture/extension-points.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

- [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- [Extensibility Core](https://banes-lab.com/records/layer/extensibility-core.md)
- [Extension Points](https://banes-lab.com/records/architecture/extension-points.md)
- [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- [Dependency Injection](https://banes-lab.com/records/architecture/dependency-injection.md)
- [capability](https://banes-lab.com/records/kind/capability.md)
- [Feature Toggle](https://banes-lab.com/records/architecture/feature-toggle.md)
- [Gradual Rollout](https://banes-lab.com/records/lexicon/gradual-rollout.md)
- [Inversion of Control](https://banes-lab.com/records/architecture/inversion-of-control.md)
- [Registry Pattern](https://banes-lab.com/records/architecture/registry-pattern.md)
- [Service Registry](https://banes-lab.com/records/architecture/service-registry.md)
- [Service Locator Pattern](https://banes-lab.com/records/architecture/service-locator-pattern.md)
- [constraint](https://banes-lab.com/records/kind/constraint.md)
- [Plugin Architecture](https://banes-lab.com/records/architecture/plugin-architecture.md)
- [Ambient Context](https://banes-lab.com/records/architecture/ambient-context.md)
- [mechanism](https://banes-lab.com/records/kind/mechanism.md)
