Unknown-field preservation: two paths
Unknown fields: two paths, two fates
new code adds tag 4 (email) — old code reads, rewrites, new code reads again
PATH A — binary round-trip
proper runtime stores unknown bytes
new writer
tags 1-4
old reader
knows 1-3
write back
bytes untouched
new reader
tag 4 intact
KEPT
no loss
-->
-->
-->
-->
PATH B — JSON convert or field-by-field copy
unknown bytes have nowhere to live
new writer
tags 1-4
old proxy
copies 1-3
fresh record
tag 4 missing
new reader
email gone
LOST
silent drop
-->
-->
-->
-->
wire-compatible is not meaning-preserving: test the runtime AND the conversion path