Overview
Data Contracts
Producer-signed schema + SLA — moves the responsibility for breakage to the producing team.
Why it matters
A contract turns 'oops, we changed the column' from a P2 incident on the consumer team to a blocked CI check on the producer team.
Going deeper
A practical data contract YAML looks like:
dataset: prod.analytics.fct_orders
owner: team-checkout@company
version: 2.3.0
sla:
freshness: 1h
availability: 99.9%
schema:
- { name: order_id, type: string, nullable: false, pk: true }
- { name: amount_cents, type: int64, nullable: false }
- { name: placed_at, type: timestamp, nullable: false }
checks:
- amount_cents > 0
- order_id is unique
breaking_changes_require: [migration_window, downstream_signoff]
The crucial line is the last one: breaking changes require explicit downstream sign-off. That single rule is what flips incident ownership from the consumer back to the producer, where it belongs.