Nice post. I've learnt too many of these the hard way
with inherited formats. In particular, one format lacked
easily identifiable record types so the a record's
subtype may depend on the first field or the first and
second, the length of the second depending on the first...
Other thoughts:
Dependency ordered records, that is parents before
their children.
Count, checksum or hash at the end (I think a
line count gives a false sense of protection from
corruption).
The two points above make file processing more streamable.
Consider specifying character encodings.
Don't be cryptic to save characters, have a plain
text format and zip it.