Skip to content

Give the Necessary walk a unit and Grounded the verification-mechanism rule - #391

Merged
ikuwow merged 3 commits into
mainfrom
settle-the-necessary-walk-unit-and-the-verification-rule-home
Aug 22, 2026
Merged

Give the Necessary walk a unit and Grounded the verification-mechanism rule#391
ikuwow merged 3 commits into
mainfrom
settle-the-necessary-walk-unit-and-the-verification-rule-home

Conversation

@ikuwow

@ikuwow ikuwow commented Aug 22, 2026

Copy link
Copy Markdown
Owner

Purpose

#376 closed with two questions left open, filed as #389 and #390. Both are settled here by the test #376 states for the whole five-property frame: what makes a property bind is which artifact the check reads first and what it holds that read against.

Key changes

  • The Necessary walk states its unit for a heading, a table row, and a line carrying more than one claim, the three shapes left over once Conformant has fixed one item to one line in GitHub-posted markdown (Define the unit the Necessary walk takes #389)
  • The verification-mechanism rule moves from Scoped to Grounded, the property whose read it performs (Decide where the verification-mechanism rule belongs #390)
  • Both properties' lines in the five-property list follow the rule to its new home, and Scoped's names the self-containment rule that clause now has to reach

Notes

Scoped's other rules are decided by reading the diff and holding it against the stated intent or against the account the body gave. The verification-mechanism rule is decided by reading the body alone, since its own sub-bullet makes the test whether the body makes the claim. A section carrying two read directions is what #376 records the property doing under the harness, where "Scoped: 10 of 10 in round 1 resolve it to the changed-file list". Grounded reads the body first and already governs the Verification section in its opening rules. The rule sits after those rules rather than above them, so its coverage-judgement sub-bullet reads as its own qualifier and not as a preamble over the rules that do demand the author attempt what is reachable.

The move's cost is that a finding on that rule is reported under a different property name afterwards, which is the cost #382 weighed against a different move. Here it is zero, measured against every finding the harness has recorded — see Verification.

#387 left the walk's unit undefined, holding that "a clause spelling it out would restate another property inside this one" because Conformant already fixes one item to one line in GitHub-posted markdown. That reasoning bounds this change rather than blocking it: the paragraph and list-item case is still left to the derivation, and only the three shapes outside it are named.

Two things review raised and this PR leaves alone. Grounded now holds both the rule that a named mechanism needs no evidence and the rule that a listed verification item carries its evidence, which a body line naming CI meets one way and not the other; that tension is in the evidence rule's wording, predates this branch, and is a change of its own. And the heading rule says what a heading answers for as well as that the walk takes it, which one reviewer read as restating Necessary's "a section heading grants no exemption"; the clause stays, because without it the walk can answer for a heading by pointing at the lines beneath it and forfeit every heading in the body.

Verification

  • Each rule ## Scoped keeps was checked against its reworded line, the correspondence claude/rules/rule-authoring.md requires when a summary changes:

    ## Scoped rule reached by the line
    describe the boundary, call out what is left out of scope "its boundary"
    out-of-scope edits do not appear in the diff "only what the stated intent needs"
    the body conveys the change as a whole verbatim
    keep the PR self-contained "what it leaves to the parent issue"
    a description that keeps growing prompts a split not reached, as in the line at main
  • Grounded's line grows and loses nothing: the hunk at git diff main -U0 appends to the existing clause rather than replacing it, so every rule it reached before is still reached, and the moved rule is reached by "the body names a verification mechanism for the code paths the diff changes"

  • The moved rule is byte-identical at its new home: grep -A3 '^- The body names a verification mechanism' run against git show main:claude/skills/git-workflow/pr-guidelines.md and against the head file compare equal (diff → exit 0)

  • The file's top-level rule count is unchanged: grep -c '^- ' gives 50 at main and 50 at the head, so the move added and dropped nothing and the walk's three additions are sub-bullets

  • All 57 finding entries the stability harness recorded across its four rounds (19 baseline, 9 round 1, 14 round 2, 15 round 3, two of them None. placeholders) were read in full, printed with their severity, property, and text by a python3 pass over ikuwowfiles/pr-selfcheck-stability/*/findings.jsonl. None rests on the moved rule. The one finding reporting that a changed code path carries no verification, baseline run 5, was already filed under Grounded. The harness stays untracked under this repository's measurement-data policy, which is why the reading is recorded here

  • CI runs two jobs (.github/workflows/ci.yml): shellcheck over the repository's shell scripts, and a doctest pass over claude/hooks/*.py. This change is Markdown only and reaches neither, so a green run is not evidence for it

ikuwow and others added 3 commits August 22, 2026 20:20
`Necessary` opens with a walk that takes the body a line at a time
without saying what a line is. Paragraph and list-item granularity
follows from `Conformant`, which fixes one item to one line in
GitHub-posted markdown, so the walk needs no clause for those. A
heading, a table, and a line carrying two claims are outside that
derivation, and the walk now answers each: a heading answers for its own
text, a table is taken whole with its lead-in, and a multi-claim line is
answered a claim at a time.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Every other rule under `Scoped` is decided by reading the diff and
holding it against the stated intent or against the account the body
gave. The verification-mechanism rule is decided by reading the body
alone — its test is whether the body makes the claim — so it sits in a
section whose read it does not perform. `Grounded` reads the body first,
and its opening rules already govern the Verification section.

The rule and its two sub-bullets move verbatim. `Scoped`'s line in the
five-property list drops the clause that reached it, and `Grounded`'s
gains one.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Review found four places where the two changes above left a checker to
interpret rather than apply.

`Scoped`'s line said "what it holds within this PR", which names no
condition; it now names the self-containment rule it has to reach.
`Grounded`'s line states the rule in the rule's own voice, so the
presence test does not read as a checkability test. The walk answers a
table row by row, read with the caption or lead-in that says what the
table shows, which is the granularity `Necessary` already reasons at
where it calls out a table row spelling out what an added rule says. The
multi-claim line keeps the forfeit vocabulary the walk defines. The
moved rule sits after the rules governing the Verification section, so
its coverage-judgement sub-bullet reads as its own qualifier rather than
as the section's preamble.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ikuwow
ikuwow marked this pull request as ready for review August 22, 2026 11:55
@ikuwow
ikuwow merged commit 4e52c5b into main Aug 22, 2026
6 checks passed
@ikuwow
ikuwow deleted the settle-the-necessary-walk-unit-and-the-verification-rule-home branch August 22, 2026 11:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant