In Julep, a @flow body runs once at define time to build a graph, so the values you handle are Handles, not data. A step call appends graph structure; it does not execute and does not return a real value you can branch on. So Python if, for, equality, and attribute access on handles fail at define time. Express control flow with graph constructs instead: register a predicate with @pure and use cond(predicate, handle, then=branch_a, orelse=branch_b). Anything that needs a runtime value, like looping over data or inspecting a result, belongs inside a @tool, @pure, or reasoner handler, not in the flow body.

Context: I am writing a Julep flow and my Python if statement on a step result fails at define time with a Handle truthiness error. I expected the step to return real data I can branch on. What am I doing wrong?