--- id: SG-2 family: RT-SG level: core profiles: [runtime] posture: normative-target added: "1.0" changed: "1.0" source: https://flowdrop.io/spec/rules/rt-sg/sg-2 specification: FlowDrop Workflow Specification 1.0-draft licence: CC BY 4.0 --- # SG-2 — A node sees run state only where it asks for it, and none of it is persisted *RT-SG (Part II) · level: core · profiles: runtime · added in 1.0* ## The rule > **Normative.** This is the rule. > > 1. Three separate guarantees. > > 2. The runtime input handed to a node carries the reserved internal names `__state__`, `__messages__` and `__data__`, plus `__iterator__` and `__current_item__` whenever the state carries an iterator, and `__interrupt_id__` when the node is being resumed; a node sees one of these only where its own parameter schema declares it, and a declared internal parameter always accepts its runtime value. > > 3. Separately, the live state is handed only to a node type that declares itself state-aware, and never to one that does not. > > 4. And the input recorded against the node's execution has every reserved internal name removed, so no state or interrupt internal is ever persisted, even though the node received it. ## Related rules - Names: SG-1 --- 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.