Why migrations fail
Layout is trivial. Behavior is where systems break.
Most migration tools validate structure. Very few validate execution. That is where production failures happen.
Calculation logic diverges
Totals and formulas silently produce different outputs after migration.
Grouping order changes
Reordered evaluation phases alter grouping semantics without visual warning.
Filters execute differently
Selection logic can shift across runtime phases and change the final dataset.
Null-handling semantics shift
Edge-case behaviour changes silently and only appears under production data.
Shared expressions lose context
Evaluation dependencies are broken when runtime state is flattened into structure-only output.
These are not layout issues. They are semantic drift failures.