Skip to content

Commit 3d81f43

Browse files
d-morrisonclaude
andauthored
ums(verify-the-right-artifact): a reviewer's own counter-measurement is a claim too (#3468)
* ums(verify-the-right-artifact): a reviewer's own counter-measurement is a claim too Measured 2026-09-09 driving d-morrison/macros#87: an adversarial-reviewer subagent filed a factual-error finding against a commit message's verification claim ("verified through `pandoc -t latex`"). The reviewer's own counter-test appended `\v0 \v1 \v{x}` to a document with NO macro definitions, observed pandoc pass every token through unexpanded, and concluded pandoc never expands TeX macros in math mode -- so the original claim could not possibly have discriminated a working macro file from a broken one. The reviewer's measurement was real and its reasoning from it was valid. It omitted a precondition: pandoc's `latex_macros` extension only expands macros defined in the same document, so the reviewer tested the null case and read it as the general case. Re-measuring with the precondition restored produces the actual discriminator (a three-row table), which is now embedded in the fix's own PR body. Adds a new section to verify-the-right-artifact.md making two points: (1) `dont-take-my-word-for-it` applies to reviewers, not just to humans and documents -- an accepted or rebutted finding both require re-measuring; (2) the fix for a vague verification claim is to put the discriminating measurement, including the null row, into the durable artifact rather than arguing it out in a PR comment where it dies with the thread. Cross-links from dont-take-my-word-for-it.md's AI-to-AI hallucination-loop bullet. Closes #3467 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * fix: semantic line breaks Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * ums: fix table cell, redundancy framing, and Do/Don't pairing Addresses adversarial-reviewer findings on the prior commit: - The 'no definitions present' row's \v{x} cell was wrong (claimed absent; independently re-verified against d-morrison/macros#87's actual branches with quarto pandoc -t latex: it passes through unexpanded like \v0, matching the other two rows). - Reframed the section's opening: it is a plain artifact substitution (shape 1), not an instance of the immediately preceding "scoped narrower" section, and says so explicitly instead of using "identical substitution" ambiguously right after that section. - Restructured the Do/Don't list into three matched pattern/anti-pattern pairs per CLAUDE.md's pairing convention (was 3 Do / 2 Don't). - Moved the dont-take-my-word-for-it.md cross-link from the "AI-to-AI hallucination loops" bullet (about ungrounded claims) to "The illusion of prior verification" (about false confidence from a real signal), which fits the reviewer's-own-counter-test case better. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * ums: drop imprecise shape-1 label, restore untouched bullet's line wrap Addresses second-round adversarial-reviewer findings: - 'shape 1' (cached/stale copy) doesn't fit a document that never had the precondition rather than one that is merely stale; drop the specific number and just say it's the same kind of substitution the four shapes describe, without forcing it into one of them. - The AI-to-AI-hallucination-loops bullet's line wrapping was incidentally flattened by the sembr tool while editing the adjacent bullet, though its wording didn't change; restored its original 4-line wrap per semantic-line-breaks.md's preserve-existing-breaks rule. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * ums: wrap the two new sentences to match the file's sibling bullets Third-round adversarial-reviewer finding: the two new sentences added to dont-take-my-word-for-it.md's "illusion of prior verification" bullet were left as single unwrapped lines (438 and 263 chars) while every sibling bullet in the same list wraps at ~80 chars per semantic-line-breaks.md -- an inconsistency within one bullet list, distinct from verify-the-right-artifact.md's already-common long single-sentence lines elsewhere in that file, which needed no change. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
1 parent 9e783de commit 3d81f43

2 files changed

Lines changed: 62 additions & 0 deletions

File tree

shared/principles/dont-take-my-word-for-it.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,17 @@ Several cognitive and structural pressures drive it:
2828
embedded in a convention document, brief, or issue body, it creates the false
2929
impression that someone has already verified it.
3030
Often, the author merely remembered or inherited the claim unchecked.
31+
A **reviewer's own counter-test** creates the identical illusion from the
32+
other side: a real command that genuinely ran feels categorically more
33+
solid than an argument, so the claim built on it inherits a confidence the
34+
command's actual scope does not license --- see
35+
[`verify-the-right-artifact`](../workflow/verify-the-right-artifact.md)'s
36+
"A reviewer's counter-measurement needs the same check the claim it rebuts
37+
would have needed".
38+
A reviewer's finding is a claim too, not an audit result exempt from
39+
re-derivation: accepting *or* rebutting a finding both require
40+
re-measuring, and "the reviewer ran a command" is not the same as "the
41+
reviewer ran the command that could show the claim false".
3142
- **AI-to-AI hallucination loops.**
3243
AI subagents and peer models generate plausible, fluently phrased claims that
3344
may have no grounding in the repository.

shared/workflow/verify-the-right-artifact.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,57 @@ the fix here is a stricter version of the same falsifying-question test, aimed a
411411
The Pandoc-bypass and the empty-submodule-baseline are also written up in that PR's own thread and in d-morrison/rme#1154's "Two instrument traps" section;
412412
the bypass produced a wrong "fix" and two issues filed on the false "math does not compile" premise, one of them d-morrison/macros#85, closed not-planned once the Pandoc-expansion mistake was found.)
413413

414+
## A reviewer's counter-measurement needs the same check the claim it rebuts would have needed
415+
416+
The section above is about the same artifact measured at a narrower scope than the claim names.
417+
This one is a plain substitution, the kind the four shapes above describe --- a different document standing in for the one the claim is about --- and it is worth its own entry only because of *who* commits it: a **reviewer** refuting someone else's claim rather than an author supporting their own.
418+
That is easy to miss, because a rebuttal reads as skepticism rather than as an assertion --- "I tested this and it isn't true" sounds like diligence applied, not like a new claim that itself owes [`dont-take-my-word-for-it`](../principles/dont-take-my-word-for-it.md).
419+
A finding backed by a real command is not thereby a finding backed by the *right* command, and nothing about the reviewer's own confidence distinguishes the two.
420+
421+
A commit fixing a broken macro (`\def\v0`/`\def\v1` silently overriding `\renewcommand{\v}`) said only that it was "verified through `pandoc -t latex`" --- true, and unfalsifiable-looking to a reader with no further detail.
422+
An `adversarial-reviewer` subagent, dispatched to check the fix, ran its own counter-test: appended `\v0` `\v1` `\v{x}` to a document containing **no macro definitions**, ran it through `quarto pandoc -t latex`, and observed every token pass through unexpanded.
423+
From that it concluded pandoc does not expand TeX macros in math mode at all, so the stated verification could not possibly have discriminated a working macro file from a broken one --- and filed the fix's claim as unsubstantiated.
424+
425+
The reasoning was valid.
426+
The measurement was real.
427+
Both were about the wrong case: pandoc's `latex_macros` extension expands a macro only when it is **defined in the same document**, which the reviewer's test document was not.
428+
Testing an empty document to ask "does pandoc expand macros" is the null case, indistinguishable in outcome whether the extension works or the extension is entirely absent --- [`fail-fast`](../principles/fail-fast.md)'s denominator move again: a test whose passing and failing readings look identical has not tested anything.
429+
Re-running with the precondition restored (a document that actually defines `\v`) produces the discriminator the claim needed:
430+
431+
| | `\v0` | `\v1` | `\v{x}` |
432+
| --- | --- | --- | --- |
433+
| no definitions present | `\v0` | `\v1` | `\v{x}` |
434+
| `macros.qmd` before the fix | `\v0` | `\tilde{1}` | `\v{x}` |
435+
| `macros.qmd` after the fix | `\tilde{0}` | `\tilde{1}` | `\tilde{x}` |
436+
437+
The reviewer had measured the top row and read it as the whole truth table.
438+
The middle row is the bug's actual signature --- only `\v1` expands, because a delimited `\def\v1` survived as the last definition of `\v` --- and the bottom row is the fix.
439+
Nothing in the reviewer's transcript was fabricated;
440+
the precondition the original claim depended on was simply never in the reviewer's own test.
441+
442+
**Two things follow, and both are needed --- one about re-measuring a finding, one about where the fix belongs.**
443+
444+
First: a rebuttal is a claim like any other, so the *rebutter* re-measures before publishing it, not only the party being rebutted.
445+
[`address-every-comment`](address-every-comment.md)'s Rebut disposition already lets an author push back on a reviewer's finding;
446+
the mirror obligation belongs to the reviewer before the finding is filed --- confirm the counter-test actually carries the precondition the original claim relied on, not merely a test that superficially exercises the same mechanism.
447+
448+
Second: the fix is not to win the rebuttal in a PR comment where it dies with the thread.
449+
The original message's vagueness --- "verified through `pandoc -t latex`", true and giving the reader nothing to check --- is what invited a plausible wrong finding in the first place.
450+
Amending the commit message to carry the three-row table above did both jobs at once: it rebutted the finding, and it left the next reader (human or reviewer) unable to repeat the reviewer's mistake, because the null row sits right next to the two rows that discriminate.
451+
A durable artifact that states its own discriminator is [`quotable-findings`](quotable-findings.md)'s standard turned around --- a claim that names the exact measurement that would falsify it is the one nobody can plausibly misread.
452+
453+
- **Do:** treat a reviewer's own counter-test as a claim requiring the same re-derivation any other claim does, whichever side of the finding you are on.
454+
- **Don't:** read "the reviewer ran a command" as equivalent to "the reviewer ran the command that could have shown the claim false" --- a command that cannot exhibit the failure mode has not tested the claim, however real its output is.
455+
- **Do:** when rebutting a finding, name the precondition the original claim relied on and confirm the counter-test carried it.
456+
- **Don't:** rebut by re-asserting the original claim against the counter-test's bare output;
457+
that answers confidence with confidence and settles nothing --- name the specific precondition the counter-test dropped.
458+
- **Do:** write the discriminating measurement --- including the null case that shows what a non-discriminating test looks like --- into the durable artifact (commit message, PR body) rather than only into a comment thread.
459+
- **Don't:** leave a verification claim as a bare tool invocation ("verified through X") with no stated discriminator;
460+
that vagueness is what makes a plausible-but-wrong counter-finding possible in the first place.
461+
462+
(Measured 2026-09-09 on d-morrison/macros#87: the reviewer's counter-test and its null-case conclusion are the measured half;
463+
the general rule that a rebuttal is itself a claim requiring re-derivation, and that the fix belongs in the durable artifact rather than a comment, is the inferred half, extending [`address-every-comment`](address-every-comment.md)'s Rebut disposition to the reviewer's own side of it.)
464+
414465
## A summary is another shape, and the auto-loaded copy is the one you read
415466

416467
[`fact-check-prose`](../writing/fact-check-prose.md)'s "any condensation

0 commit comments

Comments
 (0)