The Decision Tree
Five places a run can fork, and who decides each one.
There are five places a run can fork. Only one of them is the model's call. The colour on each fork says who decides: runtime for code, model for the model, human for a person.
Runtime. Passes, tokens, dollars, seconds. Checked before every model call. Over the ceiling ends the run with a reason logged, no model call spent.
Model. Four stop reasons in practice: tool_use (loop again), end_turn (exit), max_tokens (reply cut off: you choose to continue or stop), refusal (stop, log).
Human, only on legs you mark as gated (writes, money, sends). Allow, edit the arguments, or deny. A denial goes back to the model as an error message, so the model can plan around it.
Runtime. Wait for every parallel leg. Bundle results and errors as tool_result blocks. Append to context. Go around again.
Runtime. Parse the final answer against the schema. Good: commit. Bad: bounce it back with the parse error in context, up to N retries, then fail the run.
