01 / Contract review
Name the baseline and candidate correctly
The baseline is the contract existing consumers already use; the candidate is the proposed replacement. That direction matters because removing an operation or narrowing an accepted value has a different compatibility effect from adding one.
Keep the source versions available during review. A rule match is evidence for a release decision, not a substitute for understanding the affected consumer workflow.
02 / Contract review
Separate likely breaks from context-dependent changes
Review removed or newly required contract elements first, then examine changes whose effect depends on consumer behavior or runtime semantics. Compatible additions still deserve review when undocumented behavior or custom validation exists.
The comparison describes the contract it can parse. Runtime behavior, server implementation, and undocumented expectations remain outside that evidence.
- Start with removed paths, operations, parameters, properties, and enum values.
- Review new requirements and narrower types.
- Treat semantic behavior as a human review boundary.
03 / Contract review
Fail a CI job only on breaking changes
With Pro on Windows, run diff-anything --cli --mode api --fail-on breaking, or set failOn: breaking for a case in a batch manifest. Identical or equivalent schemas pass, non-breaking changes are allowed, and the job fails on breaking changes and on changes the rules could not classify. JUnit and SARIF output list each finding with its rule code, such as API001 for a removed operation.
The rules are heuristic: $ref is compared as written rather than resolved, request and response schemas are treated alike, and some breaking changes are not classified, such as a removed components entry, a renamed or relocated parameter, or added additionalProperties: false. Treat a passing check as a first gate, not proof of compatibility, and keep the same baseline direction locally and in CI.