# Backward Compatibility

> A rule or precondition that a new version keeps working for consumers written against an older one.

Record: `architecture:backward-compatibility`
Kind: constraint
Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)
Severity: mandatory
Scope: API, schema, protocol
Canonical: https://banes-lab.com/ontology#architecture-backward-compatibility

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Invariant](https://banes-lab.com/records/architecture/invariant.md) and before [Forward Compatibility](https://banes-lab.com/records/architecture/forward-compatibility.md).

## Repair

- Refactored by: Add Version, Deprecate, Add Adapter
- Detected by: API/schema diff
- Violated by: removing fields, changing semantics, narrowing types
- Measured by: breaking-change count
- Enforced by: compatibility tests, API diff gates

## Requires

- [Versioning](https://banes-lab.com/records/architecture/versioning.md)
- [Stable Interfaces](https://banes-lab.com/records/architecture/stable-interfaces.md)

## Reinforces

- [Consumer Safety](https://banes-lab.com/records/lexicon/consumer-safety.md)

## Enables

- [Incremental Deployment](https://banes-lab.com/records/lexicon/incremental-deployment.md)

## Conflicts with

- [Breaking Change](https://banes-lab.com/records/lexicon/breaking-change.md)

## In tension with

- [Cleanup / Simplification](https://banes-lab.com/records/lexicon/cleanup-simplification.md)

## Tensions

- [Backward Compatibility / Cleanup / Simplification](https://banes-lab.com/records/tension/backward-compatibility-cleanup-simplification.md)

## Severity

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

## Category

- [Contracts / Interfaces / Compatibility](https://banes-lab.com/records/architecture-category/contracts-interfaces-compatibility.md)

## Reinforced by

- [Contract-First Design](https://banes-lab.com/records/architecture/contract-first-design.md)
- [Consumer-Driven Contracts](https://banes-lab.com/records/architecture/consumer-driven-contracts.md)

## Enabled by

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

## Linked from

- [Never and always](https://banes-lab.com/software-architecture/decay/never-and-always.md)
- [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/principles/architecture-category-contracts-interfaces-compatibility.md)
- [Taxonomy / Classification / Naming](https://banes-lab.com/ontology/principles/architecture-category-taxonomy-classification-naming.md)
- [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lexicon-category-contracts-interfaces-compatibility.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
