Skip to content

The dependency gate is about packaging, not about the build leg - #1185

Merged
Rafael-SOWNet merged 1 commit into
masterfrom
dependency-gate-is-leg-independent
Sep 5, 2026
Merged

Rafael-SOWNet merged 1 commit into
masterfrom
dependency-gate-is-leg-independent

Conversation

@Rafael-SOWNet

Copy link
Copy Markdown
Member

This fixes master. I merged #1181 green on net10.0 and it turned the C# Test workflow red on netstandard — a reference assembly the netstandard2.0 leg resolves against and net10.0 does not.

The gate asserted an exact reference set measured on one leg, so it was asserting a fact about the build rather than about the dependencies.

The distinction it was missing

Which framework assemblies a leg resolves is not a packaging decision. Which third-party ones it references is.

  • the third-party set is asserted exactly, in both directions
  • the framework ones only as a set nothing may exceed — a leg resolving fewer is not an event; a leg pulling in something new still fails, which is the case that mattered (System.Text.Json arriving with Core/Serialization)

netstandard was also being counted as third-party by the second test, since it does not start with System. — which is why both failed rather than one. There is now a single predicate saying what a framework assembly is, and both tests use it.

Recorded in the test rather than quietly fixed

The shape of the mistake is the useful part, so the remarks say it: a check that passes on the leg it was written against and fails on another is not a weaker check, it is a check of something else. Packaging.md is corrected to match.

Checks

KernelDependenciesTest green locally; the leg that caught this is CI's, so that is the one to watch here.

🤖 Generated with Claude Code

https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura

I merged #1181 green on net10.0 and it turned master's C# Test red on
"netstandard" -- a reference assembly the netstandard2.0 leg resolves against
and net10.0 does not. The gate asserted an exact set measured on one leg, so
it was asserting a fact about the build rather than about the dependencies.

Which framework assemblies a leg resolves is not a packaging decision. Which
third-party ones it references is. So the third-party set is asserted exactly
and in both directions, and the framework ones only as a set nothing may
exceed: a leg resolving fewer is not an event, a leg pulling in something new
-- System.Text.Json arriving with Core/Serialization is the case in point --
still fails.

"netstandard" was also being counted as third-party by the second test, since
it does not start with "System.", which is why both failed rather than one.
There is now one predicate saying what a framework assembly is, and both tests
use it.

The test's own remarks record the mistake, because the shape of it is the
useful part: a check that passes on the leg it was written against and fails
on another is not a weaker check, it is a check of something else.

Full suite green locally; the leg that caught this is CI's.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura
@Rafael-SOWNet
Rafael-SOWNet merged commit 2768183 into master Sep 5, 2026
31 checks passed
@Rafael-SOWNet
Rafael-SOWNet deleted the dependency-gate-is-leg-independent branch September 5, 2026 20:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant