Files
3031023-xyz-public/docs/cutover-runbook.md
T

4.1 KiB

3031023.xyz Worker cutover runbook

Scope and safety boundary

This runbook moves only the Happy Tails apex site to the separately deployed static Worker 3031023-xyz. It does not change the sign-up flow, n8n, the onboarding Worker, blog hosting, or any other site.

The Pages project 3031023-xyz remains available as the immediate rollback target until the new apex deployment has been accepted.

Routine preview and candidate jobs never create, delete, or change DNS records, custom domains, routes, or redirect rules. The candidate workflow only deploys static assets to a distinct Worker.

Pre-cutover record

  • Existing rollback project: Cloudflare Pages 3031023-xyz.
  • Existing active custom domain: 3031023.xyz.
  • Existing Pages production deployment: 2fb1b659-5928-4470-bb04-ef4c9105b843 from the main branch.
  • Preview Worker: 3031023-xyz-www-preview, with no custom domains or routes.
  • Production candidate Worker: 3031023-xyz-www, deployed only through the dedicated Deploy primary production Worker candidate workflow. Its push trigger is limited to changes to that workflow file; ordinary site commits cannot update this Worker.

Cutover sequence (requires separate approval)

  1. Confirm the candidate Worker deployment completed and record its version ID.
  2. Verify its workers.dev URL for status, titles, static 404, mobile navigation, sitemap, robots, and security headers.
  3. In Cloudflare, remove 3031023.xyz from the Pages project only after the candidate is verified. Do not delete the Pages project or its deployment.
  4. Attach 3031023.xyz as the custom domain for the production Worker.
  5. Attach www.3031023.xyz to the same Worker and create a Cloudflare Redirect Rule for www.3031023.xyz/* to the matching https://3031023.xyz/* URL. This preserves the apex canonical policy without adding hostname-routing Worker code.
  6. Re-run the production verification checklist and leave the Pages project in place during the acceptance window.

Rollback

  1. Remove the custom domains from the production Worker and disable the www redirect rule.
  2. Restore 3031023.xyz to the unchanged Pages project 3031023-xyz.
  3. Verify the known Pages deployment at its Pages URL and then at the apex.

The cutover operator records the actual Worker version ID, rule ID, time, and verification results in the migration plan after acceptance.

Cutover record — 2026-09-02

  • Source commit: d431e6a (the approved candidate deployment itself is version 7dafcabd).
  • Pages custom-domain binding removed: 3031023.xyz was detached from Pages; the Pages project and its 3031023-xyz.pages.dev rollback URL were retained.
  • Worker custom-domain binding added: 3031023.xyz is attached only to 3031023-xyz-www.
  • Canonical redirect: a proxied www CNAME points to 3031023.xyz; active redirect rule 2a0783532f464384beda9a0344352861 issues a 301 to the matching apex path and preserves query strings.
  • External verification: apex Home and Services return 200; www returns the expected 301; the static 404 returns 404; production robots and sitemap are reachable; and the Pages rollback URL returns 200.

Acceptance follow-up

Cloudflare is appending its managed content-signals section to robots.txt. That section currently disallows several AI crawlers (including Google-Extended and GPTBot). This was an existing zone-level setting and was not changed during the cutover. Review it with the site's AI-search policy before final acceptance.

Production content release — 2026-09-02

  • Source commit: 2b7f8d8 (main), the accepted Git-backed Markdown content pilot.
  • Release path: the manually approved Deploy primary production Worker candidate workflow completed successfully in 22 seconds.
  • Scope: updated only the static assets of the existing 3031023-xyz-www Worker. No custom domain, DNS, redirect rule, Pages project, form workflow, CMS, or client-editing boundary changed.
  • External verification: the apex returns 200, the two published FAQ entries are present, the intentional static 404 returns 404, and robots.txt still advertises the production sitemap.