Background
CLAUDE.md's zero-warnings ratchet escalates IDE0008 and IDE0090 to warning only for the files
a piece of work touches, via two hand-maintained path lists in .editorconfig. The lists are
maintained by memory, and CLAUDE.md already records that memory alone did not work once: the
boyscout rule was "silently missed across several consecutive #312 commits before the developer caught
it by eye."
It has now been found incomplete twice more:
Both were found by eye, not by tooling. CLAUDE.md names this exact condition as the trigger for this
issue: "raise it as its own issue if the manual list starts being forgotten in practice." The second
occurrence is what makes it practice rather than an incident.
The failure mode is specifically invisible: a file missing from the list produces no warning, so the
0-warnings gate passes and reports nothing. There is no signal to notice.
What needs to be done
- A test fails when a
.cs file changed on the current branch, relative to the base branch, is
absent from .editorconfig's scoped IDE0008 section.
- The same check for the scoped
IDE0090 section, or a recorded decision in the plan doc that
IDE0090 is deliberately excluded and why. The two rules are worded differently in CLAUDE.md
(IDE0008 says "the moment it is first touched", IDE0090 says "the moment it needs this
cleanup"), and that difference has to be resolved before the check can be written, not during.
- The exclusion set is explicit and stated in the test itself: which paths are out of scope and on
what grounds, rather than an unexplained skip list.
- The test behaves correctly when run on the base branch itself, where there is no diff to compare
against, and in a detached or shallow checkout as CI may produce. A test that only works on a
feature branch in a full clone replaces a forgotten list with an unreliable gate.
Expected tests
| Test class / document |
Test method / what it verifies |
Starts |
| EditorConfigScopeTests |
ChangedFile_MissingFromTheIde0008Scope_IsReported |
❌ |
| EditorConfigScopeTests |
ChangedFile_PresentInTheIde0008Scope_IsAccepted |
❌ |
| EditorConfigScopeTests |
ExcludedPath_IsNotRequiredInTheScope |
❌ |
| EditorConfigScopeTests |
NoChangedFiles_IsNotAFailure |
❌ |
Definition of done
Background
CLAUDE.md's zero-warnings ratchet escalatesIDE0008andIDE0090towarningonly for the filesa piece of work touches, via two hand-maintained path lists in
.editorconfig. The lists aremaintained by memory, and
CLAUDE.mdalready records that memory alone did not work once: theboyscout rule was "silently missed across several consecutive #312 commits before the developer caught
it by eye."
It has now been found incomplete twice more:
IDE0090warnings.BackupFileNamesTests.cs,DatabaseBackupReaderTests.cs) were inthe
IDE0008list but not theIDE0090one, hiding 8IDE0090warnings under a build reporting0 Warning(s).Both were found by eye, not by tooling.
CLAUDE.mdnames this exact condition as the trigger for thisissue: "raise it as its own issue if the manual list starts being forgotten in practice." The second
occurrence is what makes it practice rather than an incident.
The failure mode is specifically invisible: a file missing from the list produces no warning, so the
0-warnings gate passes and reports nothing. There is no signal to notice.
What needs to be done
.csfile changed on the current branch, relative to the base branch, isabsent from
.editorconfig's scopedIDE0008section.IDE0090section, or a recorded decision in the plan doc thatIDE0090is deliberately excluded and why. The two rules are worded differently inCLAUDE.md(
IDE0008says "the moment it is first touched",IDE0090says "the moment it needs thiscleanup"), and that difference has to be resolved before the check can be written, not during.
what grounds, rather than an unexplained skip list.
against, and in a detached or shallow checkout as CI may produce. A test that only works on a
feature branch in a full clone replaces a forgotten list with an unreliable gate.
Expected tests
Definition of done