Repository navigation
Package validation on the SchemaKit line: no baseline until 11.0.0 #46
Description
Rescoped 2026-10-19
SchemaKit ships under new ids (#37), so no 5.x release can be its baseline: the namespaces differ, so every comparison would report a deliberate break.
- Previews have no baseline. From 11.1.0 on, the baseline is 11.0.0.
- Until then, on
main: strike "Package validation already fails the pack on a removed public member" from the agent guide, and drop the PKV006 suppressions net11 measurements: EF Core 11 under the 5.x differ (record for SchemaKit, not merged) #47 added. - Done when 11.1.0 packs against an 11.0.0 baseline. Seed a removed public member and show the pack fails.
Options 1 and 2 below are moot. Option 3 is taken in the form above.
Original problem (2026-10-18)
Problem
EnablePackageValidation compares each pack against PackageValidationBaselineVersion (5.4.1). That baseline ships a net10.0 asset and the 11 line ships net11.0 only, so the baseline validator reports PKV006 (target framework dropped) for every package and compares no API at all — it only queues an assembly comparison for a baseline framework the new package still serves.
The net11 branch (#38) suppresses PKV006 in one CompatibilitySuppressions.xml per package, which is the documented route for a deliberate break. Confirmed by making CustomMigrationsModelDiffer.RuntimeWiringSentinel internal and packing: the pack succeeded. The standalone apicompat tool (Microsoft.DotNet.ApiCompat.Tool, --left the 5.4.1 lib/net10.0 assembly, --right the net11.0 build) reported CP0002 for the same change, so the surface check is possible, just not through dotnet pack.
This stays true for as long as the baseline is a 10-line release — until an 11-line version is published and becomes the baseline, which waits on the rename decision (#36). CLAUDE.md's "Package validation already fails the pack on a removed public member" is false on net11 until then.
Options
- Pin
Microsoft.DotNet.ApiCompat.Toolin.config/dotnet-tools.jsonand run it in the Pack job (andrelease.yml's verify job) against the baseline package'slib/net10.0assembly — restored anyway by package validation'sPackageDownload. One step, no new package reference, visible in CI logs. - Invoke the SDK's
ValidateAssembliesTaskfrom a target inDirectory.Build.propswith the baseline assembly as the left side. Runs on every build, but the task's parameter names are SDK-internal. - Accept the gap until the baseline is an 11-line release, and strike the CLAUDE.md sentence on
net11meanwhile.
Belongs with the CI matrix work in #43 if option 1 is taken.
Activity
[-]Package validation is blind on the 11 line while the baseline is a net10.0 release[/-][+]Package validation on the SchemaKit line: no baseline until 11.0.0[/+]