Lane derivation is total, and an undeclared port is the sink
"What does an undeclared port mean?" once had seven disagreeing answers. It has one: the sink.
The rule
- Every one of JSON Schema's seven type words derives a lane, and both
nulland an absenttyperesolve to the sink lanemixed. - Derivation never falls back to
string. - Every reader of a port's lane gives the same answer: the derivation itself, the served default lane, the projection of a workflow's interface, and an editor's own default alike.
- Because an undeclared port is the sink rather than a string, a caller may supply any JSON value to it, an array or null included.
What it means
An undeclared or unrecognised property does not default to string. It lands
on the sink lane, mixed, and a caller may then supply any JSON value there —
an array or a null included. This matters because string is the more
familiar default in most typing systems, and a reader carrying that
assumption over would expect an unconstrained port to still refuse a
structured value.
null gets the same answer as an unrecognised word, even though it is one of
JSON Schema's own seven type words: a property that only ever holds null
constrains nothing worth colouring, so it resolves to the sink rather than to
a lane of its own.
Example
Two declared type words handed to the derivation — one nothing recognises,
one JSON Schema's own null:
"no_such_type""null"Either way the lane derived is mixed, never string.