Scenario
A team proposes removing a response field that an older mobile client still reads. The proposed payload is valid JSON and may even validate against a new schema, but consumer compatibility depends on rollout facts outside the sample.
Broken input
{ "account": { "id": "acct_2048", "legacyPlan": "pro", "plan": "pro" } }
Goal
Review a declared contract change from the producer, consumer, and rollout perspectives, preserve the reason codes, and record an override only when the team has evidence outside the JSON samples.
Tool sequence
- Open Toolzy JSON Plan with Current and Proposed samples.
- Declare the removal or deprecation instead of relying on a value diff alone.
- Set the contract context, consumer strictness, and rollout order explicitly.
- Read the producer, consumer, and rollout classifications with their reason codes.
- If you override a classification, write the operational evidence that makes the override safe enough to review.
Checkpoint output
Change: remove $.account.legacyPlan
Producer: compatible only after the old field is intentionally omitted
Consumer: needs review — old clients may still require the field
Rollout: needs review — consumer adoption is unknown
The plan keeps its conservative result and the reviewer’s recorded decision side by side.
Common mistakes
- Calling a removal compatible because a new producer accepts its own output.
- Replacing a reason code with a color-only severity label.
- Assuming tolerant consumers without recording the evidence.
- Hiding unresolved rollout questions in an export summary.
Related tools and lessons
- Toolzy JSON Plan - Keep impact evidence and overrides together.
- Toolzy JSON Compare - Separate value evidence from declared intent.
- JSON Schema Validator / Generator - Validate a sample without claiming real-world compatibility.
- Related lesson: Plan a JSON Contract Change
- Related lesson: Compare JSON Payloads Across Environments
- Related lesson: Verify an Implemented JSON Contract