from Row
Rebuild a MetamodelVersion from a returned node's property map, and check its integrity on the way.
A version's content hash is derived from its structural fields, so the reconstructed object computes its own hash and the contentHash property on the node acts as a checksum. Recomputing it and getting a different answer means the node was written by an older hash format, hand-edited, or corrupted, so this throws and the caller skips it. The stored hash is also half the natural key, so a mismatch also means a re-save of the same content lands on a different node.
Aliases are part of that derivation, at both levels, so a node that dropped either alias field fails here rather than reading back as an alias-free stamp with the wrong hash.