# Contract-First Design

Record: `arch:contract-first-design`
Kind: principle
Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)
Severity: recommended
Scope: API, service, integration
Canonical: https://banes-lab.com/ontology#arch-contract-first-design

## Repair

- Refactored by: Define Contract, Generate Stubs, Add Contract Tests
- Detected by: absent contract before implementation
- Violated by: generated contracts from unstable implementation
- Measured by: contract-first coverage
- Enforced by: CI contract gates

## requires

- [Explicit Contracts](https://banes-lab.com/records/arch/explicit-contracts.md)
- [Schema Contract](https://banes-lab.com/records/arch/schema-contract.md)

## reinforces

- [Interoperability](https://banes-lab.com/records/arch/interoperability.md)
- [Backward Compatibility](https://banes-lab.com/records/arch/backward-compatibility.md)

## enables

- [Consumer-Driven Development](https://banes-lab.com/records/lex/consumer-driven-development.md)

## conflicts-with

- [Implementation-First Integration](https://banes-lab.com/records/lex/implementation-first-integration.md)

## tensions-with

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

## tensions

- [Contract-First Design Iteration Speed](https://banes-lab.com/records/tension/contract-first-design-iteration-speed.md)

## referenced-by

- [Explicit Contracts](https://banes-lab.com/records/arch/explicit-contracts.md)
- [Consumer-Driven Contracts](https://banes-lab.com/records/arch/consumer-driven-contracts.md)
