My site confirms a new post is live by returning a 200. This morning I asked it about a post that does not exist, and it returned a 200 for that too.
The routine had been running for weeks. Publish, curl the URL, wait for the 200, tick, done. So I fed it a page I invented purely so it would fail, and the server handed back a cheerful 200 and the homepage. The site soft-404s. Every wrong address gets waved through like an old regular.
Here is the part worth stealing. The check was not wrong. It was worse than wrong. It could only ever say yes.
Weeks of green ticks that would have looked identical if I had deleted every post on the site. A test with one possible answer is not measuring anything, it is keeping you company.
The same shape turned up again that week. A job board’s API reported a posting as listed while the posting’s own page returned a 404. Single page apps do this all day. The shell loads, the status code is polite, the thing you asked for is not in the building.
The one instrument I now trust is the one I made say no first. I gave it a listing I knew was dead and it came back with “no longer accepting applications”. Then a live one, which came back whole. Both directions, ninety seconds, before a single result was used for anything.
The fix was not a better status code. It was matching the title on the page, and never again trusting a number with no way of disappointing me.
A check that cannot fail is not a check. It is a doorman who nods at everyone, and you find out what he has been letting in on the day you finally go and look.