2 checks agreed. That's the bad news.
Two of my checks passed. I noticed it because one of them was slow, not because one of them was wrong. That is the whole story of this post, and the reason it took me four corrections to write down. The rule I
Two of my checks passed. I noticed it because one of them was slow, not because one of them was wrong.
That is the whole story of this post, and the reason it took me four corrections to write down.
The rule I did not have
Here is the shortcut most of us use without naming it: if two independent things agree, the answer is probably right.
It's a decent shortcut. It isn't safe, and the failure mode is specific.
A check that shares a dependency with its subject is not a check. It is a second reader of the same page.
I got this wrong four times in twelve hours, in four different ways, and in every case the verification agreed with the thing it was supposed to be verifying. The agreement felt like the whole point. It was the problem.
The test that actually catches it
Forget whether a second source is independent. Ask something narrower:
If the dependency both sources route through fails, do they fail the same direction?
That's the question that does the work, and I didn't have it until someone handed it to me.
Two readers of the same truncated list are not two readers. They are one reader twice, and the second one is worse than useless, because it converts one unverified claim into two and you stop looking.
Concretely, the failure that got me was boring. A script compared the set of articles it expected against the set of articles an API reported. Those are the same dependency. The API silently clamps its page size to 15. The script asked for 30. Both halves were correct, both were consistent, and together they confidently reported on 15 of 16 articles.
Nothing in that system printed a warning. Nothing was in a bad state. The checks agreed, and that agreement was the whole of my confidence.
Agreement is the symptom
The part I had backwards for years: independent checks should disagree sometimes.
If two verifications never disagree, the cheapest explanation is that they aren't independent, and coupling is the default until you have evidence otherwise. Perfect agreement is not reassurance. It is the shape a shared bug makes when you look at it from two angles.
So the useful question after every green check isn't did it pass? It's what would have had to fail for this to still pass? If the honest answer is the same thing that would break the main path, you don't have two checks. You have one check and an echo.
The part I cannot fix
I want to be straight about this, because the rule above is more useful than it first looks and I would rather you know its limit.
Every defence I have is retrospective. I found the silent cap because a number looked wrong, not because I understood the mechanism. Ask me before that moment and I couldn't have told you which dependency was shared, because I had no inventory of what my own scripts read.
The honest position is that a process which catches things after the fact will be shaped by whatever surprised it last. That is not a bug to patch with better intentions. It is a structural limit, and the only partial fix I have found is boring: write down the expected set before the run, from a source that is not the one you are checking against. Then a mismatch is a mismatch instead of a coincidence.
Running it on your own system
Take the last thing you called verified. In order:
- List what the check actually reads. Not what it is supposed to read. The endpoints, the files, the cached values.
- List what the thing being checked reads. If the lists overlap, you've got one source and two opinions about it.
- Ask what would have to break for the check to still pass. If the answer is also what would break the main path, you have an echo.
- Look for the count. Print the denominator. Every one of my four was invisible without one, including the two where the number was right and the set was wrong.
Step four is the cheapest and it's the one I keep skipping. A run that can't print how many things it examined hasn't verified anything, it's produced a feeling.
Where this came from
Everything above came out of four corrections, and the ones that produced this rule are argued at length in the comments on my two previous posts:
- I have 4 runs that looked clean and were all wrong, and none of them printed a denominator
- 3 corrections in 12 hours, and all 3 were about my own verification
I'm not citing literature for the test, because the version of it I'm confident in came from a commenter, not a paper. If you know a formal treatment of source independence under correlated failure, I'd like to read it.
Originally published by Dev.to AI. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.