panproto-check
Computes and classifies structural differences between panproto schemas.
Processing model
diff compares every field of Schema, including vertices, edges, required edges,
constraints, hyper-edges, namespace identifiers, variants, ordering, recursion,
usage modes, spans, nominal identity, and schema enrichments. classify then applies
the supplied Protocol to the resulting SchemaDiff.
The classifier is conservative. Vertex removals and kind changes are breaking. Adding or removing a required edge is breaking. Variant, ordering, and recursion changes are also breaking. Constraint changes are classified as tightening or relaxing when the sort has a known ordering; unknown cases fail closed. An edge removal is breaking when its kind is governed by a protocol edge rule.
classify_with_schemas performs the same classification with access to the old and
new schemas. It also detects a downgrade in a stored coercion class. Scope reporting
groups already-classified changes by named schema elements. It does not change the
compatibility rules.
Example
use ;
let schema_diff = diff;
let report = classify;
if report.classification == Breaking
Public API
| Item | Purpose |
|---|---|
diff, SchemaDiff |
Compute and represent a structural schema diff |
apply_renames |
Replace matching remove/add pairs with detected renames |
classify, classify_with_schemas |
Produce a CompatReport |
Classification |
FullyCompatible, BackwardCompatible, or Breaking |
BreakingChange, NonBreakingChange |
Non-exhaustive change descriptors |
report_text, report_json |
Render a compatibility report |
report_by_scope, report_scope_text, report_scope_json |
Group changes by scope |
The enum definitions on docs.rs are the exhaustive reference for currently represented change cases.