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?
I do agree that Temporal is heavyweight both in terms of the learning curve and deployment requirements.
For disclosure I’m the Head of Product at Temporaly. We know things can be better and we are working on it.
Without Temporal/Cadence, it's 100+ harder to implement iWF. Even using SWF/Azure durable function is possible to build iWF, Cadence/Temporal is much more powerful than the other two(e.g. no reset workflow, search attributes)