Post

The main idea is that every schema language it supports translates into one common graph format.

0 reposts0 likes

That means you can hand it two versions of a schema in any of the languages it supports, and it'll computes the diff, classify whether the change is breaking, and generate a converter that turns old records into new ones.

What's even better is that adding support for a new schema language just involves writing a description of it. Nothing about the underlying engine needs to change.

The generated converter goes both directions. The forward direction turns an old record into a new one; the backward direction converts it back, recovering whatever the forward path dropped (if anything) via a side channel called a complement.

You can also ask what changed without generating a migration. Panproto classifies each diff entry as breaking or non-breaking, using the rules of the specific schema language. This classification can be run from the panproto CLI in CI to gate PRs that touch a schema before they reach review.