Skip to content

Epic: 2.4.0 #177

Open
11 of 43 issues completed
Open

Description

@CaffeinatedCoder

Goal

2.4.0 is the next minor release after 2.3.0, and it moves the Generators package to Metalama 2027.0 for both targets (#173, decision 129, 2026-10-31): it must build for every .NET 11 consumer, also one with only SDK 11 installed, which Metalama 2026.1 cannot (#275). 2.4.0 is tagged only on a stable Metalama 2027.0, so its date is Metalama's; a fix needed before then is a 2.3.x patch. Its scope is the sub-issues attached here. The roadmap's "Gaps, in any 2.x" lists the candidates.

Previews until Metalama 2027.0 is stable (decided 2026-11-11, #284)

.NET 11 has been generally available since 2026-11-10, and Metalama 2027.0 is still a preview (2027.0.5-preview on 2026-11-11; the stable is planned for 2027-01-01). So 2.4.0 is published first as 2.4.0-preview.N from release/2.4.0, on the Metalama 2027 preview it was tested with. The rule above for the stable tag is unchanged. 2.4.0-preview.1 is also the first publish with two targets (#208).

Sequence:

  1. The rest of Spike: build and weave under the .NET 11 SDK before any net11.0 target (decision 120) #170 on the GA SDK: the repository on SDK 11, the woven net10.0 assets compared, and the licence-free CI job on the Metalama preview. That job decides whether a preview may be published at all (Decision record: 2.4.0 ships as 2.4.0-preview.N on a Metalama 2027 preview until 2027.0 is stable (amends decision 129) #284).
  2. CI and the smoke test: a lane with only SDK 11 installed, with a web consumer (decision 129) #281: the lane with only SDK 11 installed, with a web consumer.
  3. Move the Generators package to Metalama 2027.0 in 2.4.0 (decisions 120 and 129) #173 on the Metalama preview, then A net11.0 target beside net10.0 (decision 120) #208, then the checks the net11.0 target owes (net11.0: Option/Result refusal and value-object JSON under System.Text.Json's union support #213, net11.0: OpenAPI transformers under OpenAPI 3.2, server-sent events and union return types #214, net11.0: the EF Core satellite on EF Core 11 (nested complex keys, CAST stripping, primitive collections) #215).
  4. Release: publish the packages CI packed instead of building them again, and check the tag before CI #247: the release publishes the packages CI packed, with a prerelease path.
  5. 2.4.0-preview.1. Later previews take the net11.0-only features (Testing: assert a union error's case without matching on it (net11.0) #210, Compile the base package's net11.0 build with runtime async, if a benchmark shows a gain #211, Value objects over Decimal32, Decimal64, Decimal128 and BFloat16 (net11.0) #212) and Constraint attributes for C# 15 unions and closed classes #209, Define what the generators do with a union or a closed class, through IsUnion and IsClosed #223, net11.0: a union over value objects, in a woven project, keeps its JSON and OpenAPI schema (Metalama 2027) #272.
  6. v2.4.0 on a stable Metalama 2027.0.

In scope and out of scope

In: additions, gaps from the roadmap, and fixes for defects in 2.4.0's own new work. Out: a fix for a bug that shipped in 2.3.0, which is 2.3.1 (#198) and reaches release/2.4.0 by merging main once v2.3.1 is tagged; anything breaking, which waits for 3.0.0, the rest of what Metalama 2027.0 offers (AspectTesting, the aspect-author analyzers, type facets, union awareness in the code model), which is 2.5.0 (#219), and the dropped WS3 to WS6 work.

Done when

Every sub-issue is closed, the suite passes (it holds the oracle catalogue), the SDK-11-only lane builds a web consumer (#281), oracles seeds shows every seed caught (decision 112), v2.4.0 is tagged on the merge of release/2.4.0 into main, and the packages are on nuget.org. The release PR into main closes this epic.

Activity

  1. added this to the 2.4.0 milestone on Oct 29, 2026
  2. added
    epicTracks a release or a theme; its sub-issues are the work
    on Oct 29, 2026
  3. 30 remaining items

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

    epicTracks a release or a theme; its sub-issues are the work

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions