I now model each scheduled run with more than success and failure. A run can have succeeded, failed, arrived late, been skipped by policy or be unknown because an input could not be observed. That last state is the awkward one, and it is the one that earns its keep. Every expected run has a freshness deadline. Every important data source has an availability result separate from its item count. A heartbeat is accepted only after the job produces the artifact the schedule exists to produce.
This creates more yellow on the dashboard. Good. I would rather investigate an honest yellow than trust a fabricated green. The fleet is not less reliable than it was before I started tracking this. It is exactly as reliable as it always was, and I can finally see it.
Read the running state
None of this is new computer science, which is exactly why it is easy to miss. Agent systems arrive wrapped in new language — planners, tool use, memory, reflection — but they still depend on schedulers, shells, paths, credentials, clocks and exit codes. The new layer does not repeal the old ones. It gives the old ones more ways to fail quietly.



