# Architecture Review / Evolution / Governance Artifacts

> Every principle in this category is listed as a record.

Page: Ontology · Principles
Canonical: https://banes-lab.com/ontology#arch-category-architecture-review-evolution-governance-artifacts

Every principle in this category is listed as a record. Each record carries its kind, its severity, the scopes it applies at and the layer it lives in, then the edge relations that join it to other records, the records that point back at it, the contracts that answer to it and the tensions it takes part in. The descriptors say how it is violated, detected, measured, repaired and enforced. Where the record carries one, an exemplar shows the shape before and after the principle is applied.

Relations diagram

The relations inside this category.

```mermaid
flowchart LR
n_assessment["Assessment"]
n_architecture_review["Architecture Review"]
n_design_review["Design Review"]
n_code_review["Code Review"]
n_impact_analysis["Impact Analysis"]
n_gap_analysis["Gap Analysis"]
n_fitness_functions["Fitness Functions"]
n_quality_attributes["Quality Attributes"]
n_architecture_decision_records["Architecture Decision Records (ADR)"]
n_evolutionary_architecture["Evolutionary Architecture"]
n_minimum_viable_architecture["Minimum Viable Architecture"]
n_greenfield_development["Greenfield Development"]
n_first_principles_design["First-Principles Design"]
n_reference_architecture["Reference Architecture"]
n_pattern_consistency["Pattern Consistency"]
n_architectural_consistency["Architectural Consistency"]
n_standardization["Standardization"]
n_assessment --> n_quality_attributes
n_architecture_review --> n_architecture_decision_records
n_architecture_review --> n_architectural_consistency
n_fitness_functions --> n_evolutionary_architecture
n_quality_attributes --> n_architecture_review
n_evolutionary_architecture --> n_fitness_functions
n_greenfield_development --> n_first_principles_design
n_reference_architecture --> n_standardization
n_architectural_consistency --> n_pattern_consistency
```

### Assessment

- Kind: [activity](https://banes-lab.com/records/kind/activity.md)
- Severity: recommended
- Scope: codebase, architecture, risk
- Layer: [Evolution Principles](https://banes-lab.com/records/layer/evolution-principles.md)

Details

Requires
[Criteria](https://banes-lab.com/records/lex/criteria.md), [Evidence](https://banes-lab.com/records/lex/evidence.md)

Reinforces
[Governance](https://banes-lab.com/records/arch/governance.md), [Quality Attributes](https://banes-lab.com/records/arch/quality-attributes.md)

Enables
[Prioritized Refactoring](https://banes-lab.com/records/lex/prioritized-refactoring.md)

In tension with
[Time Cost](https://banes-lab.com/records/lex/time-cost.md)

Conflicts with
[Assumption-Based Judgment](https://banes-lab.com/records/lex/assumption-based-judgment.md)

Tensions
[Assessment Time Cost](https://banes-lab.com/records/tension/assessment-time-cost.md)

Violated by
decisions without assessment criteria

Detected by
missing evaluation artifacts

Measured by
assessment coverage

Refactored by
Add Assessment Checklist/Report

Enforced by
review process

Before

```typescript
approveFooArchitecture();
```

After

```typescript
const assessment = assess(fooArchitecture, {
dimensions: ["modularity", "reliability", "security", "operability"],
evidence: collectArchitectureEvidence(fooSystem),
});
requirePassingAssessment(assessment);
```

### Architecture Review

- Kind: [activity](https://banes-lab.com/records/kind/activity.md)
- Severity: recommended
- Scope: system, component, design change
- Layer: [Evolution Principles](https://banes-lab.com/records/layer/evolution-principles.md)

Details

Requires
[Architecture Criteria](https://banes-lab.com/records/lex/architecture-criteria.md), [Architecture Decision Records (ADR)](https://banes-lab.com/records/arch/architecture-decision-records.md)

Reinforces
[Architectural Consistency](https://banes-lab.com/records/arch/architectural-consistency.md)

Enables
[Risk Detection](https://banes-lab.com/records/lex/risk-detection.md)

In tension with
[Delivery Speed](https://banes-lab.com/records/lex/delivery-speed.md)

Conflicts with
[Unreviewed Structural Change](https://banes-lab.com/records/lex/unreviewed-structural-change.md)

Referenced by
[Quality Attributes](https://banes-lab.com/records/arch/quality-attributes.md)

Tensions
[Architecture Review Delivery Speed](https://banes-lab.com/records/tension/architecture-review-delivery-speed.md)

Violated by
major architecture change without review

Detected by
unapproved dependency/style changes

Measured by
review coverage

Refactored by
Add Review, Resolve Findings

Enforced by
pull request gates

Before

```typescript
mergeFooDesign();
```

After

```typescript
const review = architectureReview({
context: fooContext,
decisions: fooDecisions,
risks: fooRisks,
qualityAttributes: fooQualityAttributes,
});
review.requireApproval(["architecture-owner", "security-owner"]);
```

### Design Review

- Kind: [activity](https://banes-lab.com/records/kind/activity.md)
- Severity: recommended
- Scope: component, module, feature
- Layer: [Evolution Principles](https://banes-lab.com/records/layer/evolution-principles.md)

Details

Requires
[Design Criteria](https://banes-lab.com/records/lex/design-criteria.md)

Reinforces
[Correctness](https://banes-lab.com/records/arch/correctness.md), [Maintainability](https://banes-lab.com/records/lex/maintainability.md)

Enables
[Early Defect Prevention](https://banes-lab.com/records/lex/early-defect-prevention.md)

In tension with
[Iteration Speed](https://banes-lab.com/records/lex/iteration-speed.md)

Conflicts with
[Ad-Hoc Design](https://banes-lab.com/records/lex/ad-hoc-design.md)

Tensions
[Design Review Iteration Speed](https://banes-lab.com/records/tension/design-review-iteration-speed.md)

Violated by
complex feature without design check

Detected by
missing design record

Measured by
design review finding rate

Refactored by
Revise Design, Add Boundary/Contract

Enforced by
review checklist

Before

```typescript
implementFooDesign(fooDesign);
```

After

```typescript
const review = designReview(fooDesign, {
contracts: validateContracts,
failureModes: analyzeFailureModes,
testability: assessTestability,
});
if (!review.approved) throw new Error("design rejected");
```

### Code Review

- Kind: [activity](https://banes-lab.com/records/kind/activity.md)
- Severity: mandatory
- Scope: code change
- Layer: [Evolution Principles](https://banes-lab.com/records/layer/evolution-principles.md)

Details

Requires
[Review Standards](https://banes-lab.com/records/lex/review-standards.md)

Reinforces
[Quality](https://banes-lab.com/records/lex/quality.md), [Security](https://banes-lab.com/records/lex/security.md), [Consistency](https://banes-lab.com/records/arch/consistency.md)

Enables
[Defect Detection](https://banes-lab.com/records/lex/defect-detection.md)

In tension with
[Throughput](https://banes-lab.com/records/arch/throughput.md)

Conflicts with
[Direct-to-main Unreviewed Change](https://banes-lab.com/records/lex/direct-to-main-unreviewed-change.md)

Tensions
[Code Review Throughput](https://banes-lab.com/records/tension/code-review-throughput.md)

Violated by
unreviewed production code changes

Detected by
missing approval/review

Measured by
review coverage, defect escape rate

Refactored by
Apply Review Feedback

Enforced by
branch protection

Before

```typescript
git.merge(fooChange);
```

After

```typescript
const review = codeReview(fooChange);
review.require({ approvals: 2, passingChecks: ["tests", "types", "security", "architecture"] });
git.merge(review.approvedCommit);
```

### Impact Analysis

- Kind: [activity](https://banes-lab.com/records/kind/activity.md)
- Severity: recommended
- Scope: change, dependency graph, API
- Layer: [Evolution Principles](https://banes-lab.com/records/layer/evolution-principles.md)

Details

Requires
[Dependency Graph](https://banes-lab.com/records/arch/dependency-graph.md), [Contracts](https://banes-lab.com/records/lex/contracts.md)

Reinforces
[Change Safety](https://banes-lab.com/records/lex/change-safety.md)

Enables
[Regression Scope Selection](https://banes-lab.com/records/lex/regression-scope-selection.md)

In tension with
[Analysis Overhead](https://banes-lab.com/records/lex/analysis-overhead.md)

Conflicts with
[Blind Change](https://banes-lab.com/records/lex/blind-change.md)

Referenced by
[Causal Dependency](https://banes-lab.com/records/arch/causal-dependency.md), [Dependency Graph](https://banes-lab.com/records/arch/dependency-graph.md)

Tensions
[Impact Analysis Analysis Overhead](https://banes-lab.com/records/tension/analysis-overhead-impact-analysis.md)

Violated by
breaking dependent behavior without awareness

Detected by
change touching dependencies without impact note

Measured by
affected component count

Refactored by
Add Dependency Map, Add Regression Tests

Enforced by
PR template, dependency tooling

Before

```typescript
renameFooField("name", "label");
```

After

```typescript
const impact = dependencyGraph.impactOf({
contract: "FooV1.name",
change: "rename-to-label",
});
for (const consumer of impact.consumers) requireMigration(consumer);
renameFooField("name", "label");
```

### Gap Analysis

- Kind: [activity](https://banes-lab.com/records/kind/activity.md)
- Severity: contextual
- Scope: compliance, architecture, capability
- Layer: [Evolution Principles](https://banes-lab.com/records/layer/evolution-principles.md)

Details

Requires
[Target State](https://banes-lab.com/records/lex/target-state.md), [Current State](https://banes-lab.com/records/lex/current-state.md)

Reinforces
[Governance](https://banes-lab.com/records/arch/governance.md)

Enables
[Remediation Planning](https://banes-lab.com/records/lex/remediation-planning.md)

In tension with
[Time Cost](https://banes-lab.com/records/lex/time-cost.md)

Conflicts with
[Undefined Target](https://banes-lab.com/records/lex/undefined-target.md)

Tensions
[Gap Analysis Time Cost](https://banes-lab.com/records/tension/gap-analysis-time-cost.md)

Violated by
missing comparison against required controls/principles

Detected by
unknown compliance/architecture status

Measured by
gap count/severity

Refactored by
Add Remediation Plan

Enforced by
governance process

Before

```typescript
declareFooSystemReady();
```

After

```typescript
const target = fooTargetArchitecture();
const current = inspectFooArchitecture();
const gaps = compareArchitecture(current, target);
for (const gap of gaps) assignRemediation(gap);
```

### Fitness Functions

- Kind: [mechanism](https://banes-lab.com/records/kind/mechanism.md)
- Severity: recommended
- Scope: codebase, pipeline, architecture
- Layer: [Evolution Principles](https://banes-lab.com/records/layer/evolution-principles.md)

Details

Requires
[Measurable Architecture Rule](https://banes-lab.com/records/lex/measurable-architecture-rule.md)

Reinforces
[Evolutionary Architecture](https://banes-lab.com/records/arch/evolutionary-architecture.md)

Enables
[Automated Architecture Compliance](https://banes-lab.com/records/lex/automated-architecture-compliance.md)

In tension with
[Rule Maintenance](https://banes-lab.com/records/lex/rule-maintenance.md)

Conflicts with
[Manual Architecture Review Only](https://banes-lab.com/records/lex/manual-architecture-review-only.md)

Referenced by
[Evolutionary Architecture](https://banes-lab.com/records/arch/evolutionary-architecture.md)

Tensions
[Fitness Functions Rule Maintenance](https://banes-lab.com/records/tension/fitness-functions-rule-maintenance.md)

Violated by
architecture rule not continuously checked

Detected by
missing executable architecture checks

Measured by
fitness pass/fail trend

Refactored by
Add Fitness Test, Codify Rule

Enforced by
CI architecture tests

Before

```typescript
architectureGuidelines.write("Foo domain must not import infrastructure");
```

After

```typescript
const fitness = forbidImports({ from: "src/foo/domain/**", to: "src/foo/infrastructure/**" });
pipeline.enforce(fitness);
```

### Quality Attributes

- Kind: [model](https://banes-lab.com/records/kind/model.md)
- Severity: recommended
- Scope: system, service, codebase
- Layer: [Performance Core](https://banes-lab.com/records/layer/performance-core.md)

Details

Requires
[Attribute Scenarios](https://banes-lab.com/records/lex/attribute-scenarios.md)

Reinforces
[Architecture Review](https://banes-lab.com/records/arch/architecture-review.md)

Enables
[Trade-Off Analysis](https://banes-lab.com/records/lex/trade-off-analysis.md)

In tension with
[Competing Attributes](https://banes-lab.com/records/lex/competing-attributes.md)

Conflicts with
[Feature-Only Design](https://banes-lab.com/records/arch/feature-only-design.md)

Referenced by
[Assessment](https://banes-lab.com/records/arch/assessment.md)

Tensions
[Quality Attributes Competing Attributes](https://banes-lab.com/records/tension/competing-attributes-quality-attributes.md)

Violated by
no explicit nonfunctional requirements

Detected by
missing quality scenarios/SLOs

Measured by
quality attribute scenario pass rate

Refactored by
Define Scenarios, Add Fitness Functions

Enforced by
[architecture review](https://banes-lab.com/records/arch/architecture-review.md)

Before

```typescript
designFooService();
```

After

```typescript
const attributes = defineQualityAttributes({
availability: "99.95%",
p95LatencyMs: 200,
recoveryTimeMinutes: 5,
dataLossSeconds: 0,
});
designFooService(attributes);
```

### Architecture Decision Records (ADR)

- Kind: [artifact](https://banes-lab.com/records/kind/artifact.md)
- Severity: recommended
- Scope: architecture decision
- Aliases: ADRs
- Layer: [Evolution Principles](https://banes-lab.com/records/layer/evolution-principles.md)

Details

Requires
[Context](https://banes-lab.com/records/lex/context.md), [Decision](https://banes-lab.com/records/lex/decision.md), [Consequences](https://banes-lab.com/records/lex/consequences.md)

Reinforces
[Traceability](https://banes-lab.com/records/arch/traceability.md), [Governance](https://banes-lab.com/records/arch/governance.md)

Enables
[Decision History](https://banes-lab.com/records/lex/decision-history.md)

In tension with
[Documentation Maintenance](https://banes-lab.com/records/lex/documentation-maintenance.md)

Conflicts with
[Tribal Knowledge](https://banes-lab.com/records/lex/tribal-knowledge.md)

Referenced by
[Architecture Review](https://banes-lab.com/records/arch/architecture-review.md)

Tensions
[Architecture Decision Records (ADR) Documentation Maintenance](https://banes-lab.com/records/tension/architecture-decision-records-adr-documentation-maintenance.md)

Violated by
major decision not recorded

Detected by
architecture change without ADR

Measured by
ADR coverage

Refactored by
Add ADR, Link to Change

Enforced by
PR template, review policy

Before

```typescript
chooseFooDatabase("postgres");
```

After

```typescript
const adr = recordDecision({
id: "ADR-0042",
title: "Use PostgreSQL for Foo persistence",
status: "accepted",
context: fooPersistenceForces,
decision: "postgres",
consequences: fooPersistenceConsequences,
});
```

### Evolutionary Architecture

- Kind: [approach](https://banes-lab.com/records/kind/approach.md)
- Severity: contextual
- Scope: system, codebase
- Layer: [Evolution Principles](https://banes-lab.com/records/layer/evolution-principles.md)

Details

Requires
[Fitness Functions](https://banes-lab.com/records/arch/fitness-functions.md), [Incremental Change](https://banes-lab.com/records/lex/incremental-change.md)

Reinforces
[Continuous Improvement](https://banes-lab.com/records/lex/continuous-improvement.md)

Enables
[Controlled Architecture Evolution](https://banes-lab.com/records/lex/controlled-architecture-evolution.md)

In tension with
[Governance Discipline](https://banes-lab.com/records/lex/governance-discipline.md)

Conflicts with
[Big-Upfront Frozen Architecture](https://banes-lab.com/records/arch/big-upfront-frozen-architecture.md), [Lava Flow](https://banes-lab.com/records/arch/lava-flow.md), [Premature Abstraction](https://banes-lab.com/records/arch/premature-abstraction.md), [Zombie Code](https://banes-lab.com/records/arch/zombie-code.md)

Referenced by
[Fitness Functions](https://banes-lab.com/records/arch/fitness-functions.md), [Forward Compatibility](https://banes-lab.com/records/arch/forward-compatibility.md)

Tensions
[Evolutionary Architecture Governance Discipline](https://banes-lab.com/records/tension/evolutionary-architecture-governance-discipline.md)

Violated by
architecture decay without feedback loops

Detected by
accumulating unmeasured drift

Measured by
fitness trend, architecture debt

Refactored by
Add Fitness Functions, Refactor Incrementally

Enforced by
CI/CD architecture checks

Before

```typescript
designFinalFooArchitecture();
freezeArchitectureForever();
```

After

```typescript
const fooArchitecture = evolveArchitecture({
current: minimumFooArchitecture,
fitnessFunctions: fooFitnessFunctions,
nextChange: highestValueArchitectureChange,
});
```

### Minimum Viable Architecture

- Kind: [approach](https://banes-lab.com/records/kind/approach.md)
- Severity: contextual
- Scope: greenfield, early product
- Layer: [Evolution Principles](https://banes-lab.com/records/layer/evolution-principles.md)

Details

Requires
[Essential Quality Attributes](https://banes-lab.com/records/lex/essential-quality-attributes.md)

Reinforces
[Simplicity](https://banes-lab.com/records/lex/simplicity.md)

Enables
[Early Delivery with Guardrails](https://banes-lab.com/records/lex/early-delivery-with-guardrails.md)

In tension with
[Future Scalability](https://banes-lab.com/records/lex/future-scalability.md)

Conflicts with
[Over-Architecture](https://banes-lab.com/records/lex/over-architecture.md), [Architecture Astronaut](https://banes-lab.com/records/arch/architecture-astronaut.md), [Over-Abstraction](https://banes-lab.com/records/arch/over-abstraction.md), [Speculative Generality](https://banes-lab.com/records/arch/speculative-generality.md)

Tensions
[Minimum Viable Architecture Future Scalability](https://banes-lab.com/records/tension/future-scalability-minimum-viable-architecture.md)

Violated by
adding complex patterns before need

Detected by
unused abstractions/infrastructure

Measured by
architecture complexity vs need

Refactored by
Simplify, Defer Optional Mechanisms

Enforced by
[design review](https://banes-lab.com/records/arch/design-review.md)

Before

```typescript
buildServiceMesh();
buildGlobalEventBus();
buildPluginPlatform();
createFooEndpoint();
```

After

```typescript
const architecture = defineMinimumArchitecture({
useCase: "create-and-read-foo",
components: ["foo-api", "foo-store"],
deferredUntilForced: ["service-mesh", "plugin-platform"],
});
```

### Greenfield Development

- Kind: [model](https://banes-lab.com/records/kind/model.md)
- Severity: contextual
- Scope: new codebase, system
- Layer: [Evolution Principles](https://banes-lab.com/records/layer/evolution-principles.md)

Details

Requires
[First-Principles Design](https://banes-lab.com/records/arch/first-principles-design.md)

Reinforces
[Architecture Foundation](https://banes-lab.com/records/lex/architecture-foundation.md)

Enables
[Clean Boundary Design](https://banes-lab.com/records/lex/clean-boundary-design.md)

In tension with
[Unknown Requirements](https://banes-lab.com/records/lex/unknown-requirements.md), [Legacy Constraints](https://banes-lab.com/records/lex/legacy-constraints.md)

Conflicts with
none

Tensions
[Greenfield Development Unknown Requirements](https://banes-lab.com/records/tension/greenfield-development-unknown-requirements.md), [Greenfield Development Legacy Constraints](https://banes-lab.com/records/tension/greenfield-development-legacy-constraints.md)

Violated by
premature irreversible architecture choices

Detected by
heavy structure without validated need

Measured by
[initial complexity](https://banes-lab.com/records/lex/initial-complexity.md), adaptability

Refactored by
Start Modular, Add ADRs, Define Boundaries

Enforced by
[architecture review](https://banes-lab.com/records/arch/architecture-review.md)

Before

```typescript
copyLegacyFooModule();
retainLegacyFooFlags();
retainLegacyFooSchema();
```

After

```typescript
const fooSystem = designFromCurrentForces({
domain: fooDomain,
constraints: currentConstraints,
contracts: currentContracts,
});
```

### First-Principles Design

- Kind: [approach](https://banes-lab.com/records/kind/approach.md)
- Severity: recommended
- Scope: architecture, domain, component
- Layer: [Evolution Principles](https://banes-lab.com/records/layer/evolution-principles.md)

Details

Requires
[Problem Decomposition](https://banes-lab.com/records/lex/problem-decomposition.md)

Reinforces
[Correctness](https://banes-lab.com/records/arch/correctness.md), [Simplicity](https://banes-lab.com/records/lex/simplicity.md)

Enables
[Fit-for-Purpose Architecture](https://banes-lab.com/records/lex/fit-for-purpose-architecture.md)

In tension with
[Reuse of Established Patterns](https://banes-lab.com/records/lex/reuse-of-established-patterns.md)

Conflicts with
[Cargo-Cult Pattern Use](https://banes-lab.com/records/lex/cargo-cult-pattern-use.md), [Golden Hammer](https://banes-lab.com/records/arch/golden-hammer.md), [Pattern Cargo Cult](https://banes-lab.com/records/arch/pattern-cargo-cult.md)

Referenced by
[Greenfield Development](https://banes-lab.com/records/arch/greenfield-development.md)

Tensions
[First-Principles Design Reuse of Established Patterns](https://banes-lab.com/records/tension/first-principles-design-reuse-of-established-patterns.md)

Violated by
applying patterns without problem fit

Detected by
unjustified pattern selection

Measured by
decision rationale quality

Refactored by
Re-evaluate Constraints, Remove Misfit Pattern

Enforced by
ADR review

Before

```typescript
useMicroservicesBecauseIndustryUsesMicroservices();
```

After

```typescript
const forces = identifyForces(fooProblem);
const invariants = deriveInvariants(forces);
const design = synthesizeArchitecture({ forces, invariants });
```

### Reference Architecture

- Kind: [artifact](https://banes-lab.com/records/kind/artifact.md)
- Severity: contextual
- Scope: platform, organization, system family
- Layer: [Evolution Principles](https://banes-lab.com/records/layer/evolution-principles.md)

Details

Requires
[Standard Patterns](https://banes-lab.com/records/lex/standard-patterns.md), [Quality Goals](https://banes-lab.com/records/lex/quality-goals.md)

Reinforces
[Standardization](https://banes-lab.com/records/arch/standardization.md), [Consistency](https://banes-lab.com/records/arch/consistency.md)

Enables
[Reusable Architecture Guidance](https://banes-lab.com/records/lex/reusable-architecture-guidance.md)

In tension with
[Team Autonomy](https://banes-lab.com/records/lex/team-autonomy.md)

Conflicts with
[Uncoordinated Divergence](https://banes-lab.com/records/lex/uncoordinated-divergence.md)

Tensions
[Reference Architecture Team Autonomy](https://banes-lab.com/records/tension/reference-architecture-team-autonomy.md)

Violated by
inconsistent implementations without rationale

Detected by
deviation without ADR

Measured by
conformance/deviation rate

Refactored by
Align to Reference or Document Exception

Enforced by
[architecture review](https://banes-lab.com/records/arch/architecture-review.md)

Before

```typescript
teamA.buildFooOneWay();
teamB.buildFooAnotherWay();
```

After

```typescript
const fooReference = defineReferenceArchitecture({
modules: ["api", "application", "domain", "adapters"],
allowedDependencies: fooDependencyRules,
});
teamA.instantiate(fooReference);
teamB.instantiate(fooReference);
```

### Pattern Consistency

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Severity: recommended
- Scope: codebase, system
- Layer: [Evolution Principles](https://banes-lab.com/records/layer/evolution-principles.md)

Details

Requires
[Naming/Structure Conventions](https://banes-lab.com/records/lex/naming-structure-conventions.md)

Reinforces
[Predictability](https://banes-lab.com/records/arch/predictability.md), [Maintainability](https://banes-lab.com/records/lex/maintainability.md)

Enables
[Easier Refactoring](https://banes-lab.com/records/lex/easier-refactoring.md)

In tension with
[Local Optimization](https://banes-lab.com/records/lex/local-optimization.md)

Conflicts with
[Ad-Hoc Pattern Mixing](https://banes-lab.com/records/lex/ad-hoc-pattern-mixing.md)

Referenced by
[Architectural Consistency](https://banes-lab.com/records/arch/architectural-consistency.md), [Convention over Configuration](https://banes-lab.com/records/arch/convention-over-configuration.md)

Tensions
[Pattern Consistency Local Optimization](https://banes-lab.com/records/tension/local-optimization-pattern-consistency.md)

Violated by
same problem solved with incompatible patterns

Detected by
inconsistent implementations of same concern

Measured by
pattern variance count

Refactored by
Normalize Pattern, Extract Shared Convention

Enforced by
linting, [review](https://banes-lab.com/records/lex/review.md), scaffolding

Before

```typescript
fooModule.useRepository();
barModule.queryDatabaseDirectly();
bazModule.useActiveRecord();
```

After

```typescript
const persistencePattern = "repository" as const;
fooModule.use(persistencePattern);
barModule.use(persistencePattern);
bazModule.use(persistencePattern);
```

### Architectural Consistency

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Severity: mandatory
- Scope: system, codebase
- Layer: [Evolution Principles](https://banes-lab.com/records/layer/evolution-principles.md)

Details

Requires
[Architecture Rules](https://banes-lab.com/records/lex/architecture-rules.md), [Governance](https://banes-lab.com/records/arch/governance.md)

Reinforces
[Pattern Consistency](https://banes-lab.com/records/arch/pattern-consistency.md)

Enables
[Predictable Evolution](https://banes-lab.com/records/lex/predictable-evolution.md)

In tension with
[Local Autonomy](https://banes-lab.com/records/lex/local-autonomy.md)

Conflicts with
[Architecture Drift](https://banes-lab.com/records/lex/architecture-drift.md)

Referenced by
[Architecture Review](https://banes-lab.com/records/arch/architecture-review.md)

Tensions
[Architectural Consistency Local Autonomy](https://banes-lab.com/records/tension/architectural-consistency-local-autonomy.md)

Violated by
unapproved boundary/layer/dependency deviations

Detected by
architecture fitness failures

Measured by
violation trend

Refactored by
Align Dependency/Layer/Boundary

Enforced by
architecture tests

Before

```typescript
fooDomain.imports(sqlClient);
barDomain.imports(httpClient);
```

After

```typescript
architectureRules.enforce([
forbid("domain", "infrastructure"),
requirePortFor("external-io"),
]);
```

### Standardization

- Kind: [principle](https://banes-lab.com/records/kind/principle.md)
- Severity: contextual
- Scope: codebase, platform, organization
- Layer: [Evolution Principles](https://banes-lab.com/records/layer/evolution-principles.md)

Details

Requires
[Standards Definition](https://banes-lab.com/records/lex/standards-definition.md)

Reinforces
[Consistency](https://banes-lab.com/records/arch/consistency.md), [Interoperability](https://banes-lab.com/records/arch/interoperability.md)

Enables
[Reuse](https://banes-lab.com/records/lex/reuse.md), [Operability](https://banes-lab.com/records/lex/operability.md)

In tension with
[Innovation/Autonomy](https://banes-lab.com/records/lex/innovation-autonomy.md)

Conflicts with
[Unbounded Variation](https://banes-lab.com/records/lex/unbounded-variation.md)

Referenced by
[Reference Architecture](https://banes-lab.com/records/arch/reference-architecture.md), [Autonomy](https://banes-lab.com/records/arch/autonomy.md)

Tensions
[Standardization Innovation/Autonomy](https://banes-lab.com/records/tension/innovation-autonomy-standardization.md)

Violated by
inconsistent tooling/formats/patterns

Detected by
standards deviation

Measured by
conformance rate

Refactored by
Normalize Tooling/Format/Pattern

Enforced by
CI policies, templates

Before

```typescript
teamA.emit({ foo_id: foo.id });
teamB.emit({ id: foo.id, type: "foo" });
```

After

```typescript
const FooCreatedV1 = standardEvent({
type: "FooCreated",
version: 1,
fields: { fooId: FooIdSchema },
});
teamA.emit(FooCreatedV1.create(foo));
teamB.emit(FooCreatedV1.create(foo));
```

## Links to

- [activity](https://banes-lab.com/records/kind/activity.md)
- [Evolution Principles](https://banes-lab.com/records/layer/evolution-principles.md)
- [Criteria](https://banes-lab.com/records/lex/criteria.md)
- [Evidence](https://banes-lab.com/records/lex/evidence.md)
- [Governance](https://banes-lab.com/records/arch/governance.md)
- [Quality Attributes](https://banes-lab.com/records/arch/quality-attributes.md)
- [Prioritized Refactoring](https://banes-lab.com/records/lex/prioritized-refactoring.md)
- [Time Cost](https://banes-lab.com/records/lex/time-cost.md)
- [Assumption-Based Judgment](https://banes-lab.com/records/lex/assumption-based-judgment.md)
- [Assessment / Time Cost](https://banes-lab.com/records/tension/assessment-time-cost.md)
- [Architecture Criteria](https://banes-lab.com/records/lex/architecture-criteria.md)
- [Architecture Decision Records (ADR)](https://banes-lab.com/records/arch/architecture-decision-records.md)
- [Architectural Consistency](https://banes-lab.com/records/arch/architectural-consistency.md)
- [Risk Detection](https://banes-lab.com/records/lex/risk-detection.md)
- [Delivery Speed](https://banes-lab.com/records/lex/delivery-speed.md)
- [Unreviewed Structural Change](https://banes-lab.com/records/lex/unreviewed-structural-change.md)
- [Architecture Review / Delivery Speed](https://banes-lab.com/records/tension/architecture-review-delivery-speed.md)
- [Design Criteria](https://banes-lab.com/records/lex/design-criteria.md)
- [Correctness](https://banes-lab.com/records/arch/correctness.md)
- [Maintainability](https://banes-lab.com/records/lex/maintainability.md)
- [Early Defect Prevention](https://banes-lab.com/records/lex/early-defect-prevention.md)
- [Iteration Speed](https://banes-lab.com/records/lex/iteration-speed.md)
- [Ad-Hoc Design](https://banes-lab.com/records/lex/ad-hoc-design.md)
- [Design Review / Iteration Speed](https://banes-lab.com/records/tension/design-review-iteration-speed.md)
- [Review Standards](https://banes-lab.com/records/lex/review-standards.md)
- [Quality](https://banes-lab.com/records/lex/quality.md)
- [Security](https://banes-lab.com/records/lex/security.md)
- [Consistency](https://banes-lab.com/records/arch/consistency.md)
- [Defect Detection](https://banes-lab.com/records/lex/defect-detection.md)
- [Throughput](https://banes-lab.com/records/arch/throughput.md)
- [Direct-to-main Unreviewed Change](https://banes-lab.com/records/lex/direct-to-main-unreviewed-change.md)
- [Code Review / Throughput](https://banes-lab.com/records/tension/code-review-throughput.md)
- [Dependency Graph](https://banes-lab.com/records/arch/dependency-graph.md)
- [Contracts](https://banes-lab.com/records/lex/contracts.md)
- [Change Safety](https://banes-lab.com/records/lex/change-safety.md)
- [Regression Scope Selection](https://banes-lab.com/records/lex/regression-scope-selection.md)
- [Analysis Overhead](https://banes-lab.com/records/lex/analysis-overhead.md)
- [Blind Change](https://banes-lab.com/records/lex/blind-change.md)
- [Causal Dependency](https://banes-lab.com/records/arch/causal-dependency.md)
- [Impact Analysis / Analysis Overhead](https://banes-lab.com/records/tension/analysis-overhead-impact-analysis.md)
- [Target State](https://banes-lab.com/records/lex/target-state.md)
- [Current State](https://banes-lab.com/records/lex/current-state.md)
- [Remediation Planning](https://banes-lab.com/records/lex/remediation-planning.md)
- [Undefined Target](https://banes-lab.com/records/lex/undefined-target.md)
- [Gap Analysis / Time Cost](https://banes-lab.com/records/tension/gap-analysis-time-cost.md)
- [mechanism](https://banes-lab.com/records/kind/mechanism.md)
- [Measurable Architecture Rule](https://banes-lab.com/records/lex/measurable-architecture-rule.md)
- [Evolutionary Architecture](https://banes-lab.com/records/arch/evolutionary-architecture.md)
- [Automated Architecture Compliance](https://banes-lab.com/records/lex/automated-architecture-compliance.md)
- [Rule Maintenance](https://banes-lab.com/records/lex/rule-maintenance.md)
- [Manual Architecture Review Only](https://banes-lab.com/records/lex/manual-architecture-review-only.md)
- [Fitness Functions / Rule Maintenance](https://banes-lab.com/records/tension/fitness-functions-rule-maintenance.md)
- [model](https://banes-lab.com/records/kind/model.md)
- [Performance Core](https://banes-lab.com/records/layer/performance-core.md)
- [Attribute Scenarios](https://banes-lab.com/records/lex/attribute-scenarios.md)
- [Architecture Review](https://banes-lab.com/records/arch/architecture-review.md)
- [Trade-Off Analysis](https://banes-lab.com/records/lex/trade-off-analysis.md)
- [Competing Attributes](https://banes-lab.com/records/lex/competing-attributes.md)
- [Feature-Only Design](https://banes-lab.com/records/arch/feature-only-design.md)
- [Assessment](https://banes-lab.com/records/arch/assessment.md)
- [Quality Attributes / Competing Attributes](https://banes-lab.com/records/tension/competing-attributes-quality-attributes.md)
- [artifact](https://banes-lab.com/records/kind/artifact.md)
- [Context](https://banes-lab.com/records/lex/context.md)
- [Decision](https://banes-lab.com/records/lex/decision.md)
- [Consequences](https://banes-lab.com/records/lex/consequences.md)
- [Traceability](https://banes-lab.com/records/arch/traceability.md)
- [Decision History](https://banes-lab.com/records/lex/decision-history.md)
- [Documentation Maintenance](https://banes-lab.com/records/lex/documentation-maintenance.md)
- [Tribal Knowledge](https://banes-lab.com/records/lex/tribal-knowledge.md)
- [Architecture Decision Records (ADR) / Documentation Maintenance](https://banes-lab.com/records/tension/architecture-decision-records-adr-documentation-maintenance.md)
- [approach](https://banes-lab.com/records/kind/approach.md)
- [Fitness Functions](https://banes-lab.com/records/arch/fitness-functions.md)
- [Incremental Change](https://banes-lab.com/records/lex/incremental-change.md)
- [Continuous Improvement](https://banes-lab.com/records/lex/continuous-improvement.md)
- [Controlled Architecture Evolution](https://banes-lab.com/records/lex/controlled-architecture-evolution.md)
- [Governance Discipline](https://banes-lab.com/records/lex/governance-discipline.md)
- [Big-Upfront Frozen Architecture](https://banes-lab.com/records/arch/big-upfront-frozen-architecture.md)
- [Lava Flow](https://banes-lab.com/records/arch/lava-flow.md)
- [Premature Abstraction](https://banes-lab.com/records/arch/premature-abstraction.md)
- [Zombie Code](https://banes-lab.com/records/arch/zombie-code.md)
- [Forward Compatibility](https://banes-lab.com/records/arch/forward-compatibility.md)
- [Evolutionary Architecture / Governance Discipline](https://banes-lab.com/records/tension/evolutionary-architecture-governance-discipline.md)
- [Essential Quality Attributes](https://banes-lab.com/records/lex/essential-quality-attributes.md)
- [Simplicity](https://banes-lab.com/records/lex/simplicity.md)
- [Early Delivery with Guardrails](https://banes-lab.com/records/lex/early-delivery-with-guardrails.md)
- [Future Scalability](https://banes-lab.com/records/lex/future-scalability.md)
- [Over-Architecture](https://banes-lab.com/records/lex/over-architecture.md)
- [Architecture Astronaut](https://banes-lab.com/records/arch/architecture-astronaut.md)
- [Over-Abstraction](https://banes-lab.com/records/arch/over-abstraction.md)
- [Speculative Generality](https://banes-lab.com/records/arch/speculative-generality.md)
- [Minimum Viable Architecture / Future Scalability](https://banes-lab.com/records/tension/future-scalability-minimum-viable-architecture.md)
- [Design Review](https://banes-lab.com/records/arch/design-review.md)
- [First-Principles Design](https://banes-lab.com/records/arch/first-principles-design.md)
- [Architecture Foundation](https://banes-lab.com/records/lex/architecture-foundation.md)
- [Clean Boundary Design](https://banes-lab.com/records/lex/clean-boundary-design.md)
- [Unknown Requirements](https://banes-lab.com/records/lex/unknown-requirements.md)
- [Legacy Constraints](https://banes-lab.com/records/lex/legacy-constraints.md)
- [Greenfield Development / Unknown Requirements](https://banes-lab.com/records/tension/greenfield-development-unknown-requirements.md)
- [Greenfield Development / Legacy Constraints](https://banes-lab.com/records/tension/greenfield-development-legacy-constraints.md)
- [Initial Complexity](https://banes-lab.com/records/lex/initial-complexity.md)
- [Problem Decomposition](https://banes-lab.com/records/lex/problem-decomposition.md)
- [Fit-for-Purpose Architecture](https://banes-lab.com/records/lex/fit-for-purpose-architecture.md)
- [Reuse of Established Patterns](https://banes-lab.com/records/lex/reuse-of-established-patterns.md)
- [Cargo-Cult Pattern Use](https://banes-lab.com/records/lex/cargo-cult-pattern-use.md)
- [Golden Hammer](https://banes-lab.com/records/arch/golden-hammer.md)
- [Pattern Cargo Cult](https://banes-lab.com/records/arch/pattern-cargo-cult.md)
- [Greenfield Development](https://banes-lab.com/records/arch/greenfield-development.md)
- [First-Principles Design / Reuse of Established Patterns](https://banes-lab.com/records/tension/first-principles-design-reuse-of-established-patterns.md)
- [Standard Patterns](https://banes-lab.com/records/lex/standard-patterns.md)
- [Quality Goals](https://banes-lab.com/records/lex/quality-goals.md)
- [Standardization](https://banes-lab.com/records/arch/standardization.md)
- [Reusable Architecture Guidance](https://banes-lab.com/records/lex/reusable-architecture-guidance.md)
- [Team Autonomy](https://banes-lab.com/records/lex/team-autonomy.md)
- [Uncoordinated Divergence](https://banes-lab.com/records/lex/uncoordinated-divergence.md)
- [Reference Architecture / Team Autonomy](https://banes-lab.com/records/tension/reference-architecture-team-autonomy.md)
- [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- [Naming/Structure Conventions](https://banes-lab.com/records/lex/naming-structure-conventions.md)
- [Predictability](https://banes-lab.com/records/arch/predictability.md)
- [Easier Refactoring](https://banes-lab.com/records/lex/easier-refactoring.md)
- [Local Optimization](https://banes-lab.com/records/lex/local-optimization.md)
- [Ad-Hoc Pattern Mixing](https://banes-lab.com/records/lex/ad-hoc-pattern-mixing.md)
- [Convention over Configuration](https://banes-lab.com/records/arch/convention-over-configuration.md)
- [Pattern Consistency / Local Optimization](https://banes-lab.com/records/tension/local-optimization-pattern-consistency.md)
- [Review](https://banes-lab.com/records/lex/review.md)
- [Architecture Rules](https://banes-lab.com/records/lex/architecture-rules.md)
- [Pattern Consistency](https://banes-lab.com/records/arch/pattern-consistency.md)
- [Predictable Evolution](https://banes-lab.com/records/lex/predictable-evolution.md)
- [Local Autonomy](https://banes-lab.com/records/lex/local-autonomy.md)
- [Architecture Drift](https://banes-lab.com/records/lex/architecture-drift.md)
- [Architectural Consistency / Local Autonomy](https://banes-lab.com/records/tension/architectural-consistency-local-autonomy.md)
- [principle](https://banes-lab.com/records/kind/principle.md)
- [Standards Definition](https://banes-lab.com/records/lex/standards-definition.md)
- [Interoperability](https://banes-lab.com/records/arch/interoperability.md)
- [Reuse](https://banes-lab.com/records/lex/reuse.md)
- [Operability](https://banes-lab.com/records/lex/operability.md)
- [Innovation/Autonomy](https://banes-lab.com/records/lex/innovation-autonomy.md)
- [Unbounded Variation](https://banes-lab.com/records/lex/unbounded-variation.md)
- [Reference Architecture](https://banes-lab.com/records/arch/reference-architecture.md)
- [Autonomy](https://banes-lab.com/records/arch/autonomy.md)
- [Standardization / Innovation/Autonomy](https://banes-lab.com/records/tension/innovation-autonomy-standardization.md)

## Linked from

- [The layer topology](https://banes-lab.com/ontology/schema/the-layer-topology.md)
- [The membership](https://banes-lab.com/ontology/schema/the-membership.md)
