Data Contract
A version-controlled statement of the shape a data producer promises to deliver, checked automatically on every batch.
Four layers of assertion, and the last two are what distinguish a contract from a schema. Schema: columns, types, nullability. Values: ranges, allowed sets, formats, uniqueness. Distributions: mean, quantiles, null rate and category frequencies against a reference window. Cross-field: totals reconciling, ordering, row-count deltas.
The distribution layer is the one that gets skipped and the one that earns its keep, because it catches the changes that keep the pipeline running. A currency switched from cents to pounds passes every type and range check while moving the mean by a factor of a hundred.
What makes it a contract rather than a tripwire is that it has two parties: it lives in the producer's repository, next to their schema, and gets reviewed when they change it. That turns your 3am alert into their failing CI job.