A cron entry that had been failing silently for six weeks, and a timer that would have said so.
# turkerdev-import.timer
[Timer]
OnCalendar=*-*-* 02:00:00
RandomizedDelaySec=300
Persistent=true
# turkerdev-import.service
[Service]
Type=oneshot
ExecStart=/srv/app/current/artisan import:supplier
User=www-data
Persistent=true runs a missed occurrence after a reboot, which cron cannot do and which is why the import had skipped a day nobody noticed. The status is also queryable — systemctl list-timers shows the last run and the next — where a cron entry’s only record is whatever it happened to write to a log. The randomised delay is for the case where four hosts all fire at 02:00 against one supplier.