# Information Hiding

Record: `arch:information-hiding`
Kind: principle
Layer: [Structural Core](https://banes-lab.com/records/layer/structural-core.md)
Severity: mandatory
Scope: class, module, package
Canonical: https://banes-lab.com/ontology#arch-information-hiding

## Repair

- Refactored by: Introduce Facade, Hide Module, Restrict Exports
- Detected by: internal packages imported externally, exposed persistence models
- Violated by: exposing implementation details, shared internals
- Measured by: internal API exposure, dependency leakage
- Enforced by: package visibility, module export rules

## requires

- [Encapsulation](https://banes-lab.com/records/arch/encapsulation.md)
- [Explicit Interfaces](https://banes-lab.com/records/lex/explicit-interfaces.md)

## reinforces

- [Low Coupling](https://banes-lab.com/records/arch/low-coupling.md)
- [Replaceability](https://banes-lab.com/records/arch/replaceability.md)

## enables

- [Internal Refactoring](https://banes-lab.com/records/lex/internal-refactoring.md)

## conflicts-with

- [Leaky Abstraction](https://banes-lab.com/records/lex/leaky-abstraction.md)

## tensions-with

- [Observability](https://banes-lab.com/records/arch/observability.md)

## tensions

- [Information Hiding Observability](https://banes-lab.com/records/tension/information-hiding-observability.md)

## referenced-by

- [Memento Pattern](https://banes-lab.com/records/arch/memento-pattern.md)
- [Encapsulation](https://banes-lab.com/records/arch/encapsulation.md)
- [Facade Pattern](https://banes-lab.com/records/arch/facade-pattern.md)
