# Core Modular Design

> 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-core-modular-design

Listed in [Ontology · Lexicon](https://banes-lab.com/api/pages/ontology/lexicon.md), after [Coordination Surfaces](https://banes-lab.com/ontology/lexicon/lexicon-category-coordination-surfaces.md) and before [Core Vocabulary](https://banes-lab.com/ontology/lexicon/lexicon-category-core-vocabulary.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.

### Bounded Context Ownership

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The ability for a team or module to own and control one bounded part of the system.

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

How it is checked

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

### Canonical Source

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The requirement that each piece of knowledge have one authoritative definition rather than copies.

Referenced by
[Do Not Repeat Yourself (DRY)](https://banes-lab.com/records/architecture/duplicate-code.md)

How it is checked

Checked by
[Do Not Repeat Yourself (DRY)](https://banes-lab.com/records/architecture/duplicate-code.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

### Centralized Runtime Control

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Concentrating runtime control in one place so otherwise-independent modules cannot act without it.

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

Distinct from
[Cyclic Deployment Dependency](https://banes-lab.com/records/architecture/cyclic-deployment-dependency.md): Centralized runtime control makes modules unable to act without one controller, while a cyclic deployment dependency makes services deploy in lockstep.

Distinct from
[Shared Database](https://banes-lab.com/records/lexicon/shared-database.md): Centralized runtime control concentrates control flow, while a shared database concentrates data.

How it is checked

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

### Change Isolation

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The ability to confine the impact of a change behind a boundary so callers are unaffected.

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

Distinct from
[Invariant Protection](https://banes-lab.com/records/lexicon/invariant-protection.md): Change isolation keeps a change from reaching callers, while invariant protection keeps an object's rules holding.

How it is checked

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

### Context-Specific Coupling

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Baking one caller's specific assumptions into a component, preventing its reuse elsewhere.

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

How it is checked

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

### Contract Compatibility

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The requirement that every alternative implementation fully honor the same interface contract.

Aliases
Interface Conformance

Contract
[Contract Compatibility](https://banes-lab.com/records/algorithms/contract-compatibility.md)

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

How it is checked

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

### Coordination Cost

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The degree of extra coordination required when components are made fully independent.

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

How it is checked

Checked by
the tension resolution with independence

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

### Copy-Paste Programming

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Duplicating code by copying and pasting instead of extracting a shared abstraction.

Referenced by
[Do Not Repeat Yourself (DRY)](https://banes-lab.com/records/architecture/duplicate-code.md)

How it is checked

Checked by
[Do Not Repeat Yourself (DRY)](https://banes-lab.com/records/architecture/duplicate-code.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

### Cross-Cutting Leakage

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Letting a concern such as logging or security bleed into unrelated modules throughout the code.

Referenced by
[Separation of Concerns](https://banes-lab.com/records/architecture/separation-of-concerns.md)

Distinct from
[Mixed Layers](https://banes-lab.com/records/lexicon/mixed-layers.md): Cross-cutting leakage spreads one concern such as logging through many modules, while mixed layers put several layers' logic in one place.

How it is checked

Checked by
[Separation of Concerns](https://banes-lab.com/records/architecture/separation-of-concerns.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

### Deep Inheritance Hierarchy

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Stacking many layers of subclassing, so behavior is scattered and fragile to change.

Referenced by
[Composition Over Inheritance](https://banes-lab.com/records/architecture/composition-over-inheritance.md)

How it is checked

Checked by
[Composition Over Inheritance](https://banes-lab.com/records/architecture/composition-over-inheritance.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

### Deep Optimization

- Kind: [activity](https://banes-lab.com/records/kind/activity.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The practice of optimizing heavily against a specific implementation's traits, which ties code to it.

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

How it is checked

Checked by
the tension resolution with replaceability

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

### Delegation

- Kind: [technique](https://banes-lab.com/records/kind/technique.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Forwarding work to a contained collaborator object rather than inheriting the behavior.

Referenced by
[Composition Over Inheritance](https://banes-lab.com/records/architecture/composition-over-inheritance.md)

How it is checked

Checked by
[Composition Over Inheritance](https://banes-lab.com/records/architecture/composition-over-inheritance.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

### Excessive Fragmentation

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The degree to which splitting responsibilities too finely scatters logic across many small units.

Referenced by
[Single Responsibility Principle (SRP)](https://banes-lab.com/records/architecture/single-responsibility.md)

How it is checked

Checked by
the tension resolution with single-responsibility

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 Interfaces

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The requirement that a module interact only through declared interfaces, not its hidden internals.

Referenced by
[Information Hiding](https://banes-lab.com/records/architecture/information-hiding.md)

How it is checked

Checked by
[Information Hiding](https://banes-lab.com/records/architecture/information-hiding.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

### Exposed Internals

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Making a module's internal fields and workings reachable from outside, whether public outright or through trivial getters and setters, so callers depend on details that should be hidden and its invariants go unprotected.

Aliases
Anemic Encapsulation

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

Distinct from
[Feature Envy](https://banes-lab.com/records/architecture/feature-envy.md): Exposed internals are a module opening its own details, while feature envy is a module working mostly on another's data.

How it is checked

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

### Implementation-Specific Contracts

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Defining an interface around one implementation's quirks, so no alternative can satisfy it.

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

How it is checked

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

### Independent Testing

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The ability to test a component in isolation without standing up its collaborators.

Aliases
Test Isolation

Referenced by
[Low Coupling](https://banes-lab.com/records/architecture/low-coupling.md), [Independence](https://banes-lab.com/records/architecture/independence.md)

How it is checked

Checked by
[Low Coupling](https://banes-lab.com/records/architecture/low-coupling.md), [Independence](https://banes-lab.com/records/architecture/independence.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

### Interface Definition

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The requirement that an abstraction expose a defined interface separate from its implementation.

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

How it is checked

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

### Internal Refactoring

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The ability to rework a module's internals freely as long as its interface stays stable.

Referenced by
[Information Hiding](https://banes-lab.com/records/architecture/information-hiding.md)

How it is checked

Checked by
[Information Hiding](https://banes-lab.com/records/architecture/information-hiding.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

### Invariant Protection

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The ability to guarantee an object's rules always hold by controlling all access to its state.

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

How it is checked

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

### Leaky Abstraction

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
An abstraction that forces callers to understand its underlying implementation to use it correctly.

Referenced by
[Information Hiding](https://banes-lab.com/records/architecture/information-hiding.md)

How it is checked

Checked by
[Information Hiding](https://banes-lab.com/records/architecture/information-hiding.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

### Locality of Behavior

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The degree to which keeping related behavior together can conflict with removing all duplication.

Referenced by
[Do Not Repeat Yourself (DRY)](https://banes-lab.com/records/architecture/duplicate-code.md)

How it is checked

Checked by
the tension resolution with duplicate-code

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

### Mixed Layers

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Interleaving different architectural layers' logic in one place instead of keeping each concern separate.

Referenced by
[Separation of Concerns](https://banes-lab.com/records/architecture/separation-of-concerns.md)

How it is checked

Checked by
[Separation of Concerns](https://banes-lab.com/records/architecture/separation-of-concerns.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

### Monolithic Procedures

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Writing large all-in-one procedures that cannot be recombined from smaller, independent parts.

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

How it is checked

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

### Over-Generalization

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The degree to which making code reusable for every case adds abstraction that harms clarity.

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

How it is checked

Checked by
the tension resolution with reusability

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

### Over-Layering

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The degree to which adding separating layers introduces indirection that outweighs the separation gained.

Referenced by
[Separation of Concerns](https://banes-lab.com/records/architecture/separation-of-concerns.md)

How it is checked

Checked by
the tension resolution with separation-of-concerns

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

### Over-Specialization

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The degree to which pursuing tight cohesion can narrow a unit's purpose too far to reuse.

Referenced by
[High Cohesion](https://banes-lab.com/records/architecture/high-cohesion.md)

How it is checked

Checked by
the tension resolution with high-cohesion

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 Overhead

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The degree of runtime cost added by composing behavior from many small, indirected parts.

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

How it is checked

Checked by
the tension resolution with composability

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

### Product Lines

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The ability to build a family of related products from shared, reusable components.

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

How it is checked

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

### Shared Libraries

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The ability to factor common functionality into libraries reused across projects.

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

Distinct from
[Product Lines](https://banes-lab.com/records/lexicon/product-lines.md): Shared libraries reuse common functionality across projects, while product lines build a family of related products from shared components.

How it is checked

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

### Shared Runtime Dependency

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Coupling supposedly-independent modules through a shared runtime component they all depend on.

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

How it is checked

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

### Simplicity for Trivial Reuse

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The degree to which composition adds wiring that inheritance would make simpler for trivial reuse.

Referenced by
[Composition Over Inheritance](https://banes-lab.com/records/architecture/composition-over-inheritance.md)

How it is checked

Checked by
the tension resolution with composition-over-inheritance

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

### Specialized Optimization

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The degree to which optimizing for one implementation undermines the ability to swap implementations.

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

How it is checked

Checked by
the tension resolution with interchangeability

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

### Stable Semantics

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The requirement that an abstraction's meaning stay consistent even as its implementations change.

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

Distinct from
[Interface Definition](https://banes-lab.com/records/lexicon/interface-definition.md): Stable semantics keeps an abstraction's meaning while implementations change, while an interface definition gives it a declared surface apart from its implementation.

How it is checked

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

### Strategy Swap

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The ability to replace one interchangeable algorithm or implementation, such as a plugin at a declared seam, with another without modifying its host.

Aliases
Plugin Swap

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

Distinct from
[Deferred Implementation Choice](https://banes-lab.com/records/lexicon/deferred-implementation-choice.md): A strategy swap replaces one implementation with another, while deferred implementation choice postpones picking one until runtime.

How it is checked

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

### Tight Coupling

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
Binding components so closely that a change in one forces changes in the others.

Referenced by
[Low Coupling](https://banes-lab.com/records/architecture/low-coupling.md)

Distinct from
[Circular Dependency](https://banes-lab.com/records/architecture/circular-dependency.md): Tight coupling is any binding that forces changes together, while a circular dependency is the particular case of a cycle.

Distinct from
[Inappropriate Intimacy](https://banes-lab.com/records/architecture/inappropriate-intimacy.md): Tight coupling is any binding that forces changes together, while inappropriate intimacy is the case of depending on another module's internals.

Distinct from
[Message Chain](https://banes-lab.com/records/architecture/message-chain.md): Tight coupling is any binding that forces changes together, while a message chain is the case of a client walking a chain of objects.

How it is checked

Checked by
[Low Coupling](https://banes-lab.com/records/architecture/low-coupling.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

### Vendor Swap

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
The ability to replace one vendor's implementation with another behind a stable interface.

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

How it is checked

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

### YAGNI

- Kind: [principle](https://banes-lab.com/records/kind/principle.md)
- Category: [Core Modular Design](https://banes-lab.com/ontology/lexicon/lexicon-category-core-modular-design.md)
- Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)

Details

Definition
You Aren't Gonna Need It: build only what current requirements demand and defer speculative generality.

Aliases
You Aren't Gonna Need It

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

How it is checked

Checked by
the tension resolution with reusability

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)
- [Structural Core](https://banes-lab.com/records/layer/structural-core.md)
- [Autonomy](https://banes-lab.com/records/architecture/autonomy.md)
- [constraint](https://banes-lab.com/records/kind/constraint.md)
- [Do Not Repeat Yourself](https://banes-lab.com/records/architecture/duplicate-code.md)
- [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- [Cyclic Deployment Dependency](https://banes-lab.com/records/architecture/cyclic-deployment-dependency.md)
- [Shared Database](https://banes-lab.com/records/lexicon/shared-database.md)
- [Encapsulation](https://banes-lab.com/records/architecture/encapsulation.md)
- [Invariant Protection](https://banes-lab.com/records/lexicon/invariant-protection.md)
- [Reusability](https://banes-lab.com/records/architecture/reusability.md)
- [Contract Compatibility](https://banes-lab.com/records/algorithms/contract-compatibility.md)
- [Interchangeability](https://banes-lab.com/records/architecture/interchangeability.md)
- [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- [Independence](https://banes-lab.com/records/architecture/independence.md)
- [Separation of Concerns](https://banes-lab.com/records/architecture/separation-of-concerns.md)
- [Mixed Layers](https://banes-lab.com/records/lexicon/mixed-layers.md)
- [Composition Over Inheritance](https://banes-lab.com/records/architecture/composition-over-inheritance.md)
- [activity](https://banes-lab.com/records/kind/activity.md)
- [Replaceability](https://banes-lab.com/records/architecture/replaceability.md)
- [technique](https://banes-lab.com/records/kind/technique.md)
- [Single Responsibility Principle](https://banes-lab.com/records/architecture/single-responsibility.md)
- [Information Hiding](https://banes-lab.com/records/architecture/information-hiding.md)
- [Feature Envy](https://banes-lab.com/records/architecture/feature-envy.md)
- [Low Coupling](https://banes-lab.com/records/architecture/low-coupling.md)
- [Abstraction](https://banes-lab.com/records/architecture/abstraction.md)
- [Composability](https://banes-lab.com/records/architecture/composability.md)
- [High Cohesion](https://banes-lab.com/records/architecture/high-cohesion.md)
- [Product Lines](https://banes-lab.com/records/lexicon/product-lines.md)
- [Interface Definition](https://banes-lab.com/records/lexicon/interface-definition.md)
- [Dynamic Binding](https://banes-lab.com/records/architecture/dynamic-binding.md)
- [Deferred Implementation Choice](https://banes-lab.com/records/lexicon/deferred-implementation-choice.md)
- [Circular Dependency](https://banes-lab.com/records/architecture/circular-dependency.md)
- [Inappropriate Intimacy](https://banes-lab.com/records/architecture/inappropriate-intimacy.md)
- [Message Chain](https://banes-lab.com/records/architecture/message-chain.md)
- [principle](https://banes-lab.com/records/kind/principle.md)
