We tried to keep things simple, so our runner utility class is currently stateless.
However, it's highly extensible, and we can support stateful logic if we wanted to. For instance, we have a cool concept called "Policy" in our SDKs, which is basically a user-defined callback function that is run after each runner step (see our docs for more info). You can build some pretty advanced use cases with this, e.g. executing conditional database calls on a per-step basis.
The code for the runner is open source, in case you wanted to check out how we did it: https://github.com/dedalus-labs/dedalus-sdk-python/blob/main...