Skip to main content

ADR-007: .NET Lifecycle Policy

Status: Proposed
Date: 2026-01-20
Context: Platform Longevity, Security, and Predictability


Decision

We adopt a dual-track lifecycle policy:

  1. Modern .NET: Standardize on Long-Term Support (LTS) versions (currently .NET 10) for all new development and sidecar migrations.
  2. .NET Framework 4.8: Maintain existing legacy code while ensuring the underlying Windows OS servicing baseline remains supported.

Context

The WEP platform operates in a hybrid state. We must balance the stability of legacy Windows-only components with the need for a modern, high-performance, and secure evolution path.

1. Modern .NET (STS vs. LTS)

Modern .NET (starting from .NET Core) follows a rapid release cadence.

  • LTS (Long Term Support): Supported for a minimum of 3 years.
  • STS (Standard Term Support): Supported for 2 years (24 months).
  • Annual Cycle: Major versions ship every November.
VersionTrackRelease DateEnd of SupportAction Required
.NET 10LTSNov 11, 2025Nov 14, 2028Standard Target
.NET 9STSNov 12, 2024Nov 10, 2026⚠️ Move to .NET 10
.NET 8LTSNov 14, 2023Nov 10, 2026⚠️ Move to .NET 10

[!IMPORTANT] Both .NET 8 and .NET 9 reach "End of Support" on Nov 10, 2026. This creates a unified upgrade deadline for the next year.

2. .NET Framework 4.8

Unlike Modern .NET, .NET Framework 4.8 is a Windows Component.

  • Support Horizon: Tied to the lifecycle of the underlying Windows OS.
  • Latest Version: 4.8.1 is the latest distributed version; updates are in-place.
  • Target: Inherits support from Windows (e.g., Windows Server 2022/2025).

Policy

1. Modernization Target

All new development (Modern API, Next.js backends, specialized services) must target .NET 10 LTS. Standardizing on LTS provides a "safe landing pad" for stability through 2028.

2. Legacy Maintenance

The existing monolith remains on .NET Framework 4.8.

  • Action: Ensure server OS updates are managed to maintain framework support.
  • Migration: Avoid "big bang" rewrites; use the Strangler Fig pattern to move logic into the Modern .NET track over time.

3. Upgrade Cadence

  • LTS Upgrades: Plan a transition sprint every 2 years to move to the next LTS version within 6 months of release.
  • Security Patches: Monthly servicing updates must be applied to all environments.

Rationale

  • Stability: Standardizing on LTS reduces the churn of annual major upgrades.
  • Security: Ensures we stay within the "Active Support" window for CVE patches.
  • Pragmatism: Recognizes that legacy code cannot be migrated overnight and remains supported through the Windows OS lifecycle.

Consequences

  1. Dependency Alignment: NuGet libraries must support .NET Standard 2.1 (for shared logic) and .NET 10.
  2. Infrastructure Planning: Windows Server patching schedules become a direct dependency for .NET Framework 4.8 support.
  3. Upgrade Debt: We acknowledge a recurring technical debt payment every 2 years for framework modernization.

References