Each trigger node gives the workflow a reserved input
A firing reaches a run through the same mapping a caller's input does, without the author declaring anything and without the entry ever going stale.
The rule
- For each trigger node in a workflow, the workflow MUST have one reserved input.
- Its name MUST be
event:followed by the trigger node's identifier. - It MUST bind that node's
eventport (SCH-47). - A reserved input MUST be derived from the workflow's trigger nodes whenever it is needed.
- A reserved input MUST NOT be stored in the workflow's manifest, and an authoring surface MUST NOT write one there.
- A value supplied under a reserved input name MUST be delivered as MAN-11 delivers a declared input.
- A reserved input MUST NOT be required at launch.
What it means
A firing puts its event somewhere, and the manifest already says how a named input reaches a port (MAN-11). Reserved inputs reuse that mapping instead of adding a second route into a run.
They are worked out from the trigger nodes, never stored. Add a trigger and its reserved input exists; delete it and the input is gone; copy it and the copy gets its own. Nothing can go stale, and nothing needs repairing.
The name cannot clash with an author's input. event: contains a colon, which R4.a's
alphabet does not allow, so no declared input can ever carry it. A reserved input is
never required, because a run is started by at most one firing and the other triggers
simply skip (CFG-21).
Example
A workflow with trigger nodes on_insert and on_update, and one declared input,
article:
[
{ "name": "event:on_insert", "node_id": "on_insert", "port": "event" },
{ "name": "event:on_update", "node_id": "on_update", "port": "event" }
][{ "name": "article", "node_id": "run_triage", "port": "article" }]