Dual-Reading Gap Verdict¶
Source: SPEC-138 (architecture-as-theory evaluation), review finding RES-7 → the §3.2a fix.
Problem¶
An adoption/gap evaluation is expected to end in a binary verdict (FR-4: "gap exists / does
not exist") and a single recommendation (Adopt / Defer / Not needed). But the requirement
that defines the gap is often phrased in a way that admits more than one reading, and those
readings do not merely shade the answer — they reverse it:
- Literal / singular reading — "is there one artifact that is the role's home?" If every candidate artifact is individually ruled out, the answer is no, the toolkit does not have it → gap = YES → the natural verdict tilts Adopt.
- Union-coverage reading — "do the existing artifacts, taken together, already cover the role?" If a combination covers it, there is no hard gap → the natural verdict tilts Defer / Not needed.
The failure mode: the evaluation picks one reading implicitly (usually the one that matches the conclusion the author already leans toward — here, Defer, which is cheapest for a single maintainer), states a confident binary verdict, and never tells the reader the verdict would flip under the other reading. The reasoning looks rigorous but has smuggled the conclusion in through an unstated choice of test.
Solution¶
When a gap verdict is reading-dependent, make the reading the load-bearing decision and expose it, rather than hiding it inside a confident-sounding binary:
- Detect the fork. If you can phrase the requirement two ways and get two different binary answers, you have a dual-reading verdict. Splitting a "partial" axis into two clean sub-axes (fully-covered slice vs uncovered slice) is a good detector — a lone "partial" is usually two questions averaged into one.
- State the verdict under BOTH readings, explicitly, side by side. ("Under Reading A: gap YES → Adopt. Under Reading B: no hard gap → Defer.")
- Name the adopted test and say it is outcome-determining. Don't just assert Reading B — say "this evaluation adopts the union-coverage reading, and that choice is what produces Defer over Adopt," with the justification for the choice.
- Tell the ratifier how to override. "A reader who holds Reading A should read this as recommending Adopt; the underlying facts are unchanged, only the test differs." The verdict is then honest about being conditional on a judgement the ratifier is allowed to make differently.
Why it works / prevention¶
- A binary verdict that is actually reading-conditional is a false binary. Surfacing the fork converts a hidden assumption into an auditable decision — the single highest-leverage transparency move in an evaluation whose recommendation is offered for ratification rather than enacted.
- It defuses the most likely re-litigation: the reviewer who "reads it the other way" now finds their reading already acknowledged and answered, instead of treating the omission as a flaw.
- Pairs with the reflexivity check (flag when the load-bearing argument favors the party who authored it) and the proportionality gate ([[proportionality-gated-guidance-mapping]]): those keep the chosen reading honest; this keeps the choice of reading honest.
Where it applies in this toolkit¶
Any skill that emits an adoption/gap verdict on external tech or patterns:
/vt-c-content-evaluate, /vt-c-pov, /vt-c-repo-evaluate, and future research-first
evaluation specs. Whenever the "is there a gap?" question hinges on singular canonical artifact
vs union of existing artifacts — or more generally on any requirement word that can be read two
ways — return the verdict under both readings.