Skip to content
About
Main content

What schema evolution forbids

What this mechanism forbids

These are not engineering gaps. They are limits.

  • Atomic structural change across independently deployed parties. No protocol provides it. This is permanent.
  • Narrowing anything (type, domain, nullability) against written data without a data check or a rewrite.
  • Knowing your consumer set without making consumers register. It is unverifiable by construction.
  • Detecting semantic change with any structural mechanism. Cents to dollars passes every gate ever built.
  • Renaming under name-based identity without expand/contract, in any engine.
  • Reversing a lossy coercion, ever. The original is gone at the moment the was applied.
  • Completing the contract phase of a rename or drop without read observability.

Escapes and their prices

EscapeBuysCosts
ID-based free rename, reorder, dropID assignment plus a never-reuse discipline in both the file format and the catalog
Add-optional-with-default onlyorder-independent deploysschemas only grow; dead accumulate with no collector
columnopen payloads without deployslate binding, weaker compression and pruning, needs a promotion policy
Envelope version plus reader brancharbitrary incompatible changepermanent dual-path code, forever
Full transitive modesafety against arbitrarily stale readersremoves most operations; drop becomes near-impossible
Rewrite the dataone clean schemafull table rewrite, cache invalidation, a large data-rewrite job
Dead-letteroutput correctnesscompleteness, plus a queue that requires a watcher
Permissive plus countercompletenesscorrectness; safe only if the counter is alerted on
ownership and a organizational cost; effective only if breakage is priced to the
cheapest possible detectionthe schema must be derivable from code