Old schema vs new schema → an honest compatibility verdict.
What it does. json-schema-compat compares two versions of a JSON Schema and
returns a verdict — compatible, breaking, or needs manual review — with every
detected change listed by JSON-pointer path (/properties/email/type) so you can
point at the exact line in review. The frame is always reader-backward compatibility of
stored documents: a document that validated under the old schema must stay valid under the
new one. That is the right question when you own the writers and worry about stored data —
API request bodies, event payloads, config files, database document validators. Forward
compatibility (old readers against new documents) is a different question and is deliberately
not computed.
A review rail, not a prover. This is a conservative checker: a
“compatible” verdict is only ever produced from flat, covered keywords, and anything
the checker cannot decide with certainty lands in needs review — never silently
assumed safe. Concretely: composition keywords
(allOf/anyOf/oneOf/not/if) are
never composed, so a schema built mostly out of them will come back “review” with
little detail — that is intentional, not a bug. Uncovered keywords
(patternProperties, dependentRequired, …) are flagged by name
rather than ignored.
Honest limits. There is no regex analysis (pattern changes are
always review, even a plainly-widening one), no format semantics (any
format change is review), and external $refs are never fetched —
zero network — so they route to review too. Internal #/… refs
are resolved, so a change to a referenced definition is classified normally.