Reserved config-only parameters always carry a default
The rule
Normative: this is the rule
dynamicInputs,dynamicOutputsandbranchesare reserved config-only parameters and are never input ports.- Where a node type opts one in by marking it
configurable, it enters the config schema and always gets a config-defaults entry: the node type's default, else the schema's default, else an empty array. - Such an entry is never omitted and never null, unlike an ordinary configurable parameter, whose entry is omitted when its resolved default is null.
What it means
dynamicInputs, dynamicOutputs and branches behave like any other
configurable parameter for one purpose only: entering the config schema when
the node type opts them in. Their config-defaults entry does not follow the
ordinary rule. An ordinary configurable parameter with no default anywhere is
left out of config defaults entirely; one of these three is never left out and
never recorded as null — with nothing to fall back on, the entry is still
written, as an empty array.
Example
A reserved parameter with no default declared on the declared schema or the node type:
{ "branches": { "type": "array", "title": "Branches" } }[]An ordinary parameter in the same position would have no entry at all.
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-5 · changed in spec 1.0