Respond when a data contract breaks
Work the broken-contract runbook end to end: identify which clause broke, bound the consumer impact set from lineage before anything else, decide whether the producer reverts or the consumer adapts, and close with consumer-driven contract tests in the producer's pipeline.
At a glance
| When | A consumer broke right after a producer deploy; A promised column or semantic changed, or an SLA was breached |
|---|---|
| Where | Data Contracts |
| Why | A broken contract is a negotiation as much as a bug — bound the blast radius from lineage before deciding who reverts and who adapts. |
Learning objectives
- Classify a breach by clause — schema, semantics, or SLA
- Bound the consumer impact set from lineage before assigning the fix
- Choose between a producer revert and a consumer adaptation
What you need
- The failing consumer's error and the producer's recent deploys
- Lineage for the broken asset
- The contract document with its SLA and breaking-change policy
Steps
- Identify which contract clause broke — schema, semantics, or SLA. (from runbook-data-contract-broken )
- Establish the impact set from lineage before anything else. (from runbook-data-contract-broken )
- Determine if the fix is on the producer (revert) or consumer (adapt). (from runbook-data-contract-broken )
- Schema breach → producer reverts or adds a compatibility shim. (from runbook-data-contract-broken )
- SLA breach → negotiate a temporary relaxation and a root-cause fix. (from runbook-data-contract-broken )
- Add consumer-driven contract tests in the producer's pipeline. (from runbook-data-contract-broken )
Check yourself
- The impact-set query returns every downstream consumer of the broken asset before anyone assigns the fix.
- A consumer that broke right after a producer deploy traces to a rename that changed semantics, and is treated as a breach.
Worked example
Bound the consumer impact set from lineage — from runbook-data-contract-broken
# impact set from lineage
SELECT * FROM lineage WHERE upstream = 'prod.orders' AND direction = 'downstream';
Classify the breach by clause — from runbook-data-contract-broken
- Identify which contract clause broke (schema, semantics, or SLA).
- Establish the impact set from lineage before anything else.
- Determine if the fix is on the producer (revert) or consumer (adapt).
Who fixes it — producer reverts, consumer adapts — from runbook-data-contract-broken
- Schema breach → producer reverts or adds a compatibility shim.
- SLA breach → negotiate a temporary relaxation and a root-cause fix.
Sourced from
Security scan
Last sweep 2026-10-24: 0 finding(s), 0 marked as examples.
Common gotchas
- A rename that changed semantics is still a breach, even when it looks safe.
- SLA misses can come from unrelated outages — root-cause before pointing at the producer.
- Whatever the fix, the consumer impact set comes first, from lineage.
Production considerations
- Contracts get CI enforcement and a dated deprecation path.
- Run consumer-driven contract tests in the producer's pipeline.
Diagram
contract broken
|
|- which clause broke? --> schema / semantics / SLA
|
|- impact set from lineage --> consumers listed first
|
|- schema breach --> producer reverts or adds a compatibility shim
|
|- SLA breach --> temporary relaxation --> root-cause fix
Registry stats
| Verification | community · Oct 21, 2026 |
|---|---|
| Completeness | 81 |
| Trust multiplier | ×1.25 |
| Composite | 34.15 · adequate |
| Freshness | 3 days since last source check |
| Difficulty | intermediate |
| Version | 0.1.0 |
| License | CC-BY-4.0 |
| Security flags | none |
Did this solve your problem?
Respond when a data contract breaks