Check and throw
What a boundary looks like
External data is parsed once, where it enters. A missing field is a thrown error with a message that names what was missing, not a default that travels inward and surfaces three layers later.
Downstream code then takes the typed value and never re-checks it.