Runs outlive the request
run() persists, enqueues and returns in milliseconds. The model call happens somewhere else, later, in a worker that can die and resume from the last committed step.
Not an agent framework. It owns the lifecycle of a run — that it outlives the request that started it, survives a worker dying mid-step, can be stopped, parked for a human, resumed exactly where it stopped, nested, metered, and watched by several people at once.