Skip to content

chore: 17 mesh test suites move to MeshWeaver.Plugins — core stops building them - #2847

Merged
github-actions[bot] merged 7 commits into
mainfrom
chore/drop-migrated-tests
Sep 1, 2026
Merged

github-actions[bot] merged 7 commits into
mainfrom
chore/drop-migrated-tests

Conversation

@rbuergi

@rbuergi rbuergi commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

Status 2026-09-01 — rebased onto main; the original two blockers are RESOLVED, one new prerequisite

This PR sat as a DIRTY draft while main took 70 commits. It is now merged up and re-verified from
scratch. Nothing below is inherited from the original write-up — every claim was re-measured today.

✅ Blocker 1 (ordering) — satisfied

All 17 suites exist in MeshWeaver.Plugins@main under src/, verified 17-for-17 with git ls-tree.

✅ Blocker 2 (Plugins reaching into deleted projects) — FIXED on Plugins main

The two cross-repo references the original PR found were repointed at the local copies by Plugins
commit d7ce36a4 ("three references that only resolved because the suite lived in core"), which is
an ancestor of MeshWeaver.Plugins@main:

Plugins file Was Now
src/MeshWeaver.Mcp.Test/…csproj $(MeshWeaverRoot)/test/MeshWeaver.GitSync.Test/… ../MeshWeaver.GitSync.Test/… ✅
src/MeshWeaver.AI.Test/…csproj $(MeshWeaverRoot)/test/MeshWeaver.PathResolution.Test/NoStaticCollectionsTest.cs ../MeshWeaver.PathResolution.Test/… ✅

I re-ran the search wider than the original — every MeshWeaverRoot…/test/ reference across
MeshWeaver.Plugins, MeshWeaver.SocialMedia, MeshWeaver.Reinsurance, MeshWeaver.Manufacturing
and MeshWeaver.Education. No repo in the fleet references any of the 17. The complete set of
core test/ projects the satellites do reach is Directory.Build.props, Directory.Packages.props,
MeshWeaver.Data.TestDomain, MeshWeaver.Fixture, MeshWeaver.Hosting.Monolith.TestBase and
MeshWeaver.Hosting.Orleans.TestBase — none of which this PR touches.

🚨 New prerequisite: main kept adding tests to the copies this PR deletes

Between this branch's point (90ff7888d) and today, 14 core PRs landed changes inside the 17
suites — the double-maintenance this PR exists to stop, happening live. That work is not in
Plugins, so merging as-is would lose it:

Several guard precisely the silent-failure classes this fleet cares about — a permission fold that
reached no verdict must be undetermined, never an anonymous grant.

A companion MeshWeaver.Plugins PR ports all of it. That PR must merge before this one.

I also confirmed the pre-existing divergence is benign: of the 54 files differing between
core@branch-point and Plugins@main, 17 are .csproj (the migration rewrote references) and the other
37 are migration adaptations — 36 are pure XML-doc-comment edits (<see cref> → <c> where the
referenced type is off the Plugins reference graph, which would be CS1574 under -warnaserror) and
one is a deliberate fix (MarkdownPipelineBenchmarkTest walked up for MeshWeaver.slnx, which only
exists in the platform checkout). Zero executable lines lost, and the [Fact]/[Theory] sets match
file-by-file.

What this does

The 17 suites now live in MeshWeaver.Plugins/src/ and are built and run there. Core stops
building them so they are not maintained, sharded and paid for twice.

Deleted from test/: MeshWeaver.AccessControl.Test, MeshWeaver.MathDemo.Test,
MeshWeaver.PythonDemo.Test, MeshWeaver.Acme.Test, MeshWeaver.Auth.Test,
MeshWeaver.Autocomplete.Test, MeshWeaver.Content.Test,
MeshWeaver.ContentCollections.Indexing.Graph.Test, MeshWeaver.GitSync.Test,
MeshWeaver.Markdown.Test, MeshWeaver.NodeOperations.Test, MeshWeaver.PathResolution.Test,
MeshWeaver.Persistence.Test, MeshWeaver.PluginCatalog.Test, MeshWeaver.Query.Test,
MeshWeaver.Security.Test, MeshWeaver.Hosting.Monolith.Test

What core KEEPS, and why

Kept Why
test/MeshWeaver.Hosting.Monolith.TestBase Five core projects reference it: Memex.Portal.Shared.Test, MeshWeaver.Documentation.Test, MeshWeaver.Graph.Test, MeshWeaver.FutuRe.Test, MeshWeaver.Todo.Test. Every satellite's dual-path Exists(...) pattern also resolves through it.
test/MeshWeaver.Documentation.Test Core's source-tree ratchet-guard home. The guards walk up from the test binary to scan core's own src//test/, so moving them would scan the wrong tree and report green on an empty scan.

Safety check — re-executed on the merged tree

No surviving project has a ProjectReference (or any Compile Include, .props, .targets or
.slnx entry) into a deleted suite.
The only remaining mentions anywhere in core are historical
prose in comments (dotnet-test.yml, record-host-crash.py, flake-repro.yml,
alc-unload-probe.yml, Directory.Build.props/.targets) — incident narratives this repo keeps.

InternalsVisibleTo grants naming the moved suites are LEFT IN PLACE — the suites still need them
when they compile in Plugins against these assemblies, the same treatment MeshWeaver.AI.Test already
gets after its own migration.

Ratchet baselines — re-derived today, all three UNCHANGED

🚨 Every baseline moved DOWN because the scanned tree shrank, not because a guard was wrong. I
re-derived each the same way rather than trusting the original numbers, since main had moved 70
commits: set the constant to 0, rebuild, run the guard, read the true count out of the failure.

Guard Old (pre-migration) This PR Re-derived today Evidence
TestTimeoutLiteralRatchetGuard.Baseline 1490 401 401 ✅ "Hand-written test timeouts rose to 401 (baseline 0)"
BlockingBridgeInTestRatchetGuard.TotalBudget 36 26 26 ✅ "TOTAL 26 allowances > 0 budgeted"
RouterAsTestRequestOriginRatchetGuard.TotalBudget 6 3 3 ✅ "TOTAL 3 allowances > 0 budgeted"

Both .allow files sum exactly to their budget (BlockingBridge 2+6+2+2+1+3+2+1+3+3+1 = 26;
RouterRequestOrigin 1+2 = 3), and main did not touch either file. TheBaselineStaysCloseToTheTree
passes with slack 0, so the timeout ratchet tolerates no new literals.

Other references removed

  • MeshWeaver.slnx — 17 <Project Path=…> entries. Diffing the weight table against main shows
    exactly the 17 names removed and nothing else.
  • .github/scripts/shard-assign.sh — 17 weight rows (41 → 24 entries, 2237 → 731 s), plus
    the header arithmetic they had gone stale against. Verified by executing the script: sum is 731,
    24 entries (above ShardWeightHeadroomGuard's >= 20 parse floor), and
    MeshWeaver.Hosting.Orleans.Test (269 s) is the new long pole, clearing the headroom trigger
    (60% of the 480 s cap = 288 s).
  • .github/workflows/alc-unload-probe.yml — dispatch default retargeted to MeshWeaver.FutuRe.Test.
  • .github/workflows/flake-repro.yml — default project and default --filter retargeted to
    test/MeshWeaver.Hosting.Orleans.Test / PartitionRootActivationTest.

Verification actually executed on the merged tree

  • MW_ALLOW_SOLUTION_BUILD=1 dotnet build MeshWeaver.slnx -c Release -warnaserror --no-incremental
    → Build succeeded. 0 Warning(s), 0 Error(s), all 70/70 solution projects.
  • dotnet test test/MeshWeaver.Documentation.Test -c Release → 150/150 passed, every ratchet green.

🚦 The NuGet-audit caveat in the original write-up is GONE. That version needed
-p:NuGetAudit=false to dodge a pre-existing NU1903 on SSH.NET from
src/MeshWeaver.Testcontainers. main has since fixed it: the build above is clean with no audit
suppression at all
.

⚠️ One note for the record: the first dotnet test run after restoring the probed constants reported
2 ratchet failures from a stale binary — the incremental build had not recompiled the changed
const. --no-incremental then gave 150/150. Worth knowing when probing a ratchet.

🤖 Generated with Claude Code

…ilding them

The suites now live in MeshWeaver.Plugins/src/ and are built and run there. Core
stops building them so they are not maintained, sharded and paid for twice.

Deleted from test/: AccessControl, MathDemo, PythonDemo, Acme, Auth, Autocomplete,
Content, ContentCollections.Indexing.Graph, GitSync, Markdown, NodeOperations,
PathResolution, Persistence, PluginCatalog, Query, Security, Hosting.Monolith.

KEPT deliberately:
  * Hosting.Monolith.TestBase — five core projects reference it (Memex.Portal.Shared.Test,
    Documentation.Test, Graph.Test, FutuRe.Test, Todo.Test).
  * Documentation.Test — core's source-tree ratchet-guard home; the guards walk up from
    the test binary to scan core's own src/ and test/, so they cannot move.

No surviving project had a ProjectReference to a deleted one — verified before deleting.
InternalsVisibleTo grants naming the moved suites are LEFT IN PLACE: the suites still need
them when they compile in Plugins against these assemblies, which is the same treatment
MeshWeaver.AI.Test already gets after its own migration.

Ratchet baselines moved DOWN because the scanned tree shrank, not because a guard was wrong:
  * TestTimeoutLiteralRatchetGuard.Baseline 1490 -> 401 (measured by probing at 0).
  * BlockingBridgeInTestRatchetGuard.TotalBudget 36 -> 26, with the three stale
    BlockingBridgeSites.allow lines deleted.
  * RouterAsTestRequestOriginRatchetGuard.TotalBudget 6 -> 3, with the two stale
    RouterRequestOriginSites.allow lines deleted.

Also retargeted two manual-dispatch workflow defaults that pointed into a deleted suite
(alc-unload-probe -> FutuRe.Test, flake-repro -> Orleans.Test/PartitionRootActivationTest),
and refreshed shard-assign.sh's weight table plus the header arithmetic it had gone stale
against.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings August 30, 2026 21:42

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR removes 17 test suites from the core test/ tree because they have been migrated to MeshWeaver.Plugins, and updates core-only CI/ratchet infrastructure (allow-lists, budgets, and manual workflows) to reflect the smaller test surface.

Changes:

  • Deleted the migrated test projects (and their fixtures/content) from test/ so core no longer builds/runs them.
  • Updated ratchet guards and allow-lists to match the new (smaller) core test tree.
  • Retargeted CI helper scripts and manual workflows that previously defaulted to migrated suites.

Reviewed changes

Copilot reviewed 83 out of 593 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
test/RouterRequestOriginSites.allow Removed migrated allow-list entries (now needs cleanup of orphaned rationale comments).
test/MeshWeaver.Security.Test/TestPaths.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Security.Test/TestCollections.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Security.Test/SatelliteMainNodeAccessTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Security.Test/ReservedPartitionMirrorTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Security.Test/RedirectOnDeniedTests.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Security.Test/PermissionQueryHammerReproTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Security.Test/MeshWeaver.Security.Test.csproj Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Security.Test/HubSubscriptionSecurityTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Security.Test/FeedbackPrivacyTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Security.Test/appsettings.json Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Security.Test/AnonymousGateTests.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Query.Test/TestPaths.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Query.Test/TestHubExtensions.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Query.Test/TestCollections.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Query.Test/MeshWeaver.Query.Test.csproj Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Query.Test/appsettings.json Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.PythonDemo.Test/TestPaths.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.PythonDemo.Test/MeshWeaver.PythonDemo.Test.csproj Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.PluginCatalog.Test/StalledReadDiagnosticsTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.PluginCatalog.Test/RegistryTokenFallbackTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.PluginCatalog.Test/RegistrationKeysTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.PluginCatalog.Test/PluginRegistryTokensTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.PluginCatalog.Test/PluginCatalogOptionsTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.PluginCatalog.Test/PackageReleasedVersionTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.PluginCatalog.Test/PackageLicenseTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.PluginCatalog.Test/MeshWeaver.PluginCatalog.Test.csproj Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.PluginCatalog.Test/InstallSeedBoundTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.PluginCatalog.Test/InstallGatingHandshakeTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.PluginCatalog.Test/InstallByDefaultConfigTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Persistence.Test/UnregisteredNodeTypeTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Persistence.Test/TestPaths.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Persistence.Test/TestHubExtensions.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Persistence.Test/TestHelpers/ChangeAccumulator.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Persistence.Test/TestCollections.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Persistence.Test/StorageProviders.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Persistence.Test/MeshWeaver.Persistence.Test.csproj Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Persistence.Test/Markdown/InteractiveShowcase.md Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Persistence.Test/Courses/README.md Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Persistence.Test/Courses/CSharpBasics/Module02/Theory/01-WorkingWithData.md Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Persistence.Test/Courses/CSharpBasics/Module02/Exercise/AverageStock/Statement.md Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Persistence.Test/Courses/CSharpBasics/Module02/Exercise/AverageStock/Source/Starter.md Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Persistence.Test/Courses/CSharpBasics/Module02/Exercise/AverageStock/Solution/Solution.md Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Persistence.Test/Courses/CSharpBasics/Module01/Theory/01-HelloControls.md Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Persistence.Test/appsettings.json Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.PathResolution.Test/MeshWeaver.PathResolution.Test.csproj Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.PathResolution.Test/GlobalSettingsAccessTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.PathResolution.Test/AutocompleteIsolationTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.NodeOperations.Test/TestPaths.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.NodeOperations.Test/TestCollections.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.NodeOperations.Test/MeshWeaver.NodeOperations.Test.csproj Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.NodeOperations.Test/CreateNodeFailClosedTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.NodeOperations.Test/ApiTokenAccessTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.MathDemo.Test/TestPaths.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.MathDemo.Test/MeshWeaver.MathDemo.Test.csproj Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.MathDemo.Test/MatrixViewsTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Markdown.Test/MeshWeaver.Markdown.Test.csproj Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Markdown.Test/MermaidRenderingTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Markdown.Test/MarkdownImageHrefTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Markdown.Test/KernelSubscribeGateIntegrationTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/TestPaths.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/TestModuleInit.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/TestHubExtensions.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/TestData/MeshWeaver/Documentation/DataMesh/UnifiedPath.md Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/TestData/MeshWeaver/Documentation/DataMesh/InteractiveMarkdown.md Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/TestContent/MeshWeaver/Documentation/DataMesh/UnifiedPath/logo.svg Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/TestContent/MeshWeaver/Documentation/DataMesh/UnifiedPath/icon.svg Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/StreamProviderTests.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/StaticNodePersistenceEchoTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/SpaceWelcomeTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/SpaceEditableTitleTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/SelfUpdateEventDriver.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/RouterTrafficCapture.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/OverwritePropagationTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/NodeOperationOriginTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/NextLevelNavigationTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/MonolithMeshTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/MarkdownEmbedAnnotationsTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/LocalePreferenceTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/KernelReplChainingTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/DefaultNodeChainIdempotenceTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/CrossHubWritePersistenceTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/CreateEmitsAfterPersistTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/ConsoleCaptureExecutionContextLeakTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/ClrMdRootAnalysisOutcome.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Hosting.Monolith.Test/appsettings.json Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.GitSync.Test/PullRequestRicherTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.GitSync.Test/OctokitGitHubRepoClientEmptyTokenTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.GitSync.Test/NewBranchBaseTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.GitSync.Test/MeshWeaver.GitSync.Test.csproj Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.GitSync.Test/IncrementalFetchDefaultsTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.GitSync.Test/GitHubCredentialServiceTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.GitSync.Test/GitHistoryTabTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.GitSync.Test/EmptyRepoToleranceTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Documentation.Test/TestTimeoutLiteralRatchetGuard.cs Updated ratchet baseline/commentary for the reduced core test tree (now needs a small doc fix for the “seeded at” line).
test/MeshWeaver.Documentation.Test/RouterAsTestRequestOriginRatchetGuard.cs Lowered budget to match the reduced allow-list.
test/MeshWeaver.Documentation.Test/BlockingBridgeInTestRatchetGuard.cs Lowered budget to match the reduced allow-list.
test/MeshWeaver.ContentCollections.Indexing.Graph.Test/MeshWeaver.ContentCollections.Indexing.Graph.Test.csproj Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.ContentCollections.Indexing.Graph.Test/DocumentPathsTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Content.Test/xunit.runner.json Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Content.Test/TestPaths.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Content.Test/TestHubExtensions.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Content.Test/TestCollections.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Content.Test/MeshWeaver.Content.Test.csproj Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Content.Test/Markdown/ReadMe.md Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Content.Test/Markdown/Overview.md Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Content.Test/appsettings.json Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Autocomplete.Test/TestPaths.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Autocomplete.Test/MeshWeaver.Autocomplete.Test.csproj Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Autocomplete.Test/appsettings.json Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Auth.Test/RegistrationPreflightTest.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Auth.Test/MeshWeaver.Auth.Test.csproj Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Acme.Test/TestPaths.cs Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.Acme.Test/MeshWeaver.Acme.Test.csproj Removed (suite migrated to MeshWeaver.Plugins).
test/MeshWeaver.AccessControl.Test/MeshWeaver.AccessControl.Test.csproj Removed (suite migrated to MeshWeaver.Plugins).
test/BlockingBridgeSites.allow Removed migrated allow-list entries to match reduced budgets.
.github/workflows/flake-repro.yml Retargeted default repro project/filter to a suite that still exists in core.
.github/workflows/alc-unload-probe.yml Retargeted default probe project to a suite that still exists in core.
.github/scripts/shard-assign.sh Removed migrated suites from shard weight table and updated explanatory comments accordingly.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines 32 to 36
# The leak being pinned is literally `CreateNodeRequest@mesh/<self>` (#981): a self-targeted create
# on the ROUTER whose reply the router's own HandleCallbacks drops for want of a registered subject.
# Change either end and the test no longer reproduces the shape it exists to pin.
test/MeshWeaver.Hosting.Monolith.Test/UpsertInnerCreateObservationTest.cs 2

# The interleaving under test is an ORDERING on the router's action block: a stalling handler owns
@github-actions

github-actions Bot commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 0)

216 tests   216 ✅  2m 22s ⏱️
  1 suites    0 💤
  1 files      0 ❌

Results for commit 0d2d9af.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 5)

1 121 tests   929 ✅  1m 6s ⏱️
    3 suites  192 💤
    3 files      0 ❌

Results for commit 0d2d9af.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 3)

578 tests   578 ✅  56s ⏱️
  3 suites    0 💤
  3 files      0 ❌

Results for commit 0d2d9af.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 2)

359 tests   359 ✅  1m 23s ⏱️
  2 suites    0 💤
  2 files      0 ❌

Results for commit 0d2d9af.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 1)

419 tests   419 ✅  1m 45s ⏱️
  1 suites    0 💤
  1 files      0 ❌

Results for commit 0d2d9af.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

Test Results (shard 4)

1 788 tests   1 788 ✅  1m 31s ⏱️
    2 suites      0 💤
    2 files        0 ❌

Results for commit 0d2d9af.

♻️ This comment has been updated with latest results.

@github-actions

github-actions Bot commented Aug 30, 2026 •

Copy link
Copy Markdown
Contributor

Test Results

4 481 tests   4 289 ✅  9m 6s ⏱️
   12 suites    192 💤
   12 files        0 ❌

Results for commit 0d2d9af.

♻️ This comment has been updated with latest results.

@rbuergi

rbuergi commented Aug 31, 2026

Copy link
Copy Markdown
Contributor Author

This is DIRTY, and the conflicts are the "a cross-repo move loses merged fixes" shape — four named fixes are at risk

Attempted a merge from main. It does not conflict on content — it conflicts modify/delete on four files this PR deletes and main has since modified:

deleted here modified on main by
test/MeshWeaver.Content.Test/SyncedPartitionReadOnlyTest.cs #2838 — docs world-readable (PublicRead on Doc/_Policy)
test/MeshWeaver.Hosting.Monolith.Test/CompileFinishAndDisposeTest.cs #2859 — the compile lane finishes by OUTCOME
test/MeshWeaver.Hosting.Monolith.Test/SupersededActivationPatchNackTest.cs #2840 — a PARTIAL merge refusal is still a refusal
test/MeshWeaver.PluginCatalog.Test/InstallGatingHandshakeTest.cs #2849 — the install no longer waits 30 s for an optional grant

Git cannot resolve this for you, and neither can I, because the right answer is not in this repo: it depends on whether the MeshWeaver.Plugins copies of these four suites already carry those four changes.

That is the failure mode where a moved file loses the fixes merged into it after the move was written, and it is invisible in the diff — the diff just shows a deletion, which is what the PR is for.

Suggested order, since this is still a draft:

  1. Diff each of the four against its Plugins counterpart.
  2. Port anything missing into Plugins first — the receiving copy must be the newer one.
  3. Then merge main here and keep the deletions; the conflict becomes trivial.

I have deliberately not resolved or pushed anything to this branch: taking either side mechanically would either resurrect files you intend to delete or discard four fixes, and the merge itself would look clean in both cases.

(Also: this branch is checked out in a worktree, and #2853 — integration/core-batch — is now closed, since three of its four members landed individually.)

Resolution: every conflict was modify/delete inside one of the 17 suites this
branch removes, so the deletion stands. Main also ADDED seven test files into
those suites since the branch point; they are deleted here and ported to
MeshWeaver.Plugins in the companion PR, so no coverage is lost.
@rbuergi
rbuergi marked this pull request as ready for review September 1, 2026 11:25
@rbuergi
rbuergi enabled auto-merge September 1, 2026 11:26
@rbuergi
rbuergi added this pull request to the merge queue Sep 1, 2026
@rbuergi

rbuergi commented Sep 1, 2026

Copy link
Copy Markdown
Contributor Author

State: green and queued, but the queue says UNMERGEABLE — one step remains

This PR is fully verified. All 25/25 checks are green on 7b0a38b, mergeStateStatus=CLEAN,
and the branch merges cleanly onto today's main (b54fb5f16). It was taken out of draft and
enqueued.

It will not merge on its own. It sits at position 5 in the merge queue marked UNMERGEABLE,
because #2941 is ahead of it at position 4 and also edits MeshWeaver.slnx — it removes
ContentCollections.Indexing, ContentCollections.Indexing.Graph and Maps, while this PR removes
17 test/… entries from overlapping hunks of the same file. The conflict is speculative (against the
queued state), not against main.

The remaining step, once #2941 has landed on main

git fetch origin main
git merge origin/main            # resolve MeshWeaver.slnx: keep BOTH sets of removals
git push
# let the suite re-run, then re-enqueue:
gh pr merge 2847 --auto

MeshWeaver.slnx is expected to be the only conflict — every other file this PR touches
(shard-assign.sh, the two workflow defaults, the three ratchet guards, the two .allow files) is
untouched by anything currently queued.

Do not re-derive the ratchets for that merge

They were re-derived today by probing at 0 and are unchanged: TestTimeoutLiteralRatchetGuard
401, BlockingBridgeInTestRatchetGuard 26, RouterAsTestRequestOriginRatchetGuard 3.
A trunk merge does not move them unless it adds test/ sites — re-probe only if the guard goes red.

Ordering

MeshWeaver.Plugins#1087 ports the
coverage main added to these suites since the branch point (7 new files + 8 new test methods) and
should land first. It is armed. Its only red is
Plugins#1088's subject — a pre-existing
MSB1008 defect that has been failing that job on every Plugins PR since this morning, unrelated
to either port.

🤖 Generated with Claude Code

@rbuergi
rbuergi removed this pull request from the merge queue due to a manual request Sep 1, 2026
@rbuergi
rbuergi added this pull request to the merge queue Sep 1, 2026
@rbuergi
rbuergi removed this pull request from the merge queue due to a manual request Sep 1, 2026
…s are deleted

Stacked on #2847 (tranche 1, 17 suites). The directive is that all tests move out
of core and are REMOVED from it; this is the second tranche.

MOVED to MeshWeaver.Plugins (plugins#1097), where they build and RUN:
  PluginImage, Testcontainers, Kernel, Json, Reactive.Assertions, Search,
  Serialization, Todo, FutuRe.

Nine of the smallest surviving leaves, chosen so the dual-path support-lib shape is
proven at 20 test files rather than discovered at Graph.Test's 165. They cover all
three dependency shapes: none, Fixture, Monolith.TestBase, and both.

DELETED outright, because nothing anywhere uses them:
  MeshWeaver.Hub.Fixture   — zero ProjectReferences in core, zero source mentions,
                             zero in all three satellite repos. Only MeshWeaver.slnx
                             named it, so it was built and referenced by nothing.
  MeshWeaver.TestDomain    — zero consumers; its only mentions are its own files.
                             (A Plugins skill doc quotes CashflowElement.cs as a
                             modelling example by PATH; that citation is prose, not a
                             build edge, and is being updated separately.)

Safety, re-verified on the merged tree: no surviving project has a ProjectReference
to any of the eleven, and after the deletion neither MeshWeaver.slnx nor
shard-assign.sh names any of them.

Coverage is not lost, and that is now CHECKED rather than asserted: plugins#1095's
drift gate reports OK for all nine — every [Fact]/[Theory] in core's copy has a
counterpart in Plugins (FutuRe 59, Json 60, Reactive.Assertions 23, Serialization 14,
Kernel 11, Todo 6, PluginImage 4, Testcontainers 4, Search 3).

Numbers that moved because the tree shrank, each re-derived by probing at 0:
  * TestTimeoutLiteralRatchetGuard.Baseline 401 -> 386 (the nine carried 15 literals).
  * BlockingBridgeInTestRatchetGuard.TotalBudget stays 26 and
    RouterAsTestRequestOriginRatchetGuard.TotalBudget stays 3 — neither .allow file
    names any of the nine, so neither budget moves.
  * ShardWeightHeadroomGuard's parse floor 20 -> 10. That is a NON-VACUITY floor —
    it catches a parse that returned nothing — so it has to track the table's real
    size: 41 entries -> 24 (#2847) -> 14 here. A floor left above the real count
    fails every run while claiming the parse broke.
  * shard-assign.sh: 10 weight rows removed, 24 entries/731 s -> 14/658 s.
    Hosting.Orleans.Test (269 s) remains the long pole and still clears the headroom
    trigger (60% of the 480 s cap = 288 s).

Verified: full solution Release build with -warnaserror -> 59/59 projects, 0 warnings,
0 errors; dotnet test test/MeshWeaver.Documentation.Test -c Release -> 150/150 passed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…-tests

chore: tranche 2 — nine more test suites leave core, and two dead ones are deleted
@github-actions
github-actions Bot enabled auto-merge September 1, 2026 12:50
rbuergi and others added 3 commits September 1, 2026 15:13
# Conflicts:
#	MeshWeaver.slnx
#	test/MeshWeaver.Content.Test/MeshWeaver.Content.Test.csproj
#	test/MeshWeaver.Hosting.Monolith.Test/CreateOrUpdateNodeRequestTest.cs
#	test/MeshWeaver.Hosting.Monolith.Test/MeshWeaver.Hosting.Monolith.Test.csproj
#	test/MeshWeaver.Hosting.Monolith.Test/PartitionRootBootstrapTest.cs
#	test/MeshWeaver.MathDemo.Test/MatrixViewsTest.cs
#	test/MeshWeaver.Persistence.Test/MeshWeaver.Persistence.Test.csproj
#	test/MeshWeaver.Query.Test/MeshWeaver.Query.Test.csproj
#	test/MeshWeaver.Security.Test/MeshWeaver.Security.Test.csproj
MeshBootstrapTest.cs and NodeRepoMainNodeRebaseTest.cs arrived on main after
this branch was cut, so the merge kept them while deleting their csproj —
leaving source that compiles in no project and runs nowhere.

Both are covered in MeshWeaver.Plugins (verified by scripts/core-test-drift.py,
which reports all 26 shared suites carry core's coverage), so removing them
loses nothing.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Two things the trunk merge invalidated:

1. The branch pinned Baseline = 386 against a tree from before ~40 core commits
   landed; main now pins 1490. Neither is right for the MERGED tree. Re-derived
   by probing at 0 and reading the true count from the failure: 387.
   TheBaselineStaysCloseToTheTree forbids leaving slack, so this must track the
   tree rather than inherit either side's number.

2. MeshWeaver.slnx merged to main's copy, which still lists five suites this
   branch deletes (NodeOperations, PluginCatalog, Search, Security, TestDomain).
   A solution naming a project that is not on disk fails the build, and a
   project assigned to a shard but absent from the solution is built by nothing
   and reports nothing — the defect that cost core#2966 a red today.
   Removed; all 56 remaining entries verified present on disk.

Also delete-wins on NodeTypePathRegistrationTest.cs, which main modified inside
a suite this branch removes; its coverage is verified present in Plugins by
scripts/core-test-drift.py.

TestTimeoutLiteralRatchetGuard 3/3 green.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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