Skip to content

Bug: claude-md-cut3-names-uninvoked-coverage-command #828

Description

@drmoisan
  • Work Mode: minor-audit

Summary

CLAUDE.md section CUT3 (C# Toolchain Command Selection), step 4, specifies
vstest.console.exe <test-assembly-paths> /EnableCodeCoverage as the C# test toolchain command. The
coverage route actually in use in this repository is dotnet-coverage collect wrapping
vstest.console.exe, with /EnableCodeCoverage deliberately omitted from the inner invocation. A
policy document that names a command the repository deliberately does not run produces false PARTIAL
verdicts against any acceptance criterion that cites it.

Environment

  • OS/version: Windows 11 Pro 10.0.26200 (the mismatch is platform-independent; it is a document/route divergence, not a runtime defect)
  • Python version: not applicable; the affected surface is C# toolchain policy text and PowerShell coverage scripting
  • Command/flags used: CLAUDE.md CUT3 step 4 as written, vstest.console.exe <test-assembly-paths> /EnableCodeCoverage, versus the implemented route in scripts/vscode/Invoke-MSTestWithCoverage.ps1
  • Data source or fixture: scripts/vscode/TaskMaster.cli.runsettings, coverage.config

Steps to Reproduce

  1. Read CLAUDE.md section CUT3, step 4, and note the command it names.
  2. Read scripts/vscode/Invoke-MSTestWithCoverage.ps1 and observe that the implemented route is an outer dotnet-coverage collect wrapping an inner vstest.console.exe that is never given /EnableCodeCoverage.
  3. Read scripts/vscode/TaskMaster.cli.runsettings and observe it carries the MSTest parallelization only and no coverage data collector.
  4. Observe that a reviewer checking an acceptance criterion which cites CUT3 step 4 finds the delivery did not run the command the policy names.

Expected Behavior

The toolchain command named in CLAUDE.md CUT3 step 4 matches the coverage route the repository
actually runs, so a reviewer citing it evaluates the delivery against a command that is genuinely
invoked.

Actual Behavior

CUT3 step 4 names a vstest.console.exe ... /EnableCodeCoverage invocation that the repository
deliberately never issues. The omission of /EnableCodeCoverage is load-bearing rather than
accidental: enabling the built-in Code Coverage collector alongside the outer dotnet-coverage
instrumentation conflicts.

Logs / Screenshots

  • Attached minimal logs or snippet
  • Snippet: the corroborating in-code comment at scripts/vscode/Invoke-MSTestWithCoverage.ps1 lines 19-26, in the .DESCRIPTION block of Resolve-RunSettingsPath:

The CLI runsettings (TaskMaster.cli.runsettings) lives alongside this script in scripts/vscode and
is resolved deterministically from the script directory. It carries the MSTest parallelization only
and no coverage data collector, so the inner vstest invocation never activates the Code Coverage
collector; instrumentation comes solely from the outer dotnet-coverage --settings coverage.config
path.

Impact / Severity

  • Blocker
  • High
  • Medium
  • Low

The mismatch is what made issue #809's AC6 read as PARTIAL on wording alone: the reviewer found the
delivery had not run the command CLAUDE.md names, recomputed AC6's measurable clauses from raw
Cobertura, and found they pass. Every future item citing CUT3 step 4 inherits the same false PARTIAL.

Source

From: docs/features/potential/2026-09-09-claude-md-cut3-names-uninvoked-coverage-command.md

Activity

  1. drmoisan commented on Sep 28, 2026

    @drmoisan
    OwnerAuthor

    Verified fixed by PR #894 (commit 4e9a1b8). CLAUDE.md CUT3 step 4 and the toolchain section now name the dotnet-coverage collect route wrapping vstest.console.exe, with the collector withheld from the inner call. /EnableCodeCoverage no longer appears in CLAUDE.md. Closing as fixed by #894.

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

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions