# Explicit Contracts

Record: `arch:explicit-contracts`
Kind: principle
Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)
Severity: mandatory
Scope: API, service, data, protocol
Canonical: https://banes-lab.com/ontology#arch-explicit-contracts

## Repair

- Refactored by: Add DTO, Add Schema, Add Interface
- Detected by: public methods without DTO/schema, dynamic maps at boundaries
- Violated by: untyped boundaries, undocumented payloads
- Measured by: boundary contract coverage
- Enforced by: [schema validation](https://banes-lab.com/records/arch/schema-validation.md), API linting

## requires

- [Stable Interfaces](https://banes-lab.com/records/arch/stable-interfaces.md)
- [Type Safety](https://banes-lab.com/records/arch/type-safety.md)

## reinforces

- [Predictability](https://banes-lab.com/records/arch/predictability.md)
- [Interoperability](https://banes-lab.com/records/arch/interoperability.md)

## enables

- [Contract-First Design](https://banes-lab.com/records/arch/contract-first-design.md)

## conflicts-with

- [Implicit Payloads](https://banes-lab.com/records/lex/implicit-payloads.md)
- [Implicit Contract](https://banes-lab.com/records/arch/implicit-contract.md)

## tensions-with

- [Rapid Prototyping](https://banes-lab.com/records/lex/rapid-prototyping.md)

## tensions

- [Explicit Contracts Rapid Prototyping](https://banes-lab.com/records/tension/explicit-contracts-rapid-prototyping.md)

## referenced-by

- [Contract-First Design](https://banes-lab.com/records/arch/contract-first-design.md)
- [Consumer-Driven Contracts](https://banes-lab.com/records/arch/consumer-driven-contracts.md)
- [Predictability](https://banes-lab.com/records/arch/predictability.md)
- [Service Autonomy](https://banes-lab.com/records/arch/service-autonomy.md)
