11-Apr-2026 — harden migration to avoid deleting live CMS pages and dedupe footer by href #214
build 585 — commit fed150e
The seed-default-privacy-policy migration had two bugs that combined to break Winchester Walking Weekend's privacy policy page and leave Bolton with a dead footer link:
Unconditional
deleteOne({path: "privacy-policy"})was wiping any page sitting at that path, including live CMS content. In practice the old hardcoded component never backed its content with a pageContent document (it loaded directly from contentText), so this cleanup was a no-op on every environment except ones where a real CMS page had been deliberately placed at the root path. Dropped the deletion entirely.Footer dedupe was matching on the exact title "Privacy Policy" (case-insensitive), which missed existing entries titled differently (e.g. Winchester Walking Weekend's "Privacy and cookie policy"), leading to duplicate entries after the migration ran. Switched to an href-based match that recognises any entry pointing at
privacy-policyorabout-us/privacy-policy, and shared the helper betweenup()anddown().
The repair for already-affected environments was applied manually:
Winchester Walking Weekend had its /privacy-policy page rebuilt from
the surviving contentText entry, and Bolton had its dead footer entry
removed.