Runtime Policy

The Dart runtime policy is database-driven and enforced at both authoring time and deployment time.

Canonical Runtime Endpoint

Use:

GET /api/v1/runtimes

GET /api/v1/runtime-versions remains a legacy alias, but /api/v1/runtimes is the canonical endpoint.

Runtime Lifecycle Model

Each runtime row can expose lifecycle metadata such as:

  • releasedAt

  • deprecationAnnouncedAt

  • blockNewDeploysAfter

  • disableExecutionAfter

  • supportPhase

  • deployable

  • executable

The catalog groups runtimes into:

  • supported

  • deprecating

  • disabled

Enforcement Rules

The current implementation uses the catalog in three places:

  • New function drafts may only select versions in supported.

  • Deployments may only target versions that are still deployable.

  • Stored functions on older runtimes may continue to resolve until execution is disabled.

pubspec.yaml is also checked so its environment.sdk constraint stays within the currently deployable runtime windows.

Current Seeded Policy In This Repo

At the time of this update, the repository seeds:

  • 3.11.0 as the default supported runtime

  • 3.10.0 as the previous supported runtime

  • 3.9.0 as disabled and no longer selectable

The exact dates come from application_data.public.dart_runtime_versions, not from frontend hardcoding.

Why The Policy Is Structured This Way

This keeps one clean external rule:

  • new work uses the current supported window only

while still letting operations manage:

  • deploy blocking dates

  • execution retirement dates

  • user-visible warnings and days remaining