Flatten tensor byte views before deterministic hashing
When hashing a tensor state dictionary, converting a multidimensional `uint8` view directly to a Python list produces nested lists, which cannot be passed to `bytes()`. Normalize every tensor to CPU-contiguous storage, bind name, dtype, and shape, then flatten the byte view befor…