Skip to content

Bug: test-evidence-projection-convention-and-identity-leak-tooling #873

Closed

Description

@drmoisan
  • Work Mode: full-bug

Summary

Implements the committed test-evidence convention the maintainer recorded on #671 on 2026-09-11 and removes the identity leaks that live in configuration rather than historical evidence (#728, the tooling half of #602). Raw .trx and raw .cobertura.xml output is no longer committed: the coverage entry point writes a package-level JaCoCo projection and the one-line first-party summary, the test runner writes a pass/fail summary, and raw output is discarded. Test-invocation scripts set an explicit results directory and log file name so the <account>_<HOST>_<timestamp>.trx default is never produced. The PublishUrl leak in TaskMaster.csproj, the five agent-memory files, and .vscode/settings.json are corrected in the same delivery.

Environment

  • OS/version: Windows 11 Pro 10.0.26200
  • Python version: not applicable (PowerShell 7 toolchain scripts under scripts/vscode/, Pester; one .csproj line; Markdown)
  • Command/flags used: scripts/vscode/Invoke-MSTestWithCoverage.ps1; vstest.console.exe ... /Logger:trx
  • Data source or fixture: git ls-files on main at 3cb9744

Steps to Reproduce

  1. Run any repository test gate that writes evidence under a feature's evidence/ tree. Observe a raw .trx whose runUser, computerName, and lowercased storage attributes carry the account, host, and absolute checkout path, and a raw Cobertura document of 10 to 43 MB.
  2. Count tracked evidence on main: 332 .trx files (281 MB) and 248 .cobertura.xml files (3,227 MB in the working tree).
  3. Read TaskMaster/TaskMaster.csproj:37: <PublishUrl> carries the developer's account name and employer organization name.
  4. Search .claude/agent-memory/ for the account or machine name: five files match (epic-orchestrator/feedback_measure_whole_volume_before_blaming_worktrees.md, feature-review/project_464-review-residuals.md, feature-review/project_488-review-residuals.md, orchestrator/angle-bracket-redaction-breaks-trx-xml.md, orchestrator/collect-pr-context-lands-in-main-checkout.md). These are not push-down owned.
  5. Read the artifact-hygiene redaction sweep used during feature reviews: it excludes the plan file from its own residual scan (Bug: trx-evidence-host-tokens-and-malformed-xml #671 comment of 2026-09-02, from item Bug: efcselectionguard-banner-prefix-arity-and-stale-comment #662).

Expected Behavior

  • The coverage entry point emits a JaCoCo package-level projection (the Bug: qfc-metrics-flush-writes-empty-session-file #646 / PR fix(quickfiler): skip the metrics write when no diagnostic lines survive (#646) #718 shape, about 2 KB) plus the Get-CoberturaFirstPartyCoverageReport line, and deletes the raw Cobertura document after the threshold assertion and projection are complete.
  • The test runner path emits a summary (passed, failed, skipped, total, names of failed tests) and deletes the raw .trx.
  • Every vstest invocation in scripts/vscode/ passes /ResultsDirectory: and /Logger:trx;LogFileName=<task>.trx.
  • TaskMaster.csproj carries no <PublishUrl> with a personal path (empty or a placeholder-relative value).
  • The five agent-memory files use <user>, <host>, <user-profile> placeholders.
  • .vscode/settings.json carries no absolute user-profile path.
  • The redaction sweep scans the plan file.
  • The evidence convention is written down once, in the evidence-and-timestamp-conventions skill or its nearest TaskMaster-owned equivalent, and cited by the atomic-plan contract's evidence tasks.

Actual Behavior

Raw TRX and Cobertura are committed on every feature; the TRX carries host identity; the ad-hoc angle-bracket redaction makes the XML unparseable; PublishUrl, five memory files, and .vscode/settings.json leak identifiers; the sweep misses plan files.

Logs / Screenshots

Impact / Severity

  • Blocker
  • High
  • Medium
  • Low

Source

From: docs/features/potential/2026-09-11-test-evidence-projection-convention-and-identity-leak-tooling.md

Activity

  1. drmoisan commented on Sep 14, 2026

    @drmoisan
    OwnerAuthor

    Delivered by PR #881, merged as e6d8604 on 2026-09-13.

    Test evidence projection convention and identity-leak tooling delivered per the maintainer's recorded #671 decision: projections only - JaCoCo package XML, first-party coverage summary line, TRX pass/fail summary - with raw output discarded and explicit ResultsDirectory and LogFileName set.

    Merged at 23/23 acceptance criteria. AC23 was deliberately NOT waived: it is the end-to-end observation of the projection-and-discard behaviour this item exists to deliver - running the coverage entry point twice, confirming the projection's summed LINE counters equal the raw document's attributes, confirming the discard branch removes the raw document, and confirming neither run emits a default account-and-host filename. An earlier proposal to merge at 22/23 was declined on the grounds that shipping projection-and-discard tooling never once observed working end to end is materially different from an unchecked peripheral criterion.

    Note for future items: this item's conditional discard invalidated inherited coverage-output assumptions in two sibling items by different routes - #742's -CoverageOutput subdirectory and #872's AC12 recipe writing to TestResults/coverage/. Any plan predating this change that touches coverage output should be treated as suspect until checked.

    Closed manually - the PR carried no closing keyword.

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