Canvas does not properly cast typed data, which results in bad normalization when computing component version hashes
See https://git.drupalcode.org/project/drupal_cms/-/work_items/3591373 for the deep debugging that I did, and all the prior art. The tl;dr, though, is that when computing a component version, props that map to `float` fields can sometimes be normalized as `'value' => '2'`, or `'value' => 2`, which of course results in a totally different hash that cannot validate. To end users (Drupal CMS in particular), it looks like Canvas is just randomly flipping between two different hashes, without any clear pattern or cause. The solution is probably for Canvas to aggressively cast Typed Data values when computing component versions, so that it can be _certain_ they are consistently normalized (and therefore produce reliable version hashes).
issue