Every doubt-driven-development story so far in this arc starts with a diff. This one starts before there is one. A project running intent-driven development declares each unit of work as a falsifiable intent (a hypothesis with an explicit condition under which it would be disproven) before any code gets written against it. The intent gets adversarially critiqued the same way a diff would. The critique still finds real defects, which is the point: the technique does not require code to have something worth doubting.
The disproof criteria that could not fire
At the start of one planning iteration, three intents were declared and put through a critique pass before any of the three had produced a single commit. All three draft disproof criteria came back defective: the specific condition each one named as “this would prove the hypothesis wrong” turned out, on inspection, to describe a state that could never actually occur, or that the intent’s own design already prevented by construction. A disproof criterion that cannot fire is not a safety margin; it is a hypothesis dressed as falsifiable that is actually unfalsifiable, and every one of the three read that way until the critique forced a rewrite. The same pass caught something smaller but just as concrete: one intent cited a specific file as its supporting evidence, and that file had already been superseded by a different one: a factual error that would have made the intent’s own justification point at the wrong artifact for its entire lifetime if it had shipped uncaught.
All three intents were individually accepted by the project owner only after the rewrite. Nothing about this required a line of implementation code to exist. The defects were in the plan’s own logic, not in anything the plan would eventually produce.
The framing that pre-judged the human
A later iteration closed with a human scoring session, deliberately a human judgment call, not a mechanical pass/fail check. Before that session happened, a cross-model fact-check ran over the preparatory materials at the project owner’s own request. It found real errors: a dropped service the materials had silently omitted, and a framing choice that quietly pre-judged the outcome the human session existed to decide. The materials, in other words, were not neutral inputs to a human judgment call; they were already leaning the judgment call’s answer before the human read a word of them.
Catching that before the session mattered specifically because of what the session was for. A human scoring call that starts from pre-judged framing is not really a human decision anymore; it is a rubber stamp on a decision the materials already made. The fact-check preserved the thing the human session was supposed to provide: an actual, unbiased judgment, made by a person, on materials that gave them a fair shot at disagreeing.
Why this generalizes past code
Both catches happened at a moment the standard code-review mental model has no name for: after a plan exists, before any of its consequences do. The technique that makes doubt-driven-development work on diffs (a reviewer with no investment in the artifact being right, checking claims against reality instead of trusting the author’s framing of them) does not require the artifact to be code. A disproof criterion is a claim. A scoring-session brief is a claim. Both can be checked the same adversarial way a diff can, and in both of these cases, checking early caught a defect that would have been far more expensive to catch after the work it would have misdirected was already done.
The part worth stealing
If your review discipline only ever touches diffs, you are catching defects at the most expensive point to catch them: after the work they misdirect has already happened. Run the same adversarial check on the plan, the intent, or the brief that precedes the work, and expect it to find things, because the two cases here did.
What Next
It Wasn't a Matched-Cast Comparison
A live-model coordination comparison looked decisive, until an independent review asked whether it was actually a fair fight. It wasn't.