Skip to content

docs: decision 120, a net11.0 target and documented floor raises join a 2.x minor - #171

Merged
CaffeinatedCoder merged 4 commits into
release/2.3.0from
docs/net11-target-rules
Oct 29, 2026
Merged

CaffeinatedCoder merged 4 commits into
release/2.3.0from
docs/net11-target-rules

Conversation

@CaffeinatedCoder

@CaffeinatedCoder CaffeinatedCoder commented Oct 29, 2026 •

Copy link
Copy Markdown
Owner

Closes #169

Problem

Decision 44 says a net11.0 target joins a 2.x minor "when a feature needs it", and that unions and the net10.0 drop are 3.0.0. It does not say what a new target or a raised dependency floor costs a consumer, whether a union new on net11.0 needs a major, or how Metalama 2027 (preview; stable planned for January 2027) fits. Measured on SDK 11.0.100-rc.1: a net11.0 dependency group with a higher floor than the net10.0 group fails an application on net11.0 that holds the lower version with NU1605.

Change

  • design/adr/0120-a-net11-0-target-and-documented-floor-raises-join-a-minor.md:
    • 3.0.0 stays timed to .NET 12 LTS; .NET 11 is no reason for a major.
    • A net11.0 asset joins a 2.x minor when a feature needs it: shared members behave the same, generated members are the same on every target, LangVersion 15 for net11.0 only once used, each target run.
    • A dependency floor may rise in a minor, on every target or on net11.0 alone, when documented (the changelog names the floor, who it reaches and both ways out; the smoke test shows the NU1605), per the Semantic Versioning FAQ.
    • A union new on net11.0 is an addition and may join a 2.x minor.
    • Metalama is one version for every target; 2.3 and 2.4 stay on 2026.1 and 2.5.0 moves both targets to 2027.0 once stable (Move the Generators package to Metalama 2027.0 in 2.5.0 (decision 120) #173), with conditions: a license-free CI and clean-container build, the ceiling, the C# 14 to 15 change on a woven net11.0 project, the supported IDEs and the 2.4.x line documented.
    • The SDK 11 spike comes first (Spike: build and weave under the .NET 11 SDK before any net11.0 target (decision 120) #170).
  • design/adr/README.md: the row for 0120; decision 44's row says it is refined.
  • design/roadmap.md: the Metalama, net11.0 and 3.0.0 items.

No code and no package change.

Tests

  • Measured in scratch projects, recorded in the record's Evidence: NU1605 for a floor split; a net11.0-only union consumed from net10.0, net11.0 and LangVersion 14 (CS9327 on a match); Metalama 2026.1 and 2027.0.4-preview with a union (CS0106/CS8803/CS1001, CS8652; builds and runs on 2027); #error version naming the compiler and language version; a license-free build of the 2027 preview in a clean container (an independent review).
  • docs-query check: 0 problems in 862 links.
  • CodoMetis.TypeKit.Conventions.Tests: 2011 passed.

CaffeinatedCoder and others added 2 commits October 29, 2026 20:30
…s as planned

A net11.0 asset joins a 2.x minor only with the net10.0 group's dependency
floors (a higher floor is NU1605 for an application that holds the lower
version, measured on SDK 11 RC1), a superset surface that needs no C# 15 to
call, the same generated members on every target and LangVersion 14 until an
implementation needs 15. The SDK 11 spike (#170) comes first. 3.0.0 stays C#
15 unions and the net10.0 drop, timed to .NET 12 LTS; refines decision 44.

Closes #169

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
A union new on net11.0 is an addition, not a second contract: measured on
SDK 11 RC1, a net10.0 consumer sees nothing, a LangVersion 14 net11.0
consumer who holds the value builds, and one who matches on it gets CS9327.
3.0.0 keeps the net10.0 drop and the change of an existing contract. The
record is renamed to say so; the dependency-floor rule is unchanged.

Refs #169

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@CaffeinatedCoder CaffeinatedCoder added this to the 2.3.0 milestone Oct 29, 2026
@CaffeinatedCoder CaffeinatedCoder added documentation Improvements or additions to documentation area/release Versioning, changelogs, packaging and release wiring labels Oct 29, 2026
Metalama is one version for every target and TypeKit follows the maintained
Metalama year in a minor (1.5.0 already raised the floor in one). The move is
not only a restore error: a woven net11.0 project goes from C# 14 to 15, an
unsupported IDE host fails silently, and Metalama 2027 drops Visual Studio
2022. The record lists the conditions (stable 2027.0, a license-free CI and
clean-container build, the ceiling and the 2.4.x line documented), corrects
the rule on the language version and the SDK, and adds the measurements.

Refs #169, #170, #173

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@CaffeinatedCoder CaffeinatedCoder changed the title docs: decision 120, a net11.0 target keeps every build and may add unions docs: decision 120, a net11.0 target and documented floor raises join a 2.x minor Oct 29, 2026
The Semantic Versioning FAQ calls a dependency update with an unchanged public
API compatible, so the first rule no longer refuses a higher floor in a minor,
on every target or on net11.0 alone. The raise is documented instead: the
changelog names the dependency, the floors, who it reaches (NU1605 for a
project that holds the lower version) and both ways out, and the smoke test
shows it. Metalama is the same rule on the dependency with the widest reach.
The record is renamed to say so; the roadmap and the index row follow.

Refs #169

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@CaffeinatedCoder
CaffeinatedCoder merged commit 20106e3 into release/2.3.0 Oct 29, 2026
9 checks passed
@CaffeinatedCoder
CaffeinatedCoder deleted the docs/net11-target-rules branch October 29, 2026 20:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/release Versioning, changelogs, packaging and release wiring documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant