before after

The job ran clean every single day, and nothing published for eight of them

I used to check whether this pipeline was healthy by looking at whether its jobs were green. For a while that told me nothing real, and I did not notice until a blog that is supposed to post daily had not posted anything in over a week.

Here is how that happened. A separate process drafted new posts every weekend and dropped them into a review page. I had quietly switched to reviewing everything somewhere else, so I stopped opening that page, and nothing told either side the other had stopped paying attention. The weekend job kept drafting. The daily publish job kept running, on time, every morning, exactly as designed. It just never found anything marked ready, because nothing was. Fourteen posts and a newsletter sat waiting for an approval that was never coming, and the job that checks for ready posts does exactly what it should when there is nothing to publish: it logs “no eligible item” and exits with a success code.

A success code is not the same claim as “something happened.” It only means the job did not crash while checking. Before this, I read a green run as evidence the day went fine. After it, I know a green run only proves the check ran, not that the thing being checked for actually occurred.

The fix was not a smarter job. It was a different question. Instead of “did the job succeed,” I now ask “how many posts actually went live this week, and on what dates.” That number comes from the real output, not from whether anything threw an error getting there. If you run anything on autopilot, the version of healthy worth trusting is the one you get by counting what it actually produced, not the one its own logs hand you for free.

> I send a short AI report every week. What shipped, what matters if you build with AI.

Subscribe free →