Repository navigation
Bug: test-evidence-projection-convention-and-identity-leak-tooling #873
Description
- 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.csprojline; Markdown) - Command/flags used:
scripts/vscode/Invoke-MSTestWithCoverage.ps1;vstest.console.exe ... /Logger:trx - Data source or fixture:
git ls-filesonmainat 3cb9744
Steps to Reproduce
- Run any repository test gate that writes evidence under a feature's
evidence/tree. Observe a raw.trxwhoserunUser,computerName, and lowercasedstorageattributes carry the account, host, and absolute checkout path, and a raw Cobertura document of 10 to 43 MB. - Count tracked evidence on
main: 332.trxfiles (281 MB) and 248.cobertura.xmlfiles (3,227 MB in the working tree). - Read
TaskMaster/TaskMaster.csproj:37:<PublishUrl>carries the developer's account name and employer organization name. - 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. - 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-CoberturaFirstPartyCoverageReportline, 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.csprojcarries 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.jsoncarries 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
- Attached minimal logs or screenshot
- Snippet:
storage="c:\users\<account>\repos\taskmaster\...\quickfiler.test.dll",runUser="<machine>\<account>"(from Bug: trx-evidence-host-tokens-and-malformed-xml #671).
Impact / Severity
- Blocker
- High
- Medium
- Low
Source
From: docs/features/potential/2026-09-11-test-evidence-projection-convention-and-identity-leak-tooling.md
Activity
Wire the plain MSTest entry point to an explicit results directory an…
Record the committed-evidence convention and clear the named identifi…
Record the Phase 6 assembly inventory and abort the default-output ru…
Complete the Phase 7 final QA loop, coverage evidence and acceptance …
Record the P7-T16 delivery commit result and post-commit porcelain (#873
Mark P7-T16 complete in the plan checklist (#873 Phase 7 check-off)
Complete Phase 6 end-to-end observation and check off AC23 (#873 Phas…
Add feature review artifacts for #873 (policy, code, feature audits)
drmoisan commentedon Sep 14, 2026
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.