> ...idempotent, or at least stateless...
Even for a Makefile, "start", "test", "install" are likely to be phony (and not literally refer to files with those names).
The execution of a "start" task defers the role of "has it already been done" to other places.
One way of describing "task runner" is "nicer UX for .phony targets".