In Flow Core, an Instruction can be understood as a single executable action inside a node. It is not a node itself, but the smallest runtime unit a node uses to perform work.
A Node defines graph-level behavior such as scheduling, input and output flow, Guard handling, busy-state behavior, and BT / FSM / Stack semantics. An Instruction, by contrast, defines what actually happens after execution enters that node.
FlowInstructionEntry, which consists of id + SerializeReference data + enabled + comment. It does not serialize the runtime instruction object directly.IInstruction.ExecuteAsync(FlowContext context), which returns ValueTask<InstructionResult>. This means an instruction can either execute synchronously or wait asynchronously.InstructionData is the editor-side data container. It is responsible for methods such as Clone() and Summary(). The actual execution logic lives in the class that implements IInstruction.InstructionRegistry stores the mapping from id -> factory, GeneratedInstructionRegistry collects the generated entries, and FlowRegistryBootstrap performs the unified registration at startup.FlowRuntimeInstructionBuilder converts the entry list into an IInstruction[]. Disabled entries are skipped, and unregistered ids will produce warnings.IInstruction[] in sequence. InstructionResult then feeds back into node-level control flow, so it does more than simply indicate “success” or “failure.”The meaning of Instruction Result is especially important:
Commonly used instructions are typically general-purpose gameplay or application actions. In most cases, they return Continue and do not directly manipulate Flow Core’s scheduling system.