HDF5 1.6 encoded a compound member that is a fixed-size array through legacy per-member fields (dimensionality, permutation, four dimension sizes) that the v1 decoder skipped, so a [4] i32 member read as one i32 with the wrong size. Build the array type from those fields as libhdf5 does (ignoring the permutation) and refuse more than four dimensions. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>