---
title: "Supported majors"
description: "Which major of each core tool new MNPPI repos start on, and when a repo falls behind."
url: "https://architecture.mnppi.org/architecture/supported-majors/"
status: "Current"
last_updated: "2026-10-22"
---

# Supported majors

**Standard details**

- Status: Current
- Reviewed: October 22, 2026
- Cadence: Review after each major toolchain release, and each quarter
- Source: MNPPI Supported Majors

New MNPPI repositories start on the Standard major of each core tool. The
quality audit flags Unsupported majors. Current Quality - Private blocks
non-Standard majors on repositories created on or after `blockingFrom`.

The [quality controls](https://architecture.mnppi.org/delivery/quality-controls-and-tooling/index.md) name Prettier,
ESLint, TypeScript, Vite, Astro, React, and Vitest. This page names the major
each high-cost tool may use. Patch and minor lines still move through Renovate
and the org `minimumReleaseAge`. Do not copy a dated patch pin into this
standard.

Machine-readable source: `supported-majors.json` in `MNPPI/org-standards`.

## Status definitions

| Status           | Meaning                                                                                                                                                                                            |
| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Standard**     | New repositories start here. This is the fleet target. `allowedForNewRepos` is true.                                                                                                               |
| **Next**         | A newer major approved for a planned, piloted migration. Renovate must not auto-bump to it. The new-repo gate passes.                                                                              |
| **Transitional** | The previous major still has upstream security support. It has a mechanical end date. After that date it is Unsupported. Existing repos get an advisory only. New repos fail without an exception. |
| **Allowed**      | Node.js Maintenance LTS only. Existing repos get no finding. New repos must not start here.                                                                                                        |
| **Unsupported**  | Upstream no longer ships security fixes, or the mechanical end date has passed. The audit reports it.                                                                                              |

`allowedForNewRepos` is false for every line that is not Standard.

## New repositories and templates

New repositories and templates must start on Standard majors. This repository
has no package scaffold that pins an older major. If you add a template later,
pin Standard only. Do not add a blocking check to the template itself.

A repository is **new** when its GitHub `created_at` date (UTC, first ten
characters) is on or after `blockingFrom` in `supported-majors.json`. The
current value is **2026-10-23**. Every repository already in the fleet was
created before that date, so it stays advisory. Repositories with no
`created_at` are treated as existing.

## Who acts

Transitional creates no work. Do not open a Cloud Agent for a Transitional
finding.

Unsupported, an expired exception, or a missing expiry creates **one** batched
migration item per repository. Standards runs one Cloud Agent per repository.
This is not a recurring nag.

## Promotion rule

Standard is the newest major that meets all three:

1. Its first release is at least as old as the org `minimumReleaseAge`.
2. Its key plugins and peers support it.
3. At least one successful pilot, or a production repository in the fleet, already runs it.

Older majors that upstream still supports are Transitional and get a mechanical
end date. Next is a newer major with no pilot and no production repo yet.
Majors are never adopted by merging a Renovate major pull request. They go
through a planned migration with Mark's GO.

New repositories must start on Standard. Picking an older major needs a
recorded exception in `supported-majors.json` and the
[exception process](https://architecture.mnppi.org/governance/exceptions/index.md).

## Current majors

Reviewed 22 October 2026 from npm publish times, upstream security pages, the
nodejs.org release schedule, Quality Audit run 39791821686, and a survey of
each managed repo's root `package.json` on `main`. Each row has a short
fleet-today note from that survey.

Node.js here is the CI and tooling runtime from `.nvmrc` or `.node-version`.
`engines.node` is human guidance, not an audit input. The Cloudflare Workers
runtime (compat date plus `nodejs_compat`) is out of scope.

### Status

| Tool              | Standard   | Next | Transitional                           | Unsupported          |
| ----------------- | ---------- | ---- | -------------------------------------- | -------------------- |
| vite              | 8          | —    | 7 until 2027-01-20; 6 until 2027-01-20 | 5 and older          |
| vitest            | 4          | 5    | —                                      | 3 and older          |
| react             | 19         | —    | 18 until 2027-01-20                    | 17 and older         |
| typescript        | 6          | 7    | 5 until 2027-01-20                     | 4 and older          |
| astro             | astro 7    | —    | astro 6 until 2027-01-20               | astro 5 and older    |
| Node.js           | 24         | 26   | —                                      | 20 and older         |
| pnpm              | 11         | 12   | 10 until 2027-01-20                    | 9 and older          |
| wrangler / cf CLI | wrangler 4 | cf 1 | wrangler 3 until 2027-01-20            | wrangler 2 and older |

Node 22 is Maintenance LTS until 2027-04-30. It is Allowed, not Transitional.
Existing repos get no finding. New repos must start on 24.

TypeScript 6 is Standard because four production repos already run it. 5 is
Transitional until 2027-01-20. 7 stays Next.

`cf` 1.0.0-beta is Next, not Standard, because it is still an open-beta pilot.
New Vite-ready Workers that have a Worker entry still follow the
[cf CLI standard](https://architecture.mnppi.org/delivery/cf-cli-and-cloudflare-config/index.md). Assets-only Astro
stays on labeled transitional Wrangler 4.

### Why, who acts, and upstream source

| Tool              | Why                                                                                                                                                                                                                                                                                                                                                                       | Who / when                                                                                                                                     | Upstream                                                                               |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
| vite              | vite.dev/releases still ships security patches to 8.3, 7.3, and 6.4. Nine production repos already run Vite 8. A production repo counts as a pilot. 8.0.0 published 2026-03-12.                                                                                                                                                                                           | Standards Cloud Agent, one repository per session. When a resolved major is Unsupported or an exception expires. Transitional creates no work. | https://vite.dev/releases                                                              |
| vitest            | The fleet Vitest 4 migration completed 2026-09-16. wkd-proxy-worker resolves 4.1.11. Vitest 5 has no production repo; pool-workers still peers vitest ^4.1.0.                                                                                                                                                                                                             | Standards Cloud Agent, one repository per session. When a resolved major is Unsupported or an exception expires. Transitional creates no work. | https://github.com/vitest-dev/vitest/blob/main/docs/releases.md                        |
| react             | Seven repos run React 19 (namepicker, packing-checklist, jobsystem, mnppi-org, demo-crm, zuricert, and one additional production app). endorfun-rebuild and personal-finance stay on 18.3.1. No React 20. React's versioning policy backports security fixes to affected majors.                                                                                          | Standards Cloud Agent, one repository per session. When a resolved major is Unsupported or an exception expires. Transitional creates no work. | https://react.dev/community/versioning-policy                                          |
| typescript        | Four repos already run TypeScript 6: airport-time-calc, packing-checklist, and mnppi.github.io pin typescript ^6.0.3; demo-crm pins @typescript/typescript6 ^6.0.2. The rest of the fleet is on 5.7-5.9. 7 stays Next. SUPPORT.md services the latest release.                                                                                                            | Standards Cloud Agent, one repository per session. When a resolved major is Unsupported or an exception expires. Transitional creates no work. | https://github.com/microsoft/TypeScript/blob/main/SUPPORT.md                           |
| astro             | Six repos run Astro 7: airport-time-calc, uihq-landing, tesseract, jobsystem, mnppi-org, and org-standards (7.2.8). Astro 7.0.0 published 2026-06-22. Astro's GitHub security policy has no supported-majors table.                                                                                                                                                       | Standards Cloud Agent, one repository per session. When a resolved major is Unsupported or an exception expires. Transitional creates no work. | https://github.com/withastro/astro/security                                            |
| Node.js           | Fleet CI already runs Node 24. schedule.json: 24 maintenance 2026-10-20, 26 Active LTS 2026-10-28, 22 Maintenance until 2027-04-30, 20 EOL 2026-04-30. This table is CI and tooling Node only.                                                                                                                                                                            | Standards Cloud Agent, one repository per session. When the line is EOL. Maintenance LTS creates no finding and no work.                       | https://github.com/nodejs/Release/blob/main/schedule.json                              |
| pnpm              | 18 repos pin pnpm 11.x. namepicker and packing-checklist pin 10.27.0; workers-builds-notify pins 10.33.3. pnpm SECURITY.md supports 12.x, and 11.x and 10.x until 2027-04-30. 9.x and older are unsupported. endorfun-rebuild uses npm@10.9.2 and is out of this row.                                                                                                     | Standards Cloud Agent, one repository per session. When a resolved major is Unsupported or an exception expires. Transitional creates no work. | https://github.com/pnpm/pnpm/security                                                  |
| wrangler / cf CLI | Cloudflare's SDK ecosystem policy actively supports only the latest major; critical security fixes for older majors are case by case. The Wrangler v4 announcement keeps v3 on bug fixes through Q1 2026 and critical security updates through Q1 2027. org-standards and wkd-proxy-worker resolve wrangler 4. cf 1.0.0-beta is accepted for pilots, not a fleet default. | Standards Cloud Agent, one repository per session. When a resolved major is Unsupported or an exception expires. Transitional creates no work. | https://developers.cloudflare.com/fundamentals/reference/sdk-ecosystem-support-policy/ |

### Fleet today

| Tool              | Fleet today                                                                                                                                                                                                                    |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| vite              | 9 production repos on 8 (airport-time-calc, uihq-landing, org-standards, tesseract, workers-builds-notify, twintech-reia-rewrite, packing-checklist, botmail-worker, and one additional production app). pyndale started on 6. |
| vitest            | Fleet on 4 (wkd-proxy-worker 4.1.11). Vitest 4 migration completed 2026-09-16. No Vitest 5 production repo.                                                                                                                    |
| react             | 19 in namepicker, packing-checklist, jobsystem, mnppi-org, demo-crm, zuricert, and one additional production app. 18.3.1 in endorfun-rebuild and personal-finance.                                                             |
| typescript        | 6.x in airport-time-calc, packing-checklist, mnppi.github.io (^6.0.3) and demo-crm (@typescript/typescript6 ^6.0.2). Every other repo is on 5.7-5.9.                                                                           |
| astro             | 7.x in airport-time-calc, uihq-landing, tesseract, jobsystem, mnppi-org, and org-standards.                                                                                                                                    |
| Node.js           | Fleet CI on 24. org-standards .nvmrc 22.23.1 is Allowed. No 26 pin.                                                                                                                                                            |
| pnpm              | 11.x in 18 repos. 10.x in namepicker, packing-checklist (10.27.0), and workers-builds-notify (10.33.3). endorfun-rebuild uses npm@10.9.2 and is out of scope.                                                                  |
| wrangler / cf CLI | org-standards 4.113.0; wkd-proxy-worker 4.123.0. cf pilots: airport-time-calc, tesseract.                                                                                                                                      |

Peers stay on the parent row. They are not separate audit rows.

- vite: `@vitejs/plugin-react`, `@cloudflare/vite-plugin`
- vitest: `@cloudflare/vitest-pool-workers`
- react: `react-dom`
- typescript: `@typescript/typescript6`
- astro: `@astrojs/starlight`
- wrangler: `cf`

A Transitional end date is the earlier of upstream security EOL or 90 days
after the successor major was promoted to Standard. Past that date the line
is Unsupported.

## Upgrading a major

1. **One repository per Cloud Agent.**

   Do not open a fleet-wide major in one session.

2. **Baseline the old major.**

   Record the current test, build, and preview-deploy results before you change
   the lockfile.

3. **Add missing tests.**

   Cover the paths the upgrade is likely to break. Do not drop coverage to
   make the new major pass.

4. **Upgrade to a release that is at least as old as the org `minimumReleaseAge`.**

   Do not add `minimumReleaseAgeExclude`. Do not merge a Renovate major as the
   adoption path.

5. **Run the full suite.**

   Tests, production build, and a preview deploy must pass. Compare the result
   to the baseline.

6. **Merge, then wave.**

   Start with low-risk repositories. Move to flagship last. Promote the major
   to Standard only after Mark's GO and the promotion rule above.

## Exceptions

Record a major exception in `supported-majors.json` with owner, reason,
`created`, and `expires`. Expiry is at most 90 days. Renew once. An expired
or missing-expiry exception is a finding. Also follow the
[exception process](https://architecture.mnppi.org/governance/exceptions/index.md).

## Audit signal

The weekday quality audit reports, per managed repository, any **direct**
dependency that resolves to an Unsupported major. It also reports Transitional
majors on existing repositories. Those findings are advisory. They must not
fail the central quality-audit workflow.

Current Quality - Private runs the same classifier on pull requests. For a
repository created on or after `blockingFrom`, a Transitional, Unsupported, or
other non-Standard line without a valid unexpired exception fails that
existing check. Next and Standard pass. The required-check name does not
change.

The audit reads lockfiles when it can. It does not change Renovate, branch
protection, or security settings.
