--- id: LANG-29 family: GR-LANG level: core profiles: [runtime] posture: normative-target added: "1.0" changed: "1.0" source: https://flowdrop.io/spec/rules/gr-lang/lang-29 specification: FlowDrop Workflow Specification 1.0-draft licence: CC BY 4.0 --- # LANG-29 — An expression error fails the node; an empty result does not *GR-LANG (Part I) · level: core · profiles: runtime · added in 1.0* One policy across every node that evaluates an author's expression, so a broken expression is visible and routable rather than silently absorbed. ## The rule > **Normative.** This is the rule. > > 1. An expression error (a path the engine cannot evaluate, a failure raised by the engine) fails the node, and the failure routes to the error edge. > > 2. This holds uniformly across every node that evaluates an author's expression. > > 3. An expression that evaluates cleanly and finds nothing is not an error, so an extractor's default-on-no-match is unaffected. > > 4. Leniency toward genuine errors is only ever an explicit, opt-in node configuration, never the default. ## Why Recorded under OPEN-8. ## Related rules - Names: LANG-21, LANG-22, LANG-24, LANG-25, LANG-26 - Referenced by: LANG-21, LANG-22, LANG-25, LANG-26 --- Rule identifiers are permanent and are never renumbered. This specification carries no implementation status: each implementation publishes its own standing against these rules. Licensed CC BY 4.0.