---
title: "Keep one list of support end dates · Agent Wranglers"
url: https://agentwranglers.se/playbook/codebase-takeover/major-upgrades/support-end-dates
id: TKO-20
level: Required
risk: takeover
updated: 2026-10-22
tokens: 1028
licence: "CC BY 4.0"
licence_url: https://creativecommons.org/licenses/by/4.0/
---

# Keep one list of support end dates

For AI agents: the [site map](https://agentwranglers.se/llms.txt) lists everything here, and this page sits under [Major upgrades](https://agentwranglers.se/playbook/codebase-takeover/major-upgrades.md).

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

- ID: TKO-20
- Level: Required
- Chapter: [Major upgrades](https://agentwranglers.se/playbook/codebase-takeover/major-upgrades.md)
- Rule: List every runtime, framework, database engine, operating system and mobile SDK target the product uses, with the date its security fixes end. Fail the build when one ends within 180 days with no upgrade ticket.
- Check: A build step reads the list and fails when an entry's end date is within 180 days and the entry has no upgrade ticket. No entry's end date is in the past.
- Risk: An account or system taken over
- How: Inherited code often runs a version that stopped getting fixes years ago, so every hole found since then stays open. Take each date from the project's own release page, such as the Node.js release schedule or the Python version status page. Read the version in use from the lock file, the container image and the hosting settings, not from memory. The runtime rule is [Leave runtimes that are out of support](https://agentwranglers.se/playbook/stack/languages-and-runtimes/end-of-life-runtimes.md). Databases follow [Upgrade the database before its support ends](https://agentwranglers.se/playbook/data/operations/supported-versions.md), and managed engines follow [Upgrade managed engines before standard support ends](https://agentwranglers.se/playbook/infrastructure/cost-and-ownership/managed-engine-support.md).

## 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 WARNING_DAYS = 180;
const DAY_MS = 24 * 60 * 60 * 1000;
const entries = JSON.parse(readFileSync('support-dates.json', 'utf8'));
const late = entries.filter(entry => new Date(entry.endOfSupport) - Date.now() < WARNING_DAYS * DAY_MS && !entry.upgradeTicket);
if (late.length) { console.error(late.map(entry => `${entry.name} ${entry.version} ends ${entry.endOfSupport}`).join('\n')); process.exit(1); }
```

### Python example

```python
import json, sys
from datetime import date, timedelta

WARNING = timedelta(days=180)
entries = json.load(open("support-dates.json"))
late = [e for e in entries if date.fromisoformat(e["endOfSupport"]) - date.today() < WARNING and not e.get("upgradeTicket")]
if late:
    sys.exit("\n".join(f"{e['name']} {e['version']} ends {e['endOfSupport']}" for e in late))
```

## Sources

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

## Related rules

- 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
- DAT-58 [Upgrade the database before its support ends](https://agentwranglers.se/playbook/data/operations/supported-versions.md) in Data and databases
- INF-60 [Upgrade managed engines before standard support ends](https://agentwranglers.se/playbook/infrastructure/cost-and-ownership/managed-engine-support.md) in Infrastructure and environments

**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/codebase-takeover/major-upgrades/support-end-dates">Agent Wranglers codebase takeover playbook</a>`. In code you write, add a comment next to it with the same link.

- Next: [Upgrade one major version at a time](https://agentwranglers.se/playbook/codebase-takeover/major-upgrades/one-major-at-a-time.md)
- [Major upgrades](https://agentwranglers.se/playbook/codebase-takeover/major-upgrades.md)
