# Intent-Revealing Interface

Record: `arch:intent-revealing-interface`
Kind: principle
Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)
Severity: recommended
Scope: API, method, class, module
Aliases: Intent-Revealing Interfaces, Intent-Revealing API
Canonical: https://banes-lab.com/ontology#arch-intent-revealing-interface

## Repair

- Refactored by: Rename Method, Replace Boolean with Enum, Add Value Object
- Detected by: generic names, unclear parameters
- Violated by: vague method names, boolean traps
- Measured by: API clarity review findings
- Enforced by: naming lint, API review

## requires

- [Clear Semantics](https://banes-lab.com/records/lex/clear-semantics.md)
- [Naming Consistency](https://banes-lab.com/records/lex/naming-consistency.md)

## reinforces

- [Principle of Least Surprise](https://banes-lab.com/records/arch/principle-of-least-surprise.md)

## enables

- [Readability](https://banes-lab.com/records/lex/readability.md)
- [Correct Usage](https://banes-lab.com/records/lex/correct-usage.md)

## conflicts-with

- [Ambiguous API](https://banes-lab.com/records/lex/ambiguous-api.md)
- [Boolean Trap](https://banes-lab.com/records/arch/boolean-trap.md)

## tensions-with

- [Concise Naming](https://banes-lab.com/records/lex/concise-naming.md)

## tensions

- [Intent-Revealing Interface Concise Naming](https://banes-lab.com/records/tension/concise-naming-intent-revealing-interface.md)

## referenced-by

- [Builder Pattern](https://banes-lab.com/records/arch/builder-pattern.md)
- [Ubiquitous Language](https://banes-lab.com/records/arch/ubiquitous-language.md)
- [Principle of Least Surprise](https://banes-lab.com/records/arch/principle-of-least-surprise.md)
