- every write that records history (admin, MCP, batch, import, undo,
automatic) queues the framework's site-cache purge (kind seo, slug the
address or * for settings and robots.txt) after its commit, once per
transaction; a rolled-back write never purges
- the record-deleted cleanup and the address tracking of saves outside the
admin run in lagoon transactions, so their history purges as well
refreshEntry set entry.url to the descriptor's address unconditionally, so
a slug change the job saw before any RecordSaved listener lost its 301 for
good. An entry whose URL differs now goes through AddressChanged (via
auto), which creates the 301 and moves the URL; an empty URL is filled.