docs: record what the rules refuse to report, and how to accept a finding - #76
Merged
Merged
Conversation
…ding
The documentation described a scanner that reports every match. Three rules now
establish need before reporting, findings can be accepted in the workflow that
carries them, and none of that was written down anywhere.
README
- test counts were 117 and 4; they are 322 and 28, which is a strange thing
to undersell on the one page anyone reads
- the engineering log holds twenty-six entries, not eleven
- a section on what the rules refuse to report, because not reporting the
already-correct configuration is the harder half and the part that
distinguishes this from every tool that flags each write grant
- a section on accepting a finding, with the three refusals that keep it a
judgement recorder rather than a mute button
docs/accepting-findings.md (new)
The syntax, why the decision lives in the workflow rather than a config file
of rule/line/reason entries, what the mechanism refuses to do and why each
refusal exists, and how an accepted finding is presented without disappearing.
docs/architecture/rules.md
The severity column claimed one value for GHA002 and GHA004, which now vary.
A section on establishing need covers all three rules, the 24-action table,
and why suppression is the expensive direction - a missing entry costs a
false positive, a wrong one hides a real finding. GHA012 is noted as reported
against the acceptance mechanism rather than being a rule.
docs/engineering-log.md
Entry 26. The exemption table in the self-scan was the defect report: three
hand-written notes explaining the rule was wrong about a grant that was the
documented minimum, maintained long enough to read as accepted risk rather
than as one rule being wrong three times.
CHANGELOG
Unreleased entries for the acceptance mechanism, acknowledgements, the three
rules, and the severity recalibration.
322 backend tests and 28 frontend tests still pass.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N7HjzX5e8Wv7PKENDo2Uj7
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The documentation described a scanner that reports every match. Three rules now establish need before reporting, findings can be accepted in the workflow that carries them, and none of that was written down anywhere.
README
Stale counts. It claimed 117 .NET tests, 4 frontend tests. The real figures are 322 and 28 — a strange thing to undersell by 3× on the one page anyone actually reads. The engineering log line said eleven defects; it holds twenty-six.
Two new sections.
What it refuses to report — because not reporting the already-correct configuration is the harder half, and it is the part that distinguishes this from every tool that flags each write grant. It covers all three rules, the severity recalibration, and why suppression is the expensive direction.
Accepting a finding — the
sentinel:acceptsyntax and the three refusals that keep it a judgement recorder rather than a mute button.docs/accepting-findings.md (new)
A user-facing feature had zero documentation. This covers the syntax, why the decision lives in the workflow rather than a config file of rule/line/reason entries, what the mechanism refuses to do and why each refusal exists, and how an accepted finding is presented without disappearing.
docs/architecture/rules.md
The severity column asserted one value for GHA002 and GHA004, which now vary by scope and by whether untrusted code runs. A new Establishing need section covers the three rules, the 24-action table, and the five properties that stop the table becoming a blanket exemption.
GHA012 is noted as not a rule — it is reported by the analysis service against the acceptance mechanism itself, so it belongs outside the rule table.
docs/engineering-log.md
Entry 26, in the format of the rest. The point worth recording:
CHANGELOG
Unreleased entries for the acceptance mechanism, acknowledgements, the three rules, and the severity recalibration.
Verification
322 backend tests pass, including
RepositoryWorkflowsTestsand the repository-validation gate that checks documentation links. Every new link resolves.🤖 Generated with Claude Code
https://claude.ai/code/session_01N7HjzX5e8Wv7PKENDo2Uj7
Generated by Claude Code