There's quite a bit of magic hiding under this. For e.g., try creating a NumPy array with different orderings, and the metadata looks the same:
import asdf
import numpy as np
x = np.array([[1, 2], [3, 4]], order="C")
y = np.array([[1, 2], [3, 4]], order="F")
tree = {"x": x, "y": y}
af = asdf.AsdfFile(tree)
af.write_to("example.asdf")
and you get in the metadata no distinction between the two arrays even though things like byteorder are included:
x: !core/ndarray-1.0.0
source: 2
datatype: int64
byteorder: little
shape: [2, 2]
y: !core/ndarray-1.0.0 source: 0
datatype: int64
byteorder: little
shape: [2, 2]
This makes me wonder what it's actually storing - is it actually doing something like pickling the NumPy array?