Repository navigation
chore(packages): core pins only what core restores (delete half) - #7262
Merged
Merged
Conversation
Drops 48 PackageVersion entries that no core project restores at any depth, measured from every project.assets.json of a full solution restore, plus MeshWeaver.Graph's Humanizer.Core reference, which nothing in that project calls. MeshWeaver.Plugins now owns those pins as fill-in entries. Kept on purpose: 12 transitive pins core's own graph carries (Azure.Core, System.ClientModel, …), and the families core still partly pins (Orleans clustering/persistence, the ModelContextProtocol trio, Microsoft.Agents.AI, Microsoft.Extensions.AI). Radzen.Blazor and the other shelf pins leave with the module-library shelf; Octokit leaves on its own two conditions. Doc: CarvingProjectsOutOfCore, "Package versions follow the projects". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Contributor
Test Results 25 files ±0 25 suites ±0 55m 19s ⏱️ +18s Results for commit 402dfb8. ± Comparison against base commit 93d883d. This pull request removes 59 and adds 22 tests. Note that renamed tests count towards both.♻️ This comment has been updated with latest results. |
rbuergi
marked this pull request as ready for review
October 26, 2026 20:31
rbuergi
enabled auto-merge (squash)
October 26, 2026 20:32
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
The reduced package list violates the existing package-family guard’s pin-count and Aspire-presence assertions.
1 open issue
What changed in this PR
This PR removes package pins that core no longer restores, moving dependency ownership toward the repositories that consume them.
Changes:
- Deletes 48 central package pins while retaining shared-family and module-library entries.
- Removes Graph’s unused
Humanizer.Corereference. - Documents package ownership, restore-graph checks, and migration ordering.
| File | Description |
|---|---|
src/MeshWeaver.Graph/MeshWeaver.Graph.csproj |
Removes the unused Humanizer dependency. |
src/MeshWeaver.Documentation/Data/Architecture/CarvingProjectsOutOfCore.md |
Documents pin ownership and migration checks. |
Directory.Packages.props |
Removes 48 package version entries no longer needed by core. |
Review effort: Balanced
…what-core-uses # Conflicts: # Directory.Packages.props
Resolves Directory.Packages.props: main dropped the transitional Octokit pin (#7265) and this branch dropped NSubstitute; both lines go. PackageFamiliesMoveTogetherGuard.TheScannerSeesEveryFamilyItPolices failed on this branch (shard 7): it required more than 100 pins and at least two Aspire.* entries, and core now pins 97 and no Aspire package. The Aspire prefix leaves the core guard (its pins live in Plugins since Plugins#4297) and the count becomes a floor of 50 that catches a misread regex without moving each time a pin leaves for the repo that uses it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
rbuergi
enabled auto-merge
October 26, 2026 20:44
rbuergi
added a commit
that referenced
this pull request
Oct 27, 2026
…its copy (#7288) #7262 dropped MeshWeaver.Graph's Humanizer.Core 3.0.10 reference because nothing in core calls it. Roslyn's Workspaces still brings Humanizer.Core 2.14.1, so the portal image's /app fell back to Humanizer 2.14.0.0, and the platform's copy is the one every module binds. The Plugins module MeshWeaver.Graph.Views (built against Humanizer 3.x) was refused at boot ("requires Humanizer 3.0.0.0 (this platform carries 2.14.0.0)"), contributed nothing, and MeshWeaver.Education's install gate went red on an unchanged commit. The lift now sits on MeshWeaver.Compiler.Pipeline, the project that brings Roslyn in. PlatformCarriedAssemblyFloorsGuard reads the closure with the module landing's own surface + link check, and asserts the floor. Its negative control lowers only Humanizer's version and gets the production refusal. Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Core's
Directory.Packages.propsnow pins only packages that some core project restores. 48 entries that no core project restores at any depth are deleted, along withMeshWeaver.Graph'sHumanizer.Corereference, which nothing in that project calls.How it was measured. I ran a full solution restore and read every
project.assets.json. Of 146 pins, 67 have no direct reference:Azure.Core,System.ClientModel,OpenTelemetry.Api, …) and stay.ModelContextProtocolandModelContextProtocol.AspNetCore(core restoresModelContextProtocol.Core),Microsoft.Agents.AIandMicrosoft.Extensions.AI.Radzen.Blazorand leave with the shelf list, andOctokit, which leaves on the two conditions inGitHubSync.Doc.
CarvingProjectsOutOfCoregets a new section, "Package versions follow the projects": the rule, how to measure it, the family exception, and what is still pinned for Plugins and why.Verified locally.
MeshWeaver.Graphbuilds in Release with-warnaserrorwith 0 warnings and 0 errors, also after mergingmain.Pairs-with: Systemorph/MeshWeaver.Plugins#4297 — that PR adds these 48 pins to Plugins as fill-in entries; this PR stays in DRAFT until it has merged into Plugins
main.Satellite-pins: AspNet.Security.OAuth.Apple, Aspire.Azure.Npgsql, Aspire.Azure.Storage.Blobs, Aspire.Hosting, Aspire.Hosting.AppHost, Aspire.Hosting.Docker, Aspire.Hosting.Kubernetes, Aspire.Hosting.PostgreSQL, Aspire.Hosting.Azure.PostgreSQL, Aspire.Hosting.Azure.AppContainers, Aspire.Hosting.Azure.KeyVault, Aspire.Hosting.Orleans, Aspire.Npgsql, Azure.Provisioning.Storage, Azure.Storage.Blobs, Azure.Storage.Common, Microsoft.Azure.Cosmos, DocSharp.Markdown, Grpc.AspNetCore, Grpc.AspNetCore.Web, Grpc.Net.Client, HtmlAgilityPack, Azure.Extensions.AspNetCore.DataProtection.Blobs, Microsoft.AspNetCore.DataProtection, Microsoft.AspNetCore.SignalR.Client, Microsoft.Data.Sqlite, SQLitePCLRaw.lib.e_sqlite3, Microsoft.Extensions.Azure, Microsoft.Identity.Web, Microsoft.Identity.Web.Ui, MessagePack, Fido2, Serilog.AspNetCore, Serilog.Settings.Configuration, Serilog.Sinks.File, SkiaSharp, SkiaSharp.NativeAssets.Linux.NoDependencies, Svg.Skia, Microsoft.Diagnostics.Runtime, Npgsql, Pgvector, Snowflake.Data, Namotion.Reflection, Aspire.Hosting.Azure.Storage, Aspire.Azure.Data.Tables, UglyToad.PdfPig, NSubstitute, Humanizer.Core — I parsed every
.csproj,.propsand.targetsin shallow clones of the default branches of MeshWeaver.Education, .Reinsurance, .SocialMedia, .Manufacturing, .Crm, .FundReporting, Memex and MeshWeaver.Deploy for a versionlessPackageReferenceto any of these ids that the repository does not pin itself. The only hit isSkiaSharpin Reinsurance'slegacy/Claims.Simulate. That repository's CI skipslegacy/, and the project imports no central list. MeshWeaver.Plugins references 47 of the 48 versionless; #4297 pins all 48 there, and its hosts and the 14 affected test projects restore and build against this tree.Refs #7205 (the same pattern for YamlDotNet).
🤖 Generated with Claude Code