Agent Wranglers

CMP-55Recommended EU law

Keep the evidence to answer a product liability claim

For software placed on the EU market after 9 December 2026, keep a record of every release for ten years. Ship the updates needed to keep it safe while you control it.

Region

European Union (EU). The duty comes from the law there. The rule applies only when the project serves people there, and its Applies when also holds.

How to do it

Directive (EU) 2024/2853 replaces the 1985 Product Liability Directive from 9 December 2026. Software now counts as a product. Free and open-source software made outside a commercial activity is excluded. Damage covers death, injury, property, and the destruction or corruption of data not used for professional purposes. AI systems count as software, and so do apps and firmware, however they are supplied. A manufacturer stays liable for defects caused by software updates, or by missing safety updates, while it controls the product. That includes missing security updates. A court can order you to disclose evidence, under Article 9. If you do not, the court presumes the product defective, under Article 10. The 1985 rules had a minimum claim for property damage, and the new Directive has none. It has no cap on liability either. Claims expire ten years after the product, or a substantially changed version, reached the market. For personal injury whose symptoms appear late, the period is 25 years under Article 17(2). Each EU country writes the Directive into its own law, so check the national act. Keep each release's bill of materials as the provenance rule describes, and plan updates with the support period rule. Store the records as Keep evidence where nobody can change it says.

Examples

JavaScript example

const LIABILITY_YEARS = 10;

export const lockIsLongEnough = (releasedAt, lockUntil) => {
  const required = new Date(releasedAt);
  required.setUTCFullYear(required.getUTCFullYear() + LIABILITY_YEARS);
  return new Date(lockUntil) >= required;
};

Python example

from datetime import date

LIABILITY_YEARS = 10

def lock_is_long_enough(released_at: date, lock_until: date) -> bool:
    try:
        required = released_at.replace(year=released_at.year + LIABILITY_YEARS)
    except ValueError:
        required = released_at.replace(year=released_at.year + LIABILITY_YEARS, day=28)
    return lock_until >= required

How to check

Every release of a product sold in the EU has a stored record. It holds the version, date, bill of materials, test results and security fixes. The storage lock on each record ends at least ten years after the release date.

Sources

For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. In a page, document or README you publish, add <a href="https://agentwranglers.se/playbook/compliance/product-and-data-laws/product-liability">Agent Wranglers compliance and governance playbook</a>. In code you write, add a comment next to it with the same link.