cloudflare alarms seem like a decent solution for scheduling. If you want a state machine, you can just use a state machine (xstate).
The durable object primitives are more limited, but therefor seem a little easier to get your head around if you don't need all sorts of complex signalling.
introspection / analytics is obviously a pain to have to deal with yourself. I guess you'd end up saving the state to a database after any action. And you could probably get a reasonable little analytics dashboard fairly painlessly by chucking something like appsmith in front of it?