Measured over every Frame_*Asteroid* record on the disc - 384 records, 37518
items (6253 per language pack x 6; the remaining 380 per pack belong to the
seven record-less Alpha frames, the same 57-vs-64 split as before).
slot 0 equals the running index 0..N-1 37518 / 37518, max 587, and the
largest FrameCount is 588, so the last index is N-1
slots 1-4 a unit quaternion 37518 / 37518 within 1e-4 of 1.0
(min 0.999999, max 1.000001)
slot 4 sign of the real part min +0.001, never negative -
canonical w-last, so the order is (x, y, z, w)
slots 5-7 position in metres -163858..+79572, -114308..+76422,
-105224..+110263 - inside the +/-250 km half-extent of
mapmesh_box_500km
len(anonymous fields) == 8 * FrameCount on 384 of 384, zero mismatches.
The unit-norm test is the control: an arbitrary 4-tuple has no reason to sit on
the unit sphere and every one of the 37518 does. Two further cross-checks fell
out - the maximum index is exactly max(FrameCount) - 1, and every position lies
inside the 500 km box the corpus already knows (world unit = 1 metre).
There is no scale slot: an asteroid's size comes from its group's
AsteroidModelName, which is why a group is one model plus one placement list.
Not settled: whether the quaternion is object->world or world->object and its
handedness - a norm test cannot separate those; and why S28_p1 has an asteroid
volume with no definition.
All fifteen artefacts byte-identical.