V172: the built-in SEO module becomes Crawlers.
Everything the module holds is bot policy — the noindex directive, crawler
guidance, and (from this release) per-bot-group access controls — while
actual SEO work lives in the external phoenix_kit_seo package. The rename
frees the name for the thing that owns it and stops the settings page
overselling itself. Data moves in two places:
Settings rows
seo_module_enabled → crawlers_module_enabled and seo_no_index →
crawlers_no_index, with the module tag on any 'seo'-tagged row
updated to 'crawlers'. Guarded so a half-migrated database (both keys
present) deduplicates rather than violating the unique key: the old row is
renamed only when the new key is absent, and any leftover old row is then
deleted. The old row's value wins over a stray new one — it is the one the
running site was actually honoring.
Permission rows
Roles granted 'seo' gain 'crawlers'. The old 'seo' rows are kept,
deliberately: the ExpectedSchema manifest (repair) still lists the V135
'seo' seed as required, so deleting the rows here would make
mix phoenix_kit.repair re-create them on its next run — a migration and a
repair tool fighting over the same row. The stale grants are inert (no
module registers the 'seo' key, so no page reads them, and the
permissions matrix only renders registered keys) and their removal belongs
to the next manifest regeneration, where the seed entry itself moves.