DE//AGENT
Explore
Tutorial Lesson 8 of 10 · The Data Quality Series community intermediate

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

  1. Identify which contract clause broke — schema, semantics, or SLA. (from runbook-data-contract-broken )
  2. Establish the impact set from lineage before anything else. (from runbook-data-contract-broken )
  3. Determine if the fix is on the producer (revert) or consumer (adapt). (from runbook-data-contract-broken )
  4. Schema breach → producer reverts or adds a compatibility shim. (from runbook-data-contract-broken )
  5. SLA breach → negotiate a temporary relaxation and a root-cause fix. (from runbook-data-contract-broken )
  6. 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