Skip to content

Every defect the last repair left behind was a grep it did not run - #39

Merged
wshallwshall merged 1 commit into
mainfrom
claude/asvs-assessment-intro-b1f745
Aug 11, 2026
Merged

Every defect the last repair left behind was a grep it did not run#39
wshallwshall merged 1 commit into
mainfrom
claude/asvs-assessment-intro-b1f745

Conversation

@wshallwshall

Copy link
Copy Markdown
Owner

Nine edits, each a sub-clause, closing what the 34-edit repair opened or left.

A verification pass over the repaired page confirmed all eight defects the repair targeted are closedrule_fired/reviewed_by/reviewed_at occur nowhere in the repository, the Presence row agrees with the section that settles it, step 6 is gone and the sequence is genuinely first-match-wins, and no printed duration survives. It also found six trailing edges, and they had exactly one shape: a rename that enumerated its sites incompletely, or a deletion whose neighbouring sentence was never reread. Neither needs judgment to avoid. Both need a grep.

Two sweeps stopped short. The verifiedre-derived rename changed four sites and missed two; the pair → triple change made three and missed the failure-mode table. Worth noting what a blind sweep would have broken: "re-verification" also appears for a recomputed digest, for anchors re-checked after a move, and for adversarial re-review — three different objects. Only two sites meant a cell against requirement text.

A deletion left a demand with no referent. Removing decision step 6 also removed the only token an implementer could write into rule for a needs-review cell — and the next commit then required that cell to "name the rule that applies after the sequence has run". That rule had no name. It is now assessors-split, and a cell blocked on a decision only its owner can make takes the same grade under blocked-on-owner, so both routes have a value to record.

A correction left a pronoun. f92e32a swapped a noun for a linked section title and did not reread the next sentence, so "Cross it on purpose" lost its antecedent — in a passage that also still called 86% of the file "the half", written by the commit that had just removed "the first half is yours" for making a proportional claim.

Two edits are structural rather than repair:

  • The boundary marker now names the cut, not the position. The command hands the agent everything from one heading on, so a rule written above it never reaches the agent. That turns placement from a judgment the next editor must make correctly into a check they can run — and placement is the class that keeps recurring.
  • The paste-ready command now tells the agent to ask for the declared scope, target level and posture rather than choosing them. Its own slice requires all three; the command carried none of them.

What was deliberately not done. Five findings are left open on the verifier's own advice. Each is defensible as open, and closing them adds words to a page whose remaining defects are about placement rather than density.

Measured. Long sentences 217 → 217 against a baseline of 219. Fat cells 30 → 30, at baseline. Words 61,768 → 61,815. 146 tests green including the HS-20 sentence cap, Word copy rebuilt with pandoc 3.10, zero non-ASCII bytes.

🤖 Generated with Claude Code

Nine edits, each a sub-clause, closing what the 34-edit repair opened or left. A verification pass
over the repaired page found the damage had one shape: a rename that enumerated its sites
incompletely, or a deletion whose neighbouring sentence was never reread. Neither needs judgment to
avoid. Both need a grep.

WHAT WAS WRONG.

TWO SWEEPS STOPPED SHORT. Renaming the cell-level sense of "verified" to "re-derived" changed four
sites and missed two: the movement table still called an `unverified` -> anything move a
re-verification, and the two-readings paragraph still said "re-verification debt" one line above its
own gloss, "a re-derivation against text you already hold". Raising an absence claim from a pair to a
triple changed three sites and missed the failure-mode table, which still prescribed a positive
control alone. Note what a blind sweep would have broken: "re-verification" also appears for a
digest recomputed on every run, for anchors re-checked after a move, and for adversarial re-review.
Three different objects. Only two sites meant a cell against requirement text.

A DELETION LEFT A DEMAND WITH NO REFERENT. 5e2ef34 removed decision step 6, correctly, since it could
never fire -- and with it the only token an implementer could write into `rule` for a `needs-review`
cell. 9271c4c then stated the field's domain and said a `needs-review` cell "names the rule that
applies after the sequence has run". That rule had no name. `partial` gets a worked value;
its sibling got a demand pointing at nothing.

A CORRECTION LEFT A PRONOUN. f92e32a replaced the noun "the Part 1 boundary" with a linked section
title and did not reread the sentence after it, so "Cross it on purpose" lost its antecedent. The
same passage still said "the half addressed to the agent" for a span that is 86% of the file --
written by the commit that removed "the first half is yours" for making a proportional claim.

WHAT CHANGED. Both sweeps are completed at the sites that mean what the sweep meant, and at no
others. The reconciliation rule is named `assessors-split`, and a cell blocked on a decision only its
owner can make takes the same grade under `blocked-on-owner`, so both routes to `needs-review` have a
value to record. The bridging sentence names the boundary as a boundary and its pronoun points at it.
Review row 7 asks which tree was read, closing the fourth provenance field on the one pass that
audits provenance.

TWO EDITS ARE STRUCTURAL RATHER THAN REPAIR. The boundary marker now names the cut instead of the
position -- the command hands the agent everything from one heading on, so a rule written above it
never reaches the agent. That converts placement from a judgment the next editor has to make
correctly into a check they can run, and this class of defect is the one that keeps recurring. The
paste-ready command now tells the agent to ask for the declared scope, the target level and the
posture rather than choosing them, all three of which its own slice requires and none of which the
command carried.

WHAT WAS DELIBERATELY NOT DONE. Five findings are left open on the verifier's own advice: the
section-name bullet, the two missing separator rules, the "Every file, both formats" line, the
`quoted` and `version` checklist omission, and one count. Each is defensible as open, and closing
them adds words to a page whose remaining defects are about placement rather than density.

MEASURED. Long sentences 217 -> 217 against a baseline of 219. Fat cells 30 -> 30, at baseline; the
two table cells edited stay well inside 40 words. Words 61,768 -> 61,815. 146 tests green including
the HS-20 sentence cap, Word copy rebuilt with pandoc 3.10, zero non-ASCII bytes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@wshallwshall
wshallwshall merged commit 815f3c9 into main Aug 11, 2026
3 checks passed
@wshallwshall
wshallwshall deleted the claude/asvs-assessment-intro-b1f745 branch August 11, 2026 15:58
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