Show all changes between current specs and their last versioned snapshots, classified by severity. Unlike breaking, this command always exits 0 and is meant for understanding changes, not gating CI.
contractual diff runs the same structural comparison as breaking. It compares each registered contract against its last versioned snapshot and classifies every change as:
breaking: would require a major version bump
non-breaking: would require a minor version bump
patch: backward-compatible fix
The key difference: diff reports all changes and always exits 0. It’s informational, not a gate.
$ contractual diff
orders-api: 3 changes (2 breaking, 1 non-breaking) — suggested bump: major
BREAKING Removed endpoint GET /orders/{id}/details
BREAKING Changed type of field 'amount': string → number
non-breaking Added optional field 'tracking_url'
order-schema: no changes
$ contractual diff --severity breaking
orders-api: 2 breaking changes — suggested bump: major
BREAKING Removed endpoint GET /orders/{id}/details
BREAKING Changed type of field 'amount': string → number
order-schema: no changes