A rename moves the old name into avoid; nothing is deleted
When a term is renamed, the old canonical name moves into the term's
names.avoid list — it is never simply removed. Someone searching the old
name must still land on the right term, and the old name must be visibly
marked do-not-use.
Retired concepts follow the same nothing-deleted guardrail: they flip to
status: deprecated and stay in the corpus. The build enforces the
integrity half of this rule — an avoid alias may not collide with another
term's canonical name.
Evidence
This repo's design spec (docs/2026-07-16-data-dictionary-design.md), baked-in decisions: "avoid lists document what not to say and stay searchable," and "Renames move the old name into avoid. Retired concepts go deprecated, never deleted." scripts/lib/search-index.js indexes every avoid alias so a search for the old name lands on the right term, and scripts/lib/validate.js fails the build if an avoid alias collides with another term's canonical name — the mechanism assumes avoid is where retired names live.