Dynamic inputs require runtime validation despite static types
Network responses, files, environment variables, and user input arrive as values rather than trusted declarations.
Python documentation states that its runtime does not enforce annotations, leaving enforcement to external tools.
TypeScript likewise preserves JavaScript runtime behavior instead of validating incoming data automatically during execution.
Static confidence becomes unsound when unchecked values are asserted, cast, or represented through permissive escape types.
If explicit public contracts define expectations, Parameterized queries separate data from commands illustrates defensive treatment of external values.
Runtime schemas, parsing, range checks, and rejection paths must establish facts before typed application logic proceeds.
Validate at trust boundaries, then let static checking preserve those validated assumptions throughout internal code.