Most logic has two values: true and false. A real argument has a third — U, the undetermined: a claim that is neither asserted nor refuted but open. It is the load-bearing 0, the void that is a value, not the lack of one. Its one job: a conclusion drawn over an open or withdrawn premise is itself U — never derived-false. Absence of proof is not proof of absence; falsity is declared, never manufactured by a broken chain. Set the premise below to open and watch the gap do its work.
When p2 is U (open), a two-valued reasoner must guess: force it + and it wrongly justifies the claim (overclaim); force it − and it wrongly orphans it (treats it false). Only the third value holds the claim honestly undetermined. Set p2 to F (withdrawn) and note c1 is U, not F — falsity is never derived.
Strip out U and a checker has only one way to handle "we haven't established this yet": call it false. That's a lie — and the classic hole in naive truth-maintenance. The undetermined is the value that refuses the lie. It propagates: anything resting on an open or withdrawn support comes out U, and F enters only by the author's own hand or by a flat contradiction — never by a snapped chain. The audit it powers can then name three failures precisely: unlicensed (a conclusion the premises don't entail), overclaim (declared true, only U supported), contradiction (P and ¬P both true) — plus the structural ones, dangling supports and circular justification.
The gap is not what's missing from the argument. It's the value that stops the argument from pretending it isn't.
This is rendered from David's inference_overlay — and the truest thing about it is that v3 is v2, audited. The author's own audit caught two failures: it under-credited a claim with multiple justifications (it should be true if any path is all-true), and it silently passed circular reasoning. v3 fixes both, names the cycle, and ships an adversarial self-probe that attacks its own fixtures. The instrument that refuses to overclaim was held to its own standard.