Skip to content

Guard the two pinned dependencies, and let small-suite readers self-select out - #11

Merged
SebHenn merged 3 commits into
mainfrom
claude/dependabot-guards-and-readme
Aug 7, 2026
Merged

Guard the two pinned dependencies, and let small-suite readers self-select out#11
SebHenn merged 3 commits into
mainfrom
claude/dependabot-guards-and-readme

Conversation

@SebHenn

@SebHenn SebHenn commented Aug 7, 2026

Copy link
Copy Markdown
Owner

Handles the three things left open after #7: the two red Dependabot PRs, and issue #6.

Dependabot guards

#9 and #10 both broke the build on their first run, for reasons the comments already sitting beside those packages in Directory.Packages.props predicted. Both are now closed with the evidence, and this adds ignore rules for major bumps so they do not come back next Monday.

Microsoft.Testing.Extensions.TrxReport 1.9.1 → 2.3.3 is the one worth reading about. It restored and compiled with zero warnings, then failed at run time:

System.TypeLoadException: Could not load type
'Microsoft.Testing.Platform.Extensions.TestHost.IDataConsumer'
from assembly 'Microsoft.Testing.Platform, Version=2.3.3.0'

xunit.v3 3.2.2 is built against MTP 1.9.x, and NuGet unified the platform upward with no downgrade warning. Reproduced on Windows locally and on Linux in CI: baseline 177 passed with a TRX written, bump zero tests run and no TRX. No TRX is what the mutation harness reports as inconclusive rather than as a failure — the shape of breakage easiest to wave through and hardest to notice later.

docs/usage.md already stated the constraint. It just was not written anywhere Dependabot could read it, and excluding the fixture solutions was not enough because the root manifest carries TrxReport too.

Microsoft.Build.Framework 17.11.48 → 18.8.2 fails louder — MSBL001, because 18.x pulls in Microsoft.NET.StringTools without ExcludeAssets="runtime". Fixable, but not worth fixing: the package is referenced only so it can carry that attribute, since MSBuildLocator resolves the real MSBuild from the SDK. A newer version buys nothing and risks the one subsystem where a mistake shows up as a workspace that fails to load.

README (closes #6)

The break-even arithmetic was already on the page — at the bottom, under a heading that reads like marketing. The reporter measured a 12-second suite, correctly decided against adopting, and only got there after reading most of the README. A new section near the top gives the rule of thumb (more than about a minute) and points at the threshold every run already prints.

The same report found two things buried that change a reader's mind rather than confirming it: the .NET 10 / MTP framing reads as though MTP is required (xUnit v2 on VSTest has always worked), and shadow mode — the only feature that lets a reader verify the accuracy claims against their own history — was a bullet nine sections down. Both are now surfaced up top.

Safety

Not applicable. Configuration and documentation only; nothing touches selection, the graph, a widening, the cache key or a filter dialect.

Checklist

  • Tests cover the change — n/a, no code changed
  • dotnet build --configuration Release clean locally (.NET 10.0.302)
  • dotnet test tests/Tia.Core.Tests — 177 passed, TRX written, on the unbumped baseline
  • Docs updated — docs/maintaining.md now records the required status checks as live rather than pending, since Actions is operational again

🤖 Generated with Claude Code

SebHenn and others added 3 commits August 7, 2026 15:48
Both arrived on Dependabot's first run and both broke the build, for reasons the
comments beside them in Directory.Packages.props already predicted.

Microsoft.Testing.Extensions.TrxReport 1.9.1 -> 2.3.3 restored and compiled with
zero warnings, then failed at run time: TypeLoadException loading IDataConsumer
from Microsoft.Testing.Platform 2.3.3, because xunit.v3 3.2.2 is built against
1.9.x. Zero tests ran and no TRX was written - which the mutation harness reports
as inconclusive rather than as a failure, so this is the shape of breakage that
would have been easiest to merge and hardest to notice.

Microsoft.Build.Framework 17.11.48 -> 18.8.2 fails earlier and louder: 18.x pulls
in Microsoft.NET.StringTools, and Build.Locator's own guard stops the build with
MSBL001 until that carries ExcludeAssets="runtime" too. That one is fixable, but
the package is referenced only so it can carry ExcludeAssets in the first place -
MSBuildLocator resolves the real MSBuild from the installed SDK - so a newer
version buys nothing and costs a load-bearing arrangement.

Excluding the fixture solutions was not enough, because the root manifest carries
TrxReport as well. Encoding the constraint as an ignore rule is what stops both
coming back next Monday.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reported in #6 by someone who evaluated tia for a 556-test suite that runs in
about 12 seconds, correctly decided against it, and only got there after reading
most of the page. The break-even arithmetic was already here - at the bottom,
under a heading that reads like marketing. Someone whose suite is too fast should
not have to work for that answer, and a reader who self-selects out at 12 seconds
was never going to become a happy user.

The same report found two things buried that change a reader's mind rather than
confirming it. The framing around .NET 10 and Microsoft.Testing.Platform reads as
though MTP is a requirement, and the reporter nearly wrote the tool off on that
basis before reaching the support table; xUnit v2 on VSTest has always worked.
And shadow mode - the one feature that lets a reader verify the accuracy claims
against their own history instead of trusting a benchmark on someone else's code
- was a bullet point nine sections down.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The ruleset went up without them because Actions was down, and a required check
that cannot report does not fail a pull request - it blocks it indefinitely with
no way through but removing the rule. Actions is operational again and three
pull requests have now reported, so the checks are on and the file says what
they are rather than how to add them.

Keeping the note about why the order was protect-first-then-require: it is the
right sequence if the situation recurs.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@SebHenn
SebHenn merged commit cf3b7d0 into main Aug 7, 2026
5 checks passed
@SebHenn
SebHenn deleted the claude/dependabot-guards-and-readme branch August 7, 2026 13:53
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.

README: give a break-even heuristic so small-suite repos can self-select out

1 participant