fix(docs-hygiene): correct audit-noise's stated negation limitation (0.21.2) - #3205
Conversation
…0.21.2) 0.21.1's "the line must close its own sentence" gate silently changed what happens to a soft-wrapped prohibition, and the "known limitation" bullet in SKILL.md was left describing 0.21.0. Two claims in it are false against the shipped detector: - It says `Do not use markdown;` / `compose prose instead.` across two lines is reported. Measured: it is not. `;` never terminates a sentence, so the line reaches no verdict at all. - It says the error direction is "a false positive, never a silent withhold". That is inverted. A hard-wrapped prohibition with no positive alternative anywhere in its sentence is now missed entirely. The second claim is load-bearing, not cosmetic: a silent withhold is the one failure mode the detector-findings admission test asks this rule set to avoid, and in a hard-wrapped repo it takes every prohibition long enough to wrap. The bullet now names it as the shape's one departure from fail-safe-toward-emitting rather than reassuring a reader that coverage is safe, and points at #3195, which carries the revised acceptance criteria. Documentation only — no detector, emitter or test behavior changes. Refs #3195, #3202.
|
Claude finished @kyle-sexton's task in 42s —— View job Security Review
No security issues found. This PR is documentation-only: a plugin version bump ( None of the changed content is executable — no detector script ( |
|
Last security-reviewed head: |
|
Claude finished @kyle-sexton's task in 30s —— View job
|
|
Claude has reviewed this PR 1 time. The lane skips further automatic reviews after 5; deleting this comment resets the count. |
…ions (0.55.6) The shared validator only required a closing keyword and a non-empty pr-issue-linkage reusable rejects. Observed on #3205: linkage plus Summary, Verification, and Related (no Fix) passed both gates and failed CI. The validator now looks up Summary, Fix, Verification, and Related through one heading-level helper, reports every missing or empty section in one pass, and the blocked-message remedy lists all four. Closes #3206 Co-authored-by: Kyle Sexton <kyle-sexton@users.noreply.github.com>
…ions (0.55.6) The shared validator only required a closing keyword and a non-empty pr-issue-linkage reusable rejects. Observed on #3205: linkage plus Summary, Verification, and Related (no Fix) passed both gates and failed CI. The validator now looks up Summary, Fix, Verification, and Related through one heading-level helper, reports every missing or empty section in one pass, and the blocked-message remedy lists all four. Closes #3206 Co-authored-by: Kyle Sexton <kyle-sexton@users.noreply.github.com>
…ions (0.55.6) The shared validator only required a closing keyword and a non-empty pr-issue-linkage reusable rejects. Observed on #3205: linkage plus Summary, Verification, and Related (no Fix) passed both gates and failed CI. The validator now looks up Summary, Fix, Verification, and Related through one heading-level helper, reports every missing or empty section in one pass, and the blocked-message remedy lists all four. Closes #3206 Co-authored-by: Kyle Sexton <kyle-sexton@users.noreply.github.com>
…ions (0.55.6) The shared validator only required a closing keyword and a non-empty pr-issue-linkage reusable rejects. Observed on #3205: linkage plus Summary, Verification, and Related (no Fix) passed both gates and failed CI. The validator now looks up Summary, Fix, Verification, and Related through one heading-level helper, reports every missing or empty section in one pass, and the blocked-message remedy lists all four. Closes #3206 Co-authored-by: Kyle Sexton <kyle-sexton@users.noreply.github.com>
…ions (0.55.11) (#3217) Closes #3206 ## Summary The shared PR-body linkage validator only checked a closing keyword and `## Related`, so both local pre-checks allowed bodies the pinned `pr-issue-linkage` reusable rejects. Local gates now require the same four contract sections CI does. ## Fix `pr-linkage-validator.sh` generalizes `related_section()` into `section_content()` over `Summary`, `Fix`, `Verification`, and `Related`, using the existing heading-level semantics (a nested `###` is content). Each missing or empty section is its own `LINKAGE_PROBLEMS` entry. Both hook surfaces pick this up from the shared core; their blocked-message remedies now list all four sections so following them produces a body CI accepts. The no-issue-marker path and `update_pull_request` without `body` are unchanged. ## Verification `bash plugins/source-control/hooks/pr-body-linkage-gate.test.sh` — passed: 137 failed: 0 `bash plugins/source-control/hooks/pr-linkage-mcp-gate.test.sh` — pass=25 fail=0 New cases: the #3205 body (linkage + Summary + Verification + Related, no Fix) is blocked; a nested `###` inside each required section is content. `check-changelog-parity.sh --check-bump origin/main` passes (0.55.6). ## Related - #3205 — the PR whose `pr-issue-linkage` failure is the reproduction - #3209 — comment-only header correction on the same reusable pin; no functional overlap - `.github/workflows/pr-issue-linkage.yml` — pins the upstream reusable at v0.14.2 --------- Co-authored-by: Kyle Sexton <kyle-sexton@users.noreply.github.com>
No linked issue
Deliberately not
Closes #3195. This corrects what the skill body says; #3195 remains open for the paragraph-accumulation fix that changes what the detector does.Summary
0.21.1 (#3202) added a gate requiring a
negationcandidate's line to close its own sentence. That silently changed what happens to a soft-wrapped prohibition, and the "known limitation" bullet inSKILL.mdwas left describing 0.21.0 — somaincurrently ships a skill body making two false claims about its own detector.Measured against the shipped detector at
7dea5a84:SKILL.mdclaimsDo not use markdown;(positive paired on next line);never terminates a sentence, so the line reaches no verdictDo not use markdown(no positive anywhere)Never emit a bare summary.Fix
Rewrite the "known limitation" bullet in
plugins/docs-hygiene/skills/audit-noise/SKILL.mdto describe the behavior that actually ships, and bump to 0.21.2 with a CHANGELOG entry. Documentation only — no detector, emitter, or test behavior changes.The rewritten bullet does three things the old one did not:
docs/conventions/detector-findings/README.mdasks this rule set to fail away from, and in a repo that hard-wraps its prose — this one — it takes every prohibition long enough to wrap. The old text told a reader the opposite: that the gap cost reviewer attention rather than coverage, which is exactly the reassurance that would stop someone from prioritizing it.A second correction, recorded rather than silently fixed
While re-measuring I found the merged #3202's body table says the narrowing took the negation count 1053 → 31. That is wrong: 31 was the intermediate line-gate build, superseded when the per-sentence gate landed. The shipped figure is 69, which is what
CHANGELOG.md0.21.1 and the corpus re-measure both say.Re-run on the identical 85-file corpus (
plugins/docs-hygiene+plugins/source-controltracked markdown, minusevals/fixturesandCHANGELOG.md) at7dea5a84:negationghost-refticket-pr-residuecitationscope-metaplan-referenceenum-listThe other shapes are byte-identical to the claim (3/2/2/1/1/1), so the narrowing itself behaved as described — only the headline number in that PR body was stale. Issue #3201's body carries the same
31. Both are merged/closed records; the correction is noted here and on #3195 rather than by rewriting them.Verification
detect.test.shemit-findings.test.shcheck-skill.sh(source checkout)check-changelog-parity.sh--check/--check-bump origin/main/--check-ordercheck-detector-findings-crosswalk.shThe reproduction above was run against the merged detector, not a local build, so the "Actual" column reflects what
mainships today.Related
1053 → 31is corrected above.31.