33 tests proved the tool was correct. None asked whether it runs.
Your monitoring tool has 33 tests. Every one of them passes. It has also never executed, not once, and nothing in your project will ever tell you.
Correct, complete, and never started
We built a tool that scans four public sources for conversations where our product belongs. It reads only. It never posts.
The acceptance was thorough. 33 checks in total. No write access, no credentials, results filtered for relevance, duplicates removed. A hard cap on output, back off on HTTP 429, and a dead source must not swallow the other three.
All 33 passed. The tool shipped. The task promised a list of conversations every morning.
There was no schedule. So there was never a list. And a tool that does nothing also reports nothing, so nobody noticed.
Why your test suite cannot see this
Tests answer questions about behaviour. Given this input, does the code do the right thing?
Whether anything ever supplies that input is a different kind of question. It lives in a scheduler, a workflow file, a systemd timer, a queue consumer. Your test suite has no opinion about it.
This is why the gap survives review. Reviewers read the diff, and the diff is correct. The missing part is not in the diff at all.
Note how ordinary the failure is. Nobody was careless. The work was good. It just was not connected to anything.
The question to add to every acceptance
What starts this, and how would I know if it stopped?
Ask it about every tool you ship that is meant to run on its own. A report, a backup, a sync, a scanner, a cleanup job.
It has two halves and both matter. Something must start it. And when it stops starting, that must be visible without anyone going to look.
Make it answerable by a machine
A question you have to remember to ask gets forgotten. So we wrote a guard that asks it for every tool at once.
The rule: any script whose own header says it runs daily must appear in a workflow file that has a schedule. Twelve lines of code, and it covers every tool we will ever add.
The list of daily tools is not maintained by hand. It is derived from the scripts themselves. A hand-maintained list is the same failure one level up, and it drifts the moment somebody forgets to update it.
A tool that genuinely needs no schedule writes the reason into its own file. The guard prints that reason instead of hiding it, so an exemption stays visible to the next reader.
Silence is the part that must change
Our scheduled job now sends a message every single day. Also on the days it finds nothing at all.
That looks like noise until you consider the alternative. A silent run is indistinguishable from a job that no longer exists.
One line a day is a cheap price for that distinction. If you find it annoying, you will notice the day it stops arriving, which is exactly the point.
What it cost to find, and what it costs to prevent
Finding it took an afternoon and a coincidence. Somebody asked what the tool had turned up, and the answer was nothing, ever.
Preventing it takes one guard and one habit. The guard runs on every push and takes under a second.
Write the guard on the day you find the gap. On that day you know exactly what to check for, and a week later you will not.
cachly is a persistent AI Brain for developers — memory shared across Claude Code, Cursor, GitHub Copilot & Windsurf simultaneously. Auto-detects every editor. Bootstraps from your git history. 122 MCP tools. Free tier, EU servers, no credit card.
Your AI is forgetting everything right now.
Every session starts blank. Every bug re-discovered. Every deploy procedure re-explained. cachly fixes that in 30 seconds — your AI remembers every lesson, every fix, every teammate's hard-won knowledge. Forever.