GR-VAL
40 rules. Part I of the specification.
- R5.aA workflow is bounded to 500 nodes
- R5.bA workflow is bounded to 1000 edges
- R5.cEvery node carries an id
- R1.aA node's executor must exist
- R1.bA node with no resolvable node type is not judged by R1
- R1.cA missing executor is reported once per node
- R6.bRequired config keys must be present
- R6.cAn unknown config key warns but does not block
- R6.dA config value must match its declared type
- R6.eA config value must be one of its enumerated values
- R6.fNumeric bounds apply to numbers only
- R6.gLength bounds count characters, never bytes
- R6.hA pattern mismatch is refused, a broken pattern is not
- R6.iA null config value means unset
- R6.jNo node type, no schema-driven config verdict
- R6.lA malformed secret reference warns the author
- R6.kThere is no separate per-executor config verdict
- R8.aAn edge's source node must exist
- R8.bAn edge's target node must exist
- R8.cTwo dangling endpoints are two errors
- R7.aAn edge may not target a hidden input port
- R7.bAn edge may not leave a hidden output port
- R7.cA node instance decides which of its ports are exposed
- R7.dA port the node type does not declare is outside exposure checking
- R7.e/fExposure checking is skipped per endpoint, not per edge
- R4.aAn exposed workflow port must be named in the permitted alphabet
- R4.bExposure names are unique per side
- R4.cAn exposure entry must name a node that exists
- R4.dAn exposure entry must name a port the node declares
- R4.eAn exposure name may not collide with a reserved runtime name
- W-TAn edge leaving a terminal node warns
- VAL-LAUNCHThe validator runs again at launch, before anything is created
- R2Node ids are unique within a workflow
- R3Every edge carries a unique id
- R9A node's node type anchor must resolve
- R10A workflow may not expose a port hidden on its node
- R11A configured expression must be valid for its engine at save
- R12A node may not be wired to itself
- R13Two identical edges between the same ports are refused
- R6.aConfig is a JSON object