The generation split, made unrepresentable rather than tested for
Generation has no Default, and
container_magic() returns [u8; 4] rather than
a u32.
Both are shaped by the bug that caused this repository. A builder
emitted the previous generation's magic because that is what every
published source describes, while the current one had been observed and
recorded in a sibling project that nothing connected it to. Then, fixing
it, the constant went in as 0x5414F5EE - which looks
correct and serialises backwards. Caught only because a test asserted on
written bytes rather than on the constant.
So: a caller cannot omit the generation, and there is no integer to get the wrong way round.