Repository navigation
Bug: claude-md-coverage-thresholds-and-toolchain-command-corrections #870
Description
- Work Mode: full-bug
Summary
CLAUDE.md names a test command the repository deliberately never runs (#828), states coverage thresholds that the maintainer has now settled differently from two rules files (#563, decision recorded 2026-09-11), and cites .globalconfig twice as an analyzer-severity source when that file does not exist (#727 sub-finding 5). All three are documentation-only corrections to one file this repository owns.
Environment
- OS/version: not applicable (documentation)
- Python version: not applicable
- Command/flags used:
CLAUDE.mdlines 390 and 408 (vstest.console.exe <test-assembly-paths> /EnableCodeCoverage); UT2 coverage section; C#1 item 2 and C#7 - Data source or fixture:
scripts/vscode/Invoke-MSTestWithCoverage.ps1,scripts/vscode/Invoke-MSTestWithCoverage.Threshold.ps1,.editorconfig
Steps to Reproduce
- Read CUT3 step 4 and the "C# Toolchain" step 4: both name
vstest.console.exe ... /EnableCodeCoverage. ReadInvoke-MSTestWithCoverage.ps1lines 19 to 26: the implemented route is an outerdotnet-coverage collectwrapping an inner vstest that is never given/EnableCodeCoverage, because the built-in collector conflicts with the outer instrumentation. - Read UT2: "Repository-wide line coverage must remain >= 80%" on a testable denominator, no branch floor stated. Compare
.claude/rules/general-unit-test.md(85 line / 75 branch). The maintainer decision on Coverage threshold contradiction remains: CLAUDE.md/csharp.md say 80%, general-unit-test.md/quality-tiers.md say 85%/75%, and two live gates disagree #563 is 80 line, 75 branch, PowerShell 80 line, recorded in CLAUDE.md alone. - Search CLAUDE.md for
.globalconfig: two references (C#1 item 2, C#7).Test-Path .globalconfigis false;.editorconfigis the actual severity source.
Expected Behavior
- CUT3 step 4 and the C# Toolchain step 4 name the route actually run:
scripts/vscode/Invoke-MSTestWithCoverage.ps1(or the VS Code task that wraps it), with a one-line note that/EnableCodeCoverageis deliberately omitted from the inner vstest call. - UT2 states: C# line >= 80%, C# branch >= 75%, PowerShell line >= 80% (Pester measures no branch), new code >= 90%, the three exemption classes unchanged, and one sentence recording that these figures were settled on 2026-09-11 under Coverage threshold contradiction remains: CLAUDE.md/csharp.md say 80%, general-unit-test.md/quality-tiers.md say 85%/75%, and two live gates disagree #563 and that the
.claude/rules/figures are upstream-owned and not authoritative here. - Both
.globalconfigreferences read.editorconfig.
Actual Behavior
Reviewers citing CUT3 step 4 issue false PARTIAL verdicts (#809 AC6, and every later item citing it); the 80-versus-85 divergence forces a FAIL row on every review at the measured 84.56%; the .globalconfig citations point at a file that does not exist.
Logs / Screenshots
- Attached minimal logs or screenshot
- Snippet: none; documentation finding.
Impact / Severity
- Blocker
- High
- Medium
- Low
Source
From: docs/features/potential/2026-09-11-claude-md-coverage-thresholds-and-toolchain-command-corrections.md
Activity
Correct CLAUDE.md coverage thresholds and toolchain command citations (…
drmoisan commentedon Sep 14, 2026
Delivered by PR #894, merged as a49c972.
CLAUDE.md coverage thresholds and toolchain command corrections: 8/8 acceptance criteria, zero remaining. CUT3 step 4 and the C# Toolchain step 4 now name the dotnet-coverage route via scripts/vscode/Invoke-MSTestWithCoverage.ps1 and record that /EnableCodeCoverage is deliberately omitted; UT2 states the 80/75/80 thresholds with the decision date; the two .globalconfig references are corrected to .editorconfig.
Verified during the revision, contrary to an assumption in the intake: item 873 had NOT already done this work. 873 only added the two output-path switches - it never removed /EnableCodeCoverage, never introduced the dotnet-coverage route, and never named the script or task label. AC1, AC3 and AC4 were entirely unsatisfied beforehand.
Two findings recorded rather than silently fixed, both out of scope for this item:
Closed manually because closingIssuesReferences was empty.