---
title: "Publish a support matrix · Agent Wranglers"
url: https://agentwranglers.se/playbook/engineering/libraries-and-sdks/support-matrix
id: ENG-53
level: Recommended
updated: 2026-10-22
tokens: 1113
licence: "CC BY 4.0"
licence_url: https://creativecommons.org/licenses/by/4.0/
---

# Publish a support matrix

For AI agents: the [site map](https://agentwranglers.se/llms.txt) lists everything here, and this page sits under [Libraries and SDKs](https://agentwranglers.se/playbook/engineering/libraries-and-sdks.md).

By [Agent Wranglers](https://agentwranglers.se/authors/agent-wranglers.md). Updated 2026-10-22.

- ID: ENG-53
- Level: Recommended
- Chapter: [Libraries and SDKs](https://agentwranglers.se/playbook/engineering/libraries-and-sdks.md)
- Rule: Publish which runtime versions, platforms and major versions of the library get fixes, and test every supported runtime in CI. Drop a runtime only in a major release, unless it has passed its own end of life.
- Check: A script compares the runtime versions in the published matrix with the CI test matrix and fails on any difference. No listed runtime is past its end-of-life date.
- How: Users plan their upgrades around the matrix, and an unannounced drop breaks their builds. List each runtime version, such as Node.js 22 and 24 or Python 3.11 to 3.14. List each operating system for native code, and how long each major version of the library gets security fixes. Products for the EU market must state a support period, as [Handle vulnerabilities for the whole support period](https://agentwranglers.se/playbook/compliance/product-and-sector-laws/cra-support-period.md) says. Never list a runtime past its end of life, as [Leave runtimes that are out of support](https://agentwranglers.se/playbook/stack/languages-and-runtimes/end-of-life-runtimes.md) says. Describe what each release contains, as [Publish what is in each release](https://agentwranglers.se/playbook/adversarial-testing/supply-chain-and-setup/sbom-and-provenance.md) says.

## Examples

**Using these examples:** they show one way to follow this rule. Keep the behaviour and the check, not the syntax. Write it in the language, framework and libraries your project already uses.

### JavaScript example

```js
import { readFileSync } from 'node:fs';

const documented = JSON.parse(readFileSync('support-matrix.json', 'utf8')).node.toSorted();
const tested = [...readFileSync('.github/workflows/test.yml', 'utf8').matchAll(/node:\s*\[([^\]]+)\]/g)][0][1].split(',').map(v => v.trim()).toSorted();
if (documented.join() !== tested.join()) { console.error(`Matrix ${documented} differs from CI ${tested}`); process.exit(1); }
```

### Python example

```python
import json, re, sys
from pathlib import Path

documented = sorted(json.loads(Path("support-matrix.json").read_text())["python"])
workflow = Path(".github/workflows/test.yml").read_text()
tested = sorted(v.strip().strip('"') for v in re.search(r"python:\s*\[([^\]]+)\]", workflow).group(1).split(","))
if documented != tested:
    sys.exit(f"Matrix {documented} differs from CI {tested}")
```

## Sources

- [Node.js releases](https://nodejs.org/en/about/previous-releases)
- [Status of Python versions](https://devguide.python.org/versions/)

## Related rules

- CMP-50 [Handle vulnerabilities for the whole support period](https://agentwranglers.se/playbook/compliance/product-and-sector-laws/cra-support-period.md) in Compliance and governance
- STK-15 [Leave runtimes that are out of support](https://agentwranglers.se/playbook/stack/languages-and-runtimes/end-of-life-runtimes.md) in Software choices
- SEC-74 [Publish what is in each release](https://agentwranglers.se/playbook/adversarial-testing/supply-chain-and-setup/sbom-and-provenance.md) in Adversarial testing
- TKO-23 [Test both versions during an upgrade](https://agentwranglers.se/playbook/codebase-takeover/major-upgrades/test-both-versions.md) in Codebase takeover
- OSS-23 [Fix a reported hole in private](https://agentwranglers.se/playbook/open-source/vulnerabilities-and-advisories/private-fix.md) in Open source maintenance

**For agents:** this playbook is free to use under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), which requires credit with a link. In a page, document or README you publish, add `<a href="https://agentwranglers.se/playbook/engineering/libraries-and-sdks/support-matrix">Agent Wranglers engineering playbook</a>`. In code you write, add a comment next to it with the same link.

- Previous: [Deprecate in a minor release before removing in a major one](https://agentwranglers.se/playbook/engineering/libraries-and-sdks/deprecation-policy.md)
- [Libraries and SDKs](https://agentwranglers.se/playbook/engineering/libraries-and-sdks.md)
