cron-aware-watchdoglisted
Install: claude install-skill DomenicMoran/verified-done
# A watchdog needs to know the schedule
The tempting health check is "no execution in N hours means broken". It is
wrong for every job that does not run continuously.
A Monday-to-Friday job is legitimately silent for 60 hours every weekend. A
monthly job is silent for weeks. A blanket rule flags both, and if the watchdog
also repairs what it flags, it will restart healthy systems on a schedule of
its own.
## Ask when the job was actually due
Compute the previous fire time from the job's own schedule expression and the
zone the scheduler runs in. Compare the last execution against that, not
against a fixed window.
```
faellig = vorheriger_ausloesezeitpunkt(cron, zone, jetzt)
if letzte_ausfuehrung < faellig - toleranz: -> wirklich verpasst
else: -> gesund, nur still
```
Two details that produce false alarms on their own:
- **Zones.** Schedulers commonly run in a local zone while their API reports
execution times in UTC. Compare like with like, and get the current time
from a tool rather than assuming.
- **Tolerance.** A job that fires at :00 and takes four minutes has not missed
its slot at :03. Give the comparison a margin.
## Auto-repair needs three guard rails
A watchdog that repairs what it flags will eventually repair something healthy.
Before wiring any automatic action:
1. **Cooldown.** No second intervention on the same target inside a window.
2. **Cap.** A hard maximum of interventions per day. On reaching it, s