Coerces one argument value toward its schema, recursively.
Models follow a declared type most of the time, but sometimes send an object as JSON text, a
number as "10", or a boolean as "true" — and an Action expecting the real type receives text.
A string is converted only when the schema does NOT allow strings and the text unambiguously
encodes an allowed type; anything else is returned unchanged. A value that still does not fit is
the Action's to reject with its own message rather than ours to guess at.
Coerces one argument value toward its schema, recursively.
Models follow a declared type most of the time, but sometimes send an object as JSON text, a number as
"10", or a boolean as"true"— and an Action expecting the real type receives text. A string is converted only when the schema does NOT allow strings and the text unambiguously encodes an allowed type; anything else is returned unchanged. A value that still does not fit is the Action's to reject with its own message rather than ours to guess at.