A control port declares its lane, never a schema type
The rule
Normative: this is the rule
trigger,toolandloop_backcarry no value, so no JSON Schema type describes them.- A control port declares
x-data-typeand notype, and a reserved-port injection assigns the lane by the port's role rather than deriving it. - Control lanes remain full members of the lane vocabulary; what is forbidden is spelling one in
type. - A lane that carries no value is not offered as a dynamic port type and is not on the list of lanes an author may pick.
What it means
Writing a control lane's own name into type does not declare that kind of
port. trigger and tool are lanes, not JSON Schema words, so a property
that spells one there is judged by the same derivation as any other
unrecognised word: it falls to the data sink, mixed, not to the control
lane the author meant. The lane still exists — it is simply reached through
x-data-type, never through type.
Example
"trigger""tool"Neither spelling produces the control port it names; both produce an ordinary, unconstrained data port.
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-37 · changed in spec 1.0