# Contracts / Interfaces / Compatibility

> Every term in this category is listed as one record, with its kind, its definition and its aliases, the principles whose relations name it, the principle or…

Page: Ontology · Lexicon
Canonical: https://banes-lab.com/ontology/lexicon#lex-category-contracts-interfaces-compatibility

Every term in this category is listed as one record, with its kind, its definition and its aliases, the principles whose relations name it, the principle or contract that carries the same name where one exists, and the layer its category belongs to.

### Ad-Hoc Endpoints

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
Exposing inconsistent, one-off endpoints instead of a uniform interface, forcing clients to special-case each.

Referenced by
[Uniform Interface](https://banes-lab.com/records/arch/uniform-interface.md)

### Ad-Hoc Payloads

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
Sending payloads with no agreed schema, so consumers must guess at structure and break on change.

Referenced by
[Schema Contract](https://banes-lab.com/records/arch/schema-contract.md)

### API Usability

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The degree to which an API is easy for developers to learn and use correctly.

Referenced by
[Uniform Interface](https://banes-lab.com/records/arch/uniform-interface.md)

### Automated Validation

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The ability to check data automatically against a declared schema.

Referenced by
[Schema Contract](https://banes-lab.com/records/arch/schema-contract.md)

### Breaking API Change

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
Changing an API in a way that violates its published contract, breaking existing clients.

Referenced by
[API Contract](https://banes-lab.com/records/arch/api-contract.md)

### Breaking Change

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
A change that violates a component's contract, forcing consumers to update to keep working.

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

### Breaking Changes

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
Changes that break existing consumers by altering behavior or shape they depend on.

Referenced by
[Stable Interfaces](https://banes-lab.com/records/arch/stable-interfaces.md)

### Cleanup / Simplification

- Kind: [activity](https://banes-lab.com/records/kind/activity.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The activity of removing obsolete code and structure, which backward compatibility can hold back.

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

### Client Compatibility

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The degree to which existing clients continue to work as an API evolves.

Referenced by
[API Contract](https://banes-lab.com/records/arch/api-contract.md)

### Compatibility Policy

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The declared rules governing which changes are compatible and how versions are managed.

Referenced by
[Versioning](https://banes-lab.com/records/arch/versioning.md)

### Consistent Semantics

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The requirement that the same operation mean the same thing across every resource and endpoint.

Referenced by
[Uniform Interface](https://banes-lab.com/records/arch/uniform-interface.md)

### Consumer Safety

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The degree to which consumers are protected from breakage when a provider changes.

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

### Consumer-Driven Development

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The ability to shape a provider's contract from the concrete needs of its consumers.

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

### Consumer-Verified Compatibility

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The ability to verify a provider still satisfies the contracts its consumers depend on.

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

### Contract Testing

- Kind: [activity](https://banes-lab.com/records/kind/activity.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The activity of testing that an implementation honors the contract it declares.

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

### Cross-Domain Translation

- Kind: [activity](https://banes-lab.com/records/kind/activity.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The activity of mapping terms and structures between two domains that model the world differently.

Referenced by
[Semantic Contracts](https://banes-lab.com/records/arch/semantic-contracts.md)

### Cross-System Communication

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The ability for independent systems to exchange and understand data with one another.

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

### Data Quality

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The degree to which data is accurate, complete, and fit for its intended use.

Referenced by
[Data Contract](https://banes-lab.com/records/arch/data-contract.md)

### Development Speed

- Kind: [metric](https://banes-lab.com/records/kind/metric.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The rate at which new functionality is built, which upfront contract rigor can slow.

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

### Distributed Evolution

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The degree to which services can evolve independently, constrained by the contracts binding them.

Referenced by
[Service Contract](https://banes-lab.com/records/arch/service-contract.md)

### Domain-Specific Optimization

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The degree to which a system is tuned for one domain, traded against broad interoperability.

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

### Evolution

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The ability to change an interface over time, in tension with the stability its contract promises.

Referenced by
[API Contract](https://banes-lab.com/records/arch/api-contract.md)

### Evolution Speed

- Kind: [metric](https://banes-lab.com/records/kind/metric.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The rate at which an interface can change, which a commitment to stability deliberately limits.

Referenced by
[Stable Interfaces](https://banes-lab.com/records/arch/stable-interfaces.md)

### Extensible Schema

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
A schema shaped so new fields can be added without breaking existing consumers.

Referenced by
[Forward Compatibility](https://banes-lab.com/records/arch/forward-compatibility.md)

### External State Mutation

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
Mutating state outside an object's own boundary, breaking the invariants it is supposed to guarantee.

Referenced by
[Invariants](https://banes-lab.com/records/arch/invariants.md)

### Flexibility

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The degree to which a component permits varied use, in tension with the invariants it must uphold.

Referenced by
[Invariants](https://banes-lab.com/records/arch/invariants.md)

### Flexible Ingestion

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The degree to which a system accepts loosely-structured input, in tension with a strict data contract.

Referenced by
[Data Contract](https://banes-lab.com/records/arch/data-contract.md)

### Hidden Service Coupling

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
An undeclared dependency between services that surfaces only at runtime, undermining independent evolution.

Referenced by
[Service Contract](https://banes-lab.com/records/arch/service-contract.md)

### Implementation-First Integration

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
Integrating against a concrete implementation before agreeing a contract, coupling consumers to internals.

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

### Implicit Assumptions

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
Relying on unstated preconditions a caller must satisfy, which break silently when they are violated.

Referenced by
[Preconditions](https://banes-lab.com/records/arch/preconditions.md)

### Implicit Behavior

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
Behavior a component performs that is not stated in its contract, surprising callers who come to depend on it.

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

### Implicit Payloads

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
Passing data whose shape and meaning are never declared, so consumers infer them and break on change.

Referenced by
[Explicit Contracts](https://banes-lab.com/records/arch/explicit-contracts.md)

### Incremental Deployment

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The ability to roll out changes gradually while old and new versions coexist.

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

### Independent Consumers

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The ability for consumers to evolve on their own schedule because the interface stays stable.

Referenced by
[Stable Interfaces](https://banes-lab.com/records/arch/stable-interfaces.md)

### Integration

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The degree to which separate systems are connected to operate as a unified whole.

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

### Interface Overuse

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The degree to which excessive interface abstraction adds indirection without proportional benefit.

Referenced by
[Interface-Based Design](https://banes-lab.com/records/arch/interface-based-design.md)

### Multi-Client Integration

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The ability to serve many different clients through one compatible protocol.

Referenced by
[Protocol Compatibility](https://banes-lab.com/records/arch/protocol-compatibility.md)

### Permissive APIs

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The degree to which an API accepts loose or lenient input, in tension with strict preconditions.

Referenced by
[Preconditions](https://banes-lab.com/records/arch/preconditions.md)

### Proprietary Coupling

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
Binding to a vendor's proprietary interface, forfeiting interoperability and portability.

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

### Proprietary Drift

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
Extending a standard protocol with proprietary features until it no longer interoperates with others.

Referenced by
[Protocol Compatibility](https://banes-lab.com/records/arch/protocol-compatibility.md)

### Protocol Contract

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The agreed rules of a protocol, such as its messages, formats and sequences, that both ends must honor.

Referenced by
[Protocol Compatibility](https://banes-lab.com/records/arch/protocol-compatibility.md)

### Protocol Optimization

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The degree to which a protocol is tuned for performance, traded against broad compatibility.

Referenced by
[Protocol Compatibility](https://banes-lab.com/records/arch/protocol-compatibility.md)

### Provider Autonomy

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The degree of freedom a provider retains to change, constrained by consumer-driven contracts.

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

### Provider Change Safety

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The degree to which a provider can change without breaking its consumers, verified by their contracts.

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

### Rapid Prototyping

- Kind: [activity](https://banes-lab.com/records/kind/activity.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The activity of building quick throwaway prototypes, which explicit contracts can slow.

Referenced by
[Explicit Contracts](https://banes-lab.com/records/arch/explicit-contracts.md)

### Reliable Integration

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The degree to which systems integrate correctly because their shared meaning is agreed, not just their shape.

Referenced by
[Semantic Contracts](https://banes-lab.com/records/arch/semantic-contracts.md)

### Result Validation

- Kind: [activity](https://banes-lab.com/records/kind/activity.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The activity of checking that an operation's result satisfies its promised postconditions.

Referenced by
[Postconditions](https://banes-lab.com/records/arch/postconditions.md)

### Rolling Upgrades

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The ability to upgrade instances one at a time while old and new versions interoperate.

Referenced by
[Forward Compatibility](https://banes-lab.com/records/arch/forward-compatibility.md)

### Runtime Cost

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The degree of runtime overhead incurred by checking conditions on every call.

Referenced by
[Postconditions](https://banes-lab.com/records/arch/postconditions.md)

### Schema Evolution

- Kind: [capability](https://banes-lab.com/records/kind/capability.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The ability to change a data schema over time without breaking existing readers or writers.

Referenced by
[Data Contract](https://banes-lab.com/records/arch/data-contract.md)

### Schema Flexibility

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The degree to which a schema tolerates variation, in tension with a strict contract.

Referenced by
[Schema Contract](https://banes-lab.com/records/arch/schema-contract.md)

### Semantic Contract

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
An agreement specifying not just the shape of an interface but the meaning and behavior it guarantees.

Referenced by
[Service Contract](https://banes-lab.com/records/arch/service-contract.md)

### Silent Breaking Changes

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
Shipping a breaking change with no version bump or notice, so consumers fail without warning.

Referenced by
[Versioning](https://banes-lab.com/records/arch/versioning.md)

### Specialized Endpoints

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The degree to which purpose-built endpoints are offered, traded against a uniform interface.

Referenced by
[Uniform Interface](https://banes-lab.com/records/arch/uniform-interface.md)

### Strict Fragile Parsers

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
Parsers that reject any input deviating from an exact expectation, breaking on benign additions.

Referenced by
[Forward Compatibility](https://banes-lab.com/records/arch/forward-compatibility.md)

### Strong Validation

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The degree to which input is strictly validated, in tension with tolerating unknown future fields.

Referenced by
[Forward Compatibility](https://banes-lab.com/records/arch/forward-compatibility.md)

### Undefined Results

- Kind: [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
Returning results a contract never specifies for a given input, leaving callers with undefined behavior.

Referenced by
[Postconditions](https://banes-lab.com/records/arch/postconditions.md)

### Unknown Field Handling

- Kind: [constraint](https://banes-lab.com/records/kind/constraint.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The requirement that a consumer ignore fields it does not recognize rather than fail on them.

Referenced by
[Forward Compatibility](https://banes-lab.com/records/arch/forward-compatibility.md)

### Version Sprawl

- Kind: [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- Category: [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lex-category-contracts-interfaces-compatibility.md)
- Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)

Details

Definition
The degree to which many concurrent versions accumulate and must be maintained.

Referenced by
[Versioning](https://banes-lab.com/records/arch/versioning.md)

## Links to

- [anti-pattern](https://banes-lab.com/records/kind/anti-pattern.md)
- [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)
- [Uniform Interface](https://banes-lab.com/records/arch/uniform-interface.md)
- [Schema Contract](https://banes-lab.com/records/arch/schema-contract.md)
- [quality-attribute](https://banes-lab.com/records/kind/quality-attribute.md)
- [capability](https://banes-lab.com/records/kind/capability.md)
- [API Contract](https://banes-lab.com/records/arch/api-contract.md)
- [Backward Compatibility](https://banes-lab.com/records/arch/backward-compatibility.md)
- [Stable Interfaces](https://banes-lab.com/records/arch/stable-interfaces.md)
- [activity](https://banes-lab.com/records/kind/activity.md)
- [constraint](https://banes-lab.com/records/kind/constraint.md)
- [Versioning](https://banes-lab.com/records/arch/versioning.md)
- [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)
- [Design by Contract](https://banes-lab.com/records/arch/design-by-contract.md)
- [Semantic Contracts](https://banes-lab.com/records/arch/semantic-contracts.md)
- [Interoperability](https://banes-lab.com/records/arch/interoperability.md)
- [Data Contract](https://banes-lab.com/records/arch/data-contract.md)
- [metric](https://banes-lab.com/records/kind/metric.md)
- [Service Contract](https://banes-lab.com/records/arch/service-contract.md)
- [Forward Compatibility](https://banes-lab.com/records/arch/forward-compatibility.md)
- [Invariants](https://banes-lab.com/records/arch/invariants.md)
- [Preconditions](https://banes-lab.com/records/arch/preconditions.md)
- [Explicit Contracts](https://banes-lab.com/records/arch/explicit-contracts.md)
- [Interface-Based Design](https://banes-lab.com/records/arch/interface-based-design.md)
- [Protocol Compatibility](https://banes-lab.com/records/arch/protocol-compatibility.md)
- [Postconditions](https://banes-lab.com/records/arch/postconditions.md)
