Skip to content

V10.1.2/hotfix - #9

Merged
gimlichael merged 18 commits into
releases/v10from
v10.1.2/hotfix
Nov 3, 2026
Merged

gimlichael merged 18 commits into
releases/v10from
v10.1.2/hotfix

Conversation

@gimlichael

Copy link
Copy Markdown
Member

This pull request makes 10.1.2 a patch release that restores library coverage lost by automatically generated MTP exclusions and by a framework assembly-resolution failure. Dependencies now exclude only their own assemblies, and the runtime netstandard.dll facade is bound to the resolver that owns it, so project assemblies and .NET Framework modules are instrumented again. Package identity, public APIs, dependency versions, and the netstandard2.0;net9.0;net10.0 targets are unchanged.

Dependency exclusion correction:

  • Exclusion filters are generated from the managed runtime asset filenames declared by non-project deps.json libraries, including RID-specific assemblies, instead of from package IDs widened to a two-segment prefix.
  • Project runtime assets take precedence when the SDK lists the same DLL again in a reference entry, so a runner declared twice stays in coverage.
  • Hyphenated exact names such as xunit.v3.mtp-v2 are accepted as valid filters, and the xUnit build assets copied without runtime entries remain excluded by exact name.
  • Explicit CLI exclusions or an authoritative configuration file still bypass dynamic discovery and merge with the permanent baseline.

Framework resolver correction:

  • The runtime netstandard.dll facade is loaded lazily per resolver with that resolver attached, so forwarded enum types resolve through Coverlet's framework fallbacks and configured search directories.
  • The facade shares the resolver cache lifetime, leaving disposal, facade identity checks, and search order unchanged, with no consumer-specific branches.

Regression coverage:

  • Dependency discovery tests build real deps.json inputs and assert that only dependency assemblies are excluded when names share a prefix, including differing package and assembly names and duplicate project or reference entries.
  • Resolver tests resolve forwarded enums through a private search path and write optional enum metadata, covering the .NET Framework failure without requiring that framework.
  • Existing filter, discovery, and dynamic-exclusion tests now assert exact filters and hyphenated names.

Coverage advisory:

  • A new advisory records the affected versions, both upstream origins, the historical CI evidence that concealed the loss, and the consumer revalidation collected for seven repositories.
  • The readme and integration guide warn about the affected range, link the advisory, and describe the corrected exclusion precedence.

Upstream provenance:

  • A new ledger pins the original upstream marker, the 10.1.1 comparison base, and the branch commits behind each correction, keeping fork fixes distinct from upstream adoption.

Release notes:

  • The 10.1.2 changelog entry describes both fixes and warns that restored modules change totals, percentages, and quality gates.

aicia-bot and others added 13 commits November 3, 2026 21:02
Dependency discovery derived wildcard filters from package IDs, so a dependency could exclude project assemblies sharing its name prefix. Discovery now reads managed runtime assets from deps.json, including RID-specific ones, and emits exact filters. xUnit build assets that are copied without runtime entries are excluded explicitly.
The exclusion docs described wildcard dependency filters and a naming-convention limitation that no longer apply. They now describe deps.json discovery, exact assembly filters, and the xUnit build assets that are excluded explicitly.
The SDK can list a project runner DLL both as project output and in a reference entry, so dependency-derived exclusions dropped modules that should stay instrumented. Give project runtime assets precedence over duplicate reference entries and cover the case in the discovery test.
The fork inherited upstream PR coverlet-coverage#1946's prefix wildcards, which silently omitted project assemblies from reports in 10.0.1 through 10.1.1. Record the affected configurations, historical CI evidence, per-repository revalidation, and the unresolved Cuemon .NET Framework failure so consumers can judge their own reports.
Upstream syncs need verified commit targets that stay distinct from release numbering, so record the original upstream marker, the 10.1.1 comparison base, and the branch commits that implement this correction.
Readers of the top-level and integration docs need to see the advisory before trusting an existing coverage percentage, so link it from both entry points.
The 10.1.2 entry must describe restored project coverage and warn that corrected module selection changes totals, rather than describing the earlier exclusion-filter rewrite.
Cuemon's .NET Framework instrumentation dropped Cuemon.Core, Cuemon.Kernel, and Cuemon.Extensions.Core because the cached netstandard.dll facade was read without the owning resolver, so forwarded enum types resolved through Cecil's default resolver instead of Coverlet's framework fallbacks. Load the facade lazily per resolver, let the base cache own its disposal, and cover forwarded enums with a portable regression test.
The advisory described the Cuemon .NET Framework module loss as unresolved, but a second correction now restores those modules. Record the resolver cause, the before and after sequence-point evidence, the new regression test, and the Ubuntu remote results so readers can judge both defects and their remaining validation limits.
The provenance ledger only accounted for the dependency-filter correction, so add the second correction's upstream source pattern, its destination commit, and its validation results to keep the fork's provenance claims auditable.
Both entry-point warnings still called the Cuemon .NET Framework instrumentation failure unresolved, which now contradicts the shipped resolver correction. Point readers at the updated advisory status instead.
The 10.1.2 entry only mentioned the dependency-filter defect, so release readers would still expect the Cuemon module loss after upgrading. Describe the second fixed defect and its regression coverage.
@gimlichael gimlichael self-assigned this Nov 3, 2026
@greptile-apps

greptile-apps Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[High impact] The PR appears safe to merge; no actionable new issues were found.

Summary

This patch restores project coverage through exact dependency exclusions and fixes forwarded enum resolution through the runtime netstandard.dll facade.

  • MTP exclusions name dependency assemblies without hiding similarly named projects.
  • Forwarded framework types use the resolver that owns the netstandard facade.
  • CI checks release-branch pull requests and can include macOS runs.
  • Contributor guidance records which fixes came from upstream and where they originated.

Reviews (3) · Last reviewed commit: "💬 document optional macOS validation" · Reviewed by Greptile

@gimlichael
gimlichael changed the base branch from master to releases/v10 November 3, 2026 21:25
The 10.x patch line now targets releases/v10 while master continues toward 11.0.0. Accept pull requests into either branch so maintenance changes receive the existing CI matrix without importing the next major release.
Keep the tested 10.1.1 package baseline on releases/v10 while master retains the planned 11.0.0 work. Explain forward-porting, fixed version tags, manual workflow selection, and the existing Production approval so a maintenance release follows the same guarded publication path.
Record releases/v10 at the exact 10.1.1 baseline, PR #9 retargeting, and the retained branch protections without rewriting master or the 11.0.0 work. The earlier manual CI run passed Windows and Ubuntu but could not acquire macOS runners, so package validation and publication remain unverified by that attempt.
Hosted macOS capacity repeatedly leaves the test matrix queued without acquiring a runner. Match the xUnit workflow policy with a manual run_mac_tests input, applying it to both tests and package validation. Windows and Ubuntu remain required, and every explicitly selected macOS job still gates publication.
Explain how to request the macOS test and package-validation matrices manually while Windows and Ubuntu remain mandatory. Record the hosted-runner queue limitation and distinguish an opted-out macOS run from validated compatibility.
@gimlichael
gimlichael merged commit 373d6a2 into releases/v10 Nov 3, 2026
14 checks passed
@gimlichael
gimlichael deleted the v10.1.2/hotfix branch November 3, 2026 21:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants