FlowDrop Workflow Specification 1.0-draft

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

Normative: this is the rule
  1. Every one of JSON Schema's seven type words derives a lane, and both null and an absent type resolve to the sink lane mixed.
  2. Derivation never falls back to string.
  3. 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.
  4. 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:

A type word nothing declaressink
"no_such_type"
The type word nullsink
"null"

Either way the lane derived is mixed, never string.

Rule identifiers are permanent and are never renumbered. Each implementation publishes its own standing against these rules; this specification does not.spec 1.0-draft · SCH-35 · changed in spec 1.0