Repository navigation
chore: 17 mesh test suites move to MeshWeaver.Plugins — core stops building them - #2847
Conversation
…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>
There was a problem hiding this comment.
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.
| # 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 |
Test Results (shard 0)216 tests 216 ✅ 2m 22s ⏱️ Results for commit 0d2d9af. ♻️ This comment has been updated with latest results. |
Test Results (shard 5)1 121 tests 929 ✅ 1m 6s ⏱️ Results for commit 0d2d9af. ♻️ This comment has been updated with latest results. |
Test Results (shard 3)578 tests 578 ✅ 56s ⏱️ Results for commit 0d2d9af. ♻️ This comment has been updated with latest results. |
Test Results (shard 2)359 tests 359 ✅ 1m 23s ⏱️ Results for commit 0d2d9af. ♻️ This comment has been updated with latest results. |
Test Results (shard 1)419 tests 419 ✅ 1m 45s ⏱️ Results for commit 0d2d9af. ♻️ This comment has been updated with latest results. |
Test Results (shard 4)1 788 tests 1 788 ✅ 1m 31s ⏱️ Results for commit 0d2d9af. ♻️ This comment has been updated with latest results. |
Test Results4 481 tests 4 289 ✅ 9m 6s ⏱️ Results for commit 0d2d9af. ♻️ This comment has been updated with latest results. |
This is DIRTY, and the conflicts are the "a cross-repo move loses merged fixes" shape — four named fixes are at riskAttempted 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:
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:
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 — |
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.
State: green and queued, but the queue says UNMERGEABLE — one step remainsThis PR is fully verified. All 25/25 checks are green on It will not merge on its own. It sits at position 5 in the merge queue marked The remaining step, once #2941 has landed on
|
…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
# 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>
Status 2026-09-01 — rebased onto main; the original two blockers are RESOLVED, one new prerequisite
This PR sat as a
DIRTYdraft whilemaintook 70 commits. It is now merged up and re-verified fromscratch. 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@mainundersrc/, verified 17-for-17 withgit 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 isan ancestor of
MeshWeaver.Plugins@main: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 acrossMeshWeaver.Plugins,MeshWeaver.SocialMedia,MeshWeaver.Reinsurance,MeshWeaver.Manufacturingand
MeshWeaver.Education. No repo in the fleet references any of the 17. The complete set ofcore
test/projects the satellites do reach isDirectory.Build.props,Directory.Packages.props,MeshWeaver.Data.TestDomain,MeshWeaver.Fixture,MeshWeaver.Hosting.Monolith.TestBaseandMeshWeaver.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 17suites — the double-maintenance this PR exists to stop, happening live. That work is not in
Plugins, so merging as-is would lose it:
GatingDetectorTest,RegistryTransientFailureRetryTest(PluginCatalog) ·AnonymousGateUndeterminedTest,DeleteHonoursNodeTypeAccessRuleTest(Security) ·NackReachesTheWaiterDuringTeardownTest,WriteVerdictRegisteredBeforePostTest(Hosting.Monolith) ·StaticNodeMultiQueryUnionTest(Query).fix: the install no longer waits 30 s for a cover grant it documents as optional #2849, fix(mesh): the router names a spokesman — no one publishes from the main hub, and gone-subscriber stream-end drops go quiet #2928).
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.PluginsPR 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 other37 are migration adaptations — 36 are pure XML-doc-comment edits (
<see cref>→<c>where thereferenced type is off the Plugins reference graph, which would be CS1574 under
-warnaserror) andone is a deliberate fix (
MarkdownPipelineBenchmarkTestwalked up forMeshWeaver.slnx, which onlyexists in the platform checkout). Zero executable lines lost, and the
[Fact]/[Theory]sets matchfile-by-file.
What this does
The 17 suites now live in
MeshWeaver.Plugins/src/and are built and run there. Core stopsbuilding 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.TestWhat core KEEPS, and why
test/MeshWeaver.Hosting.Monolith.TestBaseMemex.Portal.Shared.Test,MeshWeaver.Documentation.Test,MeshWeaver.Graph.Test,MeshWeaver.FutuRe.Test,MeshWeaver.Todo.Test. Every satellite's dual-pathExists(...)pattern also resolves through it.test/MeshWeaver.Documentation.Testsrc//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 anyCompile Include,.props,.targetsor.slnxentry) into a deleted suite. The only remaining mentions anywhere in core are historicalprose 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.InternalsVisibleTogrants naming the moved suites are LEFT IN PLACE — the suites still need themwhen they compile in Plugins against these assemblies, the same treatment
MeshWeaver.AI.Testalreadygets 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
mainhad moved 70commits: set the constant to
0, rebuild, run the guard, read the true count out of the failure.TestTimeoutLiteralRatchetGuard.BaselineBlockingBridgeInTestRatchetGuard.TotalBudgetRouterAsTestRequestOriginRatchetGuard.TotalBudgetBoth
.allowfiles sum exactly to their budget (BlockingBridge 2+6+2+2+1+3+2+1+3+3+1 = 26;RouterRequestOrigin 1+2 = 3), and
maindid not touch either file.TheBaselineStaysCloseToTheTreepasses with slack 0, so the timeout ratchet tolerates no new literals.
Other references removed
MeshWeaver.slnx— 17<Project Path=…>entries. Diffing the weight table againstmainshowsexactly the 17 names removed and nothing else.
.github/scripts/shard-assign.sh— 17 weight rows (41 → 24 entries, 2237 → 731 s), plusthe header arithmetic they had gone stale against. Verified by executing the script: sum is 731,
24 entries (above
ShardWeightHeadroomGuard's>= 20parse floor), andMeshWeaver.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 toMeshWeaver.FutuRe.Test..github/workflows/flake-repro.yml— default project and default--filterretargeted totest/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=falseto dodge a pre-existingNU1903onSSH.NETfromsrc/MeshWeaver.Testcontainers.mainhas since fixed it: the build above is clean with no auditsuppression at all.
dotnet testrun after restoring the probed constants reported2 ratchet failures from a stale binary — the incremental build had not recompiled the changed
const.--no-incrementalthen gave 150/150. Worth knowing when probing a ratchet.🤖 Generated with Claude Code