The pattern lives in the return type, not in the work. A periodic process has three structural outcomes: it did something, it had nothing to do, or it could not determine what to do. The first is success with effect. The second is success without effect. The third is a failure dressed as the second. Most polling jobs are written by engineers who only thought about the first two.
The third state shows up at the boundary: when an upstream service is unreachable, when a config the script depends on is malformed, when the precondition that would let the script know its own state is missing. The instinct is to log the failure and continue. Continue with what value? With "no work to do." That sounds harmless. It looks like the success-without-effect case. The wire format is identical. The next observer down the pipe (the dashboard, the cron logs, the on-call rotation, the audit committee) has no way to tell.
The compounding is structural, not careless. Every layer downstream optimizes for the most common case, which is success without effect. Alerting is calibrated to fire on consecutive failures, but unable-to-determine doesn't render as a failure. Dashboards summarize green-or-red, and unable-to-determine renders as green. Reviews look at exceptions, and unable-to-determine isn't an exception. The risk that was supposed to be defended against accumulates outside the visibility of every system that was supposed to catch it.
When the process is a security control (a daily upstream sync, a credential rotation, a backup, a cert renewal, a scanner) the accumulating risk is the bug that control was deployed to prevent. The control is not failing closed. It is failing into the success bucket. The longer the condition holds, the further the system drifts from where it would be if the control were working, and the louder the eventual surprise.