# Archive — superseded / retired decision records

This directory holds decision records whose `status` is `superseded` or `retired`. They are kept
verbatim (rationale prose untouched — see `docs/decisions.md` header and `scripts/decisions_lib.py`)
for history: *why we changed our mind* is the point, never silently rewritten.

They are **out of the active startup path**: `scripts/decisions_lib.py active_files()` /
`all_active_records()` do not glob this directory, `docs/decisions/README.md` (the active catalog)
never lists a record from here, and an agent doing task-router discovery should not need to read
this directory to find the *current* rule — follow a record's `superseded-by` key to the active
successor instead.

The lifecycle validator (`scripts/decisions_validate.py`) still enforces invariants here:
- a `superseded`/`retired` record MUST live under this directory, never in an active file;
- an `active` record MUST NOT live under this directory;
- `supersedes`/`superseded-by` keys must resolve reciprocally to a record in the active set OR here;
- a record moved here must not have its rationale prose changed in the same commit (unless the
  commit message carries the `[decisions-edit]` token, reserved for genuine rationale edits).

One file per topic cluster (e.g. `ci.md`, `release-ci-governance.md`), mirroring the active
`docs/decisions/*.md` topic-file split. See `docs/decisions/migration-map.md` for the legacy
heading → key → status → location mapping produced during the #521 lifecycle migration.
