The behavior abstraction: anything the Arora runtime can tick.
A [Behavior] is the runtime's "what to do each step". The behavior tree is
one (arora-behavior-tree's TreeBehavior); a Vizij node graph is another.
The runtime accepts any of them interchangeably — it just swaps the
interpreter.
Each tick a behavior gets a [BehaviorContext]: the shared
DataStore (read inputs, write intent /
outputs), a CallBridge (so module-calling
behaviors like the behavior tree can reach the engine), and the frame delta.
A behavior uses whichever it needs — a graph reads/writes the store; the tree
drives the caller.