Skip to content

Mechanically enforce the .editorconfig scoped analyzer lists #434

Description

@DutchJaFO

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

  1. 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.
  2. 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.
  3. 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.
  4. 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

  • All expected tests listed above start red before implementation
  • All requirements implemented
  • All expected tests pass (green)
  • No regression in related tests
  • Findings summarised in a closing comment

Activity

  1. added this to the v1.9.0 milestone on Oct 4, 2026
  2. added
    enhancementNew feature or request
    code styleStyle, consistency, or analyzer/tooling configuration
    on Oct 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    code styleStyle, consistency, or analyzer/tooling configurationenhancementNew feature or request

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions