# Explicit Boundaries

> A design rule that each module declares its public interface and owner, and other modules reach it only through that interface.

Record: `architecture:explicit-boundaries`
Kind: principle
Layer: [Domain Modeling](https://banes-lab.com/records/layer/domain-modeling.md)
Severity: mandatory
Scope: module, component, service, domain
Canonical: https://banes-lab.com/ontology#architecture-explicit-boundaries

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Anti-Corruption Layer](https://banes-lab.com/records/architecture/anti-corruption-layer.md) and before [Aggregate](https://banes-lab.com/records/architecture/aggregate.md).

## Repair

- Refactored by: Move Code, Extract API, Restrict Exports
- Detected by: forbidden imports, [cyclic dependencies](https://banes-lab.com/records/architecture/circular-dependency.md)
- Violated by: internal imports, shared mutable internals
- Measured by: boundary violation count
- Enforced by: module rules, architecture tests

## Requires

- [Stable Interfaces](https://banes-lab.com/records/architecture/stable-interfaces.md)
- [Ownership](https://banes-lab.com/records/lexicon/ownership.md)

## Reinforces

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

## Enables

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

## Conflicts with

- [Boundary Leakage](https://banes-lab.com/records/architecture/boundary-leakage.md)

## In tension with

- [Cross-Cutting Concerns](https://banes-lab.com/records/lexicon/cross-cutting-concerns.md)

## Tensions

- [Explicit Boundaries / Cross-Cutting Concerns](https://banes-lab.com/records/tension/cross-cutting-concerns-explicit-boundaries.md)

## Severity

- [mandatory](https://banes-lab.com/records/vocabulary/severity-mandatory.md)

## Category

- [Domain Architecture](https://banes-lab.com/records/architecture-category/domain-architecture.md)

## Enforced by

- [codemods/entrypoints/specifier.entrypoint.ts](https://banes-lab.com/source/governance/codemods/entrypoints/specifier.entrypoint.ts.md)
- [rules/eslint/closure-build-script-unimported.eslint.rule.ts](https://banes-lab.com/source/governance/rules/eslint/closure-build-script-unimported.eslint.rule.ts.md)
- [rules/eslint/closure-no-cross-member-relative.eslint.rule.ts](https://banes-lab.com/source/governance/rules/eslint/closure-no-cross-member-relative.eslint.rule.ts.md)
- [rules/eslint/closure-standalone-script-imported.eslint.rule.ts](https://banes-lab.com/source/governance/rules/eslint/closure-standalone-script-imported.eslint.rule.ts.md)

## Required by

- [Bounded Context](https://banes-lab.com/records/architecture/bounded-context.md)
- [Aggregate](https://banes-lab.com/records/architecture/aggregate.md)
- [Single Responsibility Principle](https://banes-lab.com/records/architecture/single-responsibility.md)
- [Separation of Concerns](https://banes-lab.com/records/architecture/separation-of-concerns.md)
- [High Cohesion](https://banes-lab.com/records/architecture/high-cohesion.md)
- [Independence](https://banes-lab.com/records/architecture/independence.md)

## Reinforced by

- [Context Mapping](https://banes-lab.com/records/architecture/context-mapping.md)
- [Declared Jurisdiction](https://banes-lab.com/records/architecture/declared-jurisdiction.md)

## Linked from

- [When rules collide](https://banes-lab.com/disciplined-methodology/plan/when-rules-collide.md)
- [Principles are typed](https://banes-lab.com/software-architecture/principles/principles-are-typed.md)
- [Architectural rules and principles](https://banes-lab.com/software-architecture/glossary/architectural-principles.md)
- [Anti-patterns](https://banes-lab.com/ontology/principles/architecture-category-anti-patterns.md)
- [Domain Architecture](https://banes-lab.com/ontology/principles/architecture-category-domain-architecture.md)
- [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/principles/architecture-category-contracts-interfaces-compatibility.md)
- [Core Modular Design](https://banes-lab.com/ontology/principles/architecture-category-core-modular-design.md)
- [Security / Privacy / Compliance / Governance](https://banes-lab.com/ontology/principles/architecture-category-security-privacy-compliance-governance.md)
- [Taxonomy / Classification / Naming](https://banes-lab.com/ontology/principles/architecture-category-taxonomy-classification-naming.md)
- [Core Vocabulary](https://banes-lab.com/ontology/lexicon/lexicon-category-core-vocabulary.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
