Problem
No structured header for weight files — need magic, version, dimensions, flags, checksum seed.
Solution
WeightHeader — 16-byte binary header (magic 0x54325700, version, layers, neurons_per_layer, bits_per_weight, flags, checksum_seed)
- Builder pattern:
WeightHeader::new(layers, neurons).with_checksum_seed(s).with_bits_per_weight(b)
encode() → [u8; 16], decode(&[u8]) → Result<WeightHeader, HeaderError>
- Validation: bad magic, unsupported version, zero dimensions, invalid bits_per_weight
total_weights(), total_weight_bytes(), has_crc(), is_ternary()
- 15 new tests, all pass.
Problem
No structured header for weight files — need magic, version, dimensions, flags, checksum seed.
Solution
WeightHeader— 16-byte binary header (magic 0x54325700, version, layers, neurons_per_layer, bits_per_weight, flags, checksum_seed)WeightHeader::new(layers, neurons).with_checksum_seed(s).with_bits_per_weight(b)encode()→[u8; 16],decode(&[u8])→Result<WeightHeader, HeaderError>total_weights(),total_weight_bytes(),has_crc(),is_ternary()