Skip to content

Package validation on the SchemaKit line: no baseline until 11.0.0 #46

Open

Description

@CaffeinatedCoder

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.

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

  1. Pin Microsoft.DotNet.ApiCompat.Tool in .config/dotnet-tools.json and run it in the Pack job (and release.yml's verify job) against the baseline package's lib/net10.0 assembly — restored anyway by package validation's PackageDownload. One step, no new package reference, visible in CI logs.
  2. Invoke the SDK's ValidateAssembliesTask from a target in Directory.Build.props with the baseline assembly as the left side. Runs on every build, but the task's parameter names are SDK-internal.
  3. Accept the gap until the baseline is an 11-line release, and strike the CLAUDE.md sentence on net11 meanwhile.

Belongs with the CI matrix work in #43 if option 1 is taken.

Activity

  1. added this to the 11.0.0 milestone on Oct 18, 2026
  2. added
    choreBuild, CI, packaging, refactoring with no behaviour change
    package/coreAffects EFCore.ComplexIndexes
    package/postgresqlAffects EFCore.ComplexIndexes.PostgreSQL
    package/sqlserverAffects EFCore.ComplexIndexes.SqlServer
    area/releaseVersioning, changelogs, release wiring
    on Oct 18, 2026
  3. changed the title [-]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[/+] on Oct 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/releaseVersioning, changelogs, release wiringchoreBuild, CI, packaging, refactoring with no behaviour changepackage/coreAffects EFCore.ComplexIndexespackage/postgresqlAffects EFCore.ComplexIndexes.PostgreSQLpackage/sqlserverAffects EFCore.ComplexIndexes.SqlServer

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions