I'm following the paper: Towards a Unified Behavior Trees Framework for Robot Control and attempting to implement my own behavior tree.  I believe that I have the correct logic working for the main nodes: Sequence, Selector, Condition, and Action, but I'm only allowing nodes to return Success or Failure for now.  Additionally, I'm not sure I understand why you need a Running state.My distillation of the two main branch nodes, Selector and Sequence, is as such:SequenceIterate all childrenStop if child fails or is runningReturn failure or running if depending on childReturn success if all children succeededSelectorIterate all childrenStop if child succeeds or is runningReturn success or running depending on childReturn false if no children were successful or runningTo me, Running is just synonymous to Success or Failure depending on if it is used in a Selector or Sequence respectively.  When does Running actually matter?
Why do we have the running state in behavior trees?
trees