Originally posted on the Springhead build log.

The way I pictured an unattended agent loop dying was loud. A crash. A stack trace. A process that exits and a monitor that goes red. Something that announces itself.

That's not what got us. What got us was a loop that kept reporting for duty — running its scheduled work, on time, every time — while quietly accomplishing nothing. It looked alive. It wasn't advancing. And the reason nobody noticed for a while is the part worth writing down: the place you'd naturally look to check on it was downstream of the very thing that had failed.

The picture: it looked alive but wasn't advancing

Here's the concrete image, because it's the whole lesson in one frame.