An edge may not leave a hidden output port
The rule
Normative: this is the rule
An edge whose source port is declared by the source node's node type but is not exposed on that node is refused with R7_EDGE_SOURCE_NOT_EXPOSED at edge.{index}.
What it means
R7.b's "not exposed" is satisfied without any instance ever touching the
port: the error output every executable node carries ships hidden by
default, so an edge leaving it is refused on the type's own default alone,
with no override in play at all. An instance override is one way a port
ends up not exposed; a type default nobody has changed is another, and
R7.b treats them alike (R7.c decides which applies).
Example
The source node's type declares its error output; this instance never
overrides the default that hides it:
{ "id": "e1", "source": "s", "sourceHandle": "s-output-error", "target": "t", "targetHandle": "t-input-value" }{ "code": "R7_EDGE_SOURCE_NOT_EXPOSED", "locator": "edge.0" }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 · R7.b · changed in spec 1.0