Is it possible to prevent launchd running a missing task on wake?
shell script wrapper

launchd has no built-in method for limiting tasks that missed their start time. Your idea to use a shell script wrapper to evaluate the desired time and actual time is a reasonable approach.

For Power Manager, we provided a drift duration for exactly this purpose. Drift lets the user state how long after a missed trigger time the event is permitted to run.