Skip to content

chore(release): promote 2.9.0 and close the async sweep - #153

Merged
e128 merged 1 commit into
mainfrom
fix/tooling-probe-build-path
Nov 11, 2026
Merged

e128 merged 1 commit into
mainfrom
fix/tooling-probe-build-path

Conversation

@e128

@e128 e128 commented Nov 11, 2026

Copy link
Copy Markdown
Owner

Executive Summary

Two things ship here. First, the release record catches up with the package: E128222 moves from AnalyzerReleases.Unshipped.md into a ## Release 2.9.0 section, because the package reached nuget.org before the rows were promoted. Second, the async fire-and-forget analyzer sweep closes with no new rule, because a probe found an owner for every candidate shape.

No analyzer source changed and no new package version is published. 2.9.0 is already on nuget.org.

Code Changes

  • src/E128.Analyzers/AnalyzerReleases.Shipped.md: new Release 2.9.0 section holding E128222.
  • src/E128.Analyzers/AnalyzerReleases.Unshipped.md: New Rules table emptied, headers kept.
  • scripts/lib.sh: resolve_project passes a path to a .csproj through unchanged, so a scratch probe under .claude/tmp/ builds through the routed script.
  • scripts/build.sh: --warnings now prints the warning lines on a successful build. The usage line records the NAME|PATH.csproj form.
  • lode/: the sweep is recorded as closed, with the probe table in redundant-rules.md, and the release mapping gains the 2.9.0 row.
  • plans/async-analyzers/: rewritten to the executed, closed state.

Tests and Tooling

Probe result, one build against every installed rule set:

Shape Fires
Statement drops a Task MA0134, VSTHRD110
Statement drops a ValueTask MA0134, VSTHRD110
async lambda to Action AsyncFixer03, MA0147, VSTHRD101
async lambda to EventHandler AsyncFixer03, MA0147, VSTHRD101
async lambda to Func<Task> (control) none
await over ConfigureAwait(SuppressThrowing) none

Did not run: build and test. The change set holds zero .cs files, so the skill auto-enabled --skip-tests. Verified instead: scripts/lint-shell.sh on both edited scripts, scripts/internal/analyzer-release-check.sh (clean), scripts/readme-table-diff.sh --analyzer (no drift), scripts/internal/readme-audit.sh (clean), and scripts/internal/precommit.sh (PII and secret scan clean).

Review Guide

  • scripts/lib.sh path passthrough: confirm it cannot change name resolution for the existing src/, tests/, and benchmarks/ callers.
  • The 2.9.0 release section: confirm the row matches what nuget.org already serves.

Rollback

Revert the commit. Nothing reads the promote script's output at build time, so a revert restores the previous release-file state. The scripts/ change is additive and the path branch is unreachable for a name argument.

Links

Record E128222 under a Release 2.9.0 section. The package reached nuget.org
before the Unshipped.md rows were promoted, so the release files catch up here.

Close the AsyncAwaitBestPractices candidate sweep. A probe against every
installed analyzer set found an owner for each async shape. MA0134 and
VSTHRD110 report a discarded awaitable. AsyncFixer03, MA0147, and VSTHRD101
report an async lambda that converts to a void delegate. The two shapes with
no owner stay rejected on value. No E128 rule ships.

Let scripts/build.sh --project take a path to a .csproj, and print the warning
lines when --warnings is set. A scratch probe under .claude/tmp/ now builds
through the routed script instead of a blocked raw invocation.

Co-Authored-By: Claude
@e128
e128 merged commit be24a59 into main Nov 11, 2026
2 checks passed
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.

1 participant