Wire Encoding
Each field: (field_number << 3 | wire_type) | value
Wire types:
0 — Varint (int32, int64, uint32, bool, enum)
1 — 64-bit fixed (fixed64, double)
2 — Length-delimited (string, bytes, nested message, repeated)
5 — 32-bit fixed (fixed32, float)
Varint encoding: 7 bits per byte, MSB=1 means more bytes follow. Compact for small integers.
Zero values are not encoded: proto3 omits default values from the wire format. This enables forward compatibility (old code skips unknown fields) and compactness.