An exposure entry must name a port the node declares
The rule
- A workflow exposure entry's
portmust be declared by the named node: as an input parameter for an entry on the input side, as an output for one on the output side. - An entry naming an undeclared port is refused at
schema.{side}.{index}. - Where the node's executor cannot be resolved the port cannot be checked, so this check and R10 are skipped for that entry rather than guessed at; the skip is narrower than the entry, and R4.a's name format and R4.b's uniqueness (both decided from the entry alone) are still reported.
What it means
The skip this rule allows is narrower than it sounds. Losing the ability to resolve a node's declared ports only silences this one check and R10; it does not silence R4.a's name-format check or R4.b's uniqueness check, both of which are decided from the entry's own fields and need nothing from the node. An entry can therefore fail on its name at the same time its port check is skipped for want of a resolvable node — one refusal, not a cascade of guesses about a port that was never checked.
Example
An exposure entry naming an unresolvable node, with a name that also fails the format check:
{ "name": "Bad Name", "node_id": "n1", "port": "no_such_port" }["R1_PLUGIN_MISSING", "R4_NAME_FORMAT"]R4_PORT_MISSING does not appear: with no resolvable executor there is no
port list to check the entry's port against, so this check stays silent
while the name-format complaint still reaches the caller.