Gap
There is no way to ask "did this metadata change break a downstream consumer?"
For a shared model consumed by several teams, this is the difference between a model that can evolve and one nobody dares touch.
What we already have (two-thirds of it)
meta migrate already diffs metadata against a schema snapshot and gates destructive operations behind a closed --allow token vocabulary (drop-column, drop-table, type-change, nullable-to-not-null, …). That is breaking-change detection on the schema axis, with explicit named consent.
meta verify --codegen covers code-vs-metadata drift.
What is missing: metadata-vs-metadata across two revisions, classified by which consumers a change breaks.
Prior art (open source)
Buf compares a working tree against a baseline — including a git ref (buf breaking --against '.git#branch=main') — and classifies breakage into four categories from strictest to most lenient: FILE and PACKAGE (breaks generated source), WIRE and WIRE_JSON (breaks encoded messages). The category is chosen per consumer contract. https://buf.build/docs/breaking/rules/
Direction
Prefer extending the existing --allow token pattern to model-level changes over importing a second, parallel mechanism — it is already the idiom in this codebase and already expresses "named destructive operation requiring explicit consent."
MetaObjects has a differentiator none of the surveyed tools have: because it knows the generated artifacts per port, it can classify a single change as source-breaking in one language, wire-compatible, schema-breaking — Buf cannot, because it only knows protobuf.
Sequencing
Downstream of shared collections actually existing (see #9 and the source-resolution design). Highest enterprise value in the deferred set.
Gap
There is no way to ask "did this metadata change break a downstream consumer?"
For a shared model consumed by several teams, this is the difference between a model that can evolve and one nobody dares touch.
What we already have (two-thirds of it)
meta migratealready diffs metadata against a schema snapshot and gates destructive operations behind a closed--allowtoken vocabulary (drop-column,drop-table,type-change,nullable-to-not-null, …). That is breaking-change detection on the schema axis, with explicit named consent.meta verify --codegencovers code-vs-metadata drift.What is missing: metadata-vs-metadata across two revisions, classified by which consumers a change breaks.
Prior art (open source)
Buf compares a working tree against a baseline — including a git ref (
buf breaking --against '.git#branch=main') — and classifies breakage into four categories from strictest to most lenient:FILEandPACKAGE(breaks generated source),WIREandWIRE_JSON(breaks encoded messages). The category is chosen per consumer contract. https://buf.build/docs/breaking/rules/Direction
Prefer extending the existing
--allowtoken pattern to model-level changes over importing a second, parallel mechanism — it is already the idiom in this codebase and already expresses "named destructive operation requiring explicit consent."MetaObjects has a differentiator none of the surveyed tools have: because it knows the generated artifacts per port, it can classify a single change as source-breaking in one language, wire-compatible, schema-breaking — Buf cannot, because it only knows protobuf.
Sequencing
Downstream of shared collections actually existing (see #9 and the source-resolution design). Highest enterprise value in the deferred set.