Repository navigation
chore(deps): the platform carries no YamlDotNet — drop the last reference and its PackageVersion - #7205
Conversation
…ence and its PackageVersion No core code has used YamlDotNet since #7180 (MeshWeaver.Yaml). The reference in MeshWeaver.Hosting and the central PackageVersion stayed only for MeshWeaver.Plugins' AI and Publish modules, which move to MeshWeaver.Yaml in MeshWeaver.Plugins#4227. This is the deleting half: it lands after that PR merges. Docs: TolerantYaml gains "No third-party YAML library in the platform" (including what an already-deployed bundle that ships its own copy does); DependencyMajorUpgrades records that YamlDotNet left the fleet (the 16.3 -> 18.1 entry stays as history). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
🟡 Changes recommended
The stated pairing gate does not enforce the prerequisite Plugins merge for this dependency-only removal.
1 open issue
What changed in this PR
This PR completes core’s move to MeshWeaver.Yaml by removing the remaining YamlDotNet dependency, following the planned Plugins migration.
Changes:
- Remove the hosting package reference and central YamlDotNet version.
- Document the dependency removal and expected loading behavior for older module bundles.
- Preserve the historical dependency-upgrade record.
| File | Description |
|---|---|
src/MeshWeaver.Hosting/MeshWeaver.Hosting.csproj |
Remove YamlDotNet and explain use of the platform YAML library. |
src/MeshWeaver.Documentation/Data/Architecture/TolerantYaml.md |
Document module migration and legacy-bundle compatibility. |
src/MeshWeaver.Documentation/Data/Architecture/DependencyMajorUpgrades.md |
Record YamlDotNet’s removal while retaining upgrade history. |
Directory.Packages.props |
Remove the central YamlDotNet package version. |
Review effort: Balanced
| <!-- YAML is read and written with the platform's own MeshWeaver.Yaml | ||
| (Doc/Architecture/TolerantYaml), referenced below. The platform carries no third-party YAML | ||
| library: the last users, MeshWeaver.Plugins' AI and Publish modules, moved to MeshWeaver.Yaml. --> |
There was a problem hiding this comment.
Confirmed, on both counts. check-cross-repo-pair.py returns success at "No public type or member left src/" without resolving Pairs-with:. check-package-pin-removal.py checks the Satellite-pins: declaration only, which its own docstring says is by design. So no gate held this PR. The description's "the Pairs-with: gate holds it red" was wrong, and I've corrected it.
The hold that applied is the one you named: the PR stayed in draft. A watcher script marked it ready only after it saw Systemorph/MeshWeaver.Plugins#4227 merged: true over REST. #4227 is on Plugins main as 9142c1c99b. On that tree, git grep YamlDotNet finds no PackageReference and no code use. The remaining mentions are doc comments and ModuleLinkVersionTest, which now measures against Markdig. So removing the pin here leaves no versionless reference to strand.
The gap itself, that a declared Pairs-with: goes unresolved when only a dependency leaves, is filed for triage rather than widened in this PR.
Test Results 25 files 25 suites 56m 57s ⏱️ Results for commit 9e3fe42. |

What
The platform no longer carries YamlDotNet. Since #7180 no core code has used it: core reads and writes YAML with its own
MeshWeaver.Yaml(Doc/Architecture/TolerantYaml). The reference inMeshWeaver.Hostingand the centralPackageVersionwere kept only because MeshWeaver.Plugins'MeshWeaver.AIandMeshWeaver.Publishreferenced YamlDotNet versionless. Systemorph/MeshWeaver.Plugins#4227 moves both toMeshWeaver.Yaml. This PR is the deleting half:src/MeshWeaver.Hosting/MeshWeaver.Hosting.csproj: theYamlDotNetPackageReferenceis removed, and the comment now says why there is none.Directory.Packages.props: theYamlDotNetPackageVersionand its comment are removed.TolerantYaml.mdgains a section, "No third-party YAML library in the platform".DependencyMajorUpgrades.mdrecords that YamlDotNet has left the fleet. The 16.3 → 18.1 entry and the incident history are unchanged.Pairs-with: Systemorph/MeshWeaver.Plugins#4227 — this PR lands only after that PR has merged into Plugins
main. Until then, removing thePackageVersionwould break Plugins' restore of the versionless references (NU1010).Satellite-pins: YamlDotNet — I ran
git grep -i yamldotnet origin/mainin every repository that imports or pins this package list. MeshWeaver.Plugins, after #4227: noPackageReference, no code use and no in-mesh node source left; the only mentions are incident history inHosting/BuildAndReleaseProcess.md,Hosting/BuildService.mdand theModuleLinkVersionTeststand-ins, which need no package. MeshWeaver.Education, .Reinsurance, .SocialMedia, .Manufacturing, .Crm and .FundReporting: 0 hits each. A semanticsearch 'YamlDotNet DeserializerBuilder partitions:all'on the control instance returned 2 hits, a doc page and a triage item, and no node source. It read 60 partitions, 13 of them only in part, so that count is a floor. The same search on the public instance's MCP failed with a provider timeout, so no sweep was established there.An already-deployed bundle on an image without YamlDotNet
The AI bundles already published were built while
MeshWeaver.AIstill referenced YamlDotNet. They ship their ownYamlDotNet.dllin their closure: that is the 2026-09-11 incident shape recorded inModulePlatformLinkGate.md, where the bundle "shipped its own YamlDotNet". The link rule (ModulePlatformLink: a closure reference stays out of the denominator unlesssurface.IsPlatformBound(name)) handles such a reference as follows:Linkable, and at run time the module binds the copy beside it, like any private dependency.So an already-deployed bundle keeps loading. There is no binding conflict, because no platform copy remains to conflict with, and there is no
FileNotFoundException, because the copy travels with the bundle. Bundles published after Plugins#4227 referenceMeshWeaver.Yaml, which is a platform assembly (MeshWeaver.Hostingreferences it). Not established: I did not open a currently published AI or Publish bundle to confirm thatYamlDotNet.dllis in it today. The statement above rests on the recorded incident and the closure rule.Verified locally
Each project built
-c Release -warnaserrorwith0 Error(s):MeshWeaver.HostingandMeshWeaver.Documentation.Test, which embeds the edited pages.git grep -i yamldotnetover every non-Markdown file in core finds no code use: only doc-comment examples of the 09-11 status line and string data inPlatformLinkDecisionTest. Documentation guards, run from the built executable:DocumentationLinkIntegrityTest,DocumentationFrontMatterGuard,PackageFamiliesMoveTogetherGuardandModuleBuildLedgerLaneGuard, 16/16 passed.scripts/check-package-pin-removal.pywas run against this body locally: "Every removed entry is declared: YamlDotNet", exit 0. Negative control: a body without the declaration exits 1 and names YamlDotNet.Not armed
The ordering was held by draft, not by a gate: neither
Pairs-with:norSatellite-pins:is resolved when only a dependency leaves (see the review thread). The PR left draft only after Systemorph/MeshWeaver.Plugins#4227 merged into Pluginsmain(9142c1c99b).🤖 Generated with Claude Code