Agents Builders

Move Turf Monster app to root domain

Archived
task-6f319c093cc2

Created

Jun 21, 14:05

Started

Jun 21, 14:06

Completed

Jun 22, 02:27

DevOps handoff

Type

Chore

Shape

backend

Worktree Slug

turf-root-domain

Repositories

turf-monster, mcritchie-studio

Release Train

Branch

feat/turf-root-domain

QA URL

Production URL

dns production-routing

Acceptance Criteria

  • v1.turfmonster.media serves the existing old Turf Monster landing site
  • turfmonster.media serves the current Turf Monster Rails app
  • app.turfmonster.media remains accepted as a legacy alias while providers are updated

Expected Test Plan

  • [unit] Production host config accepts APP_HOST plus APP_HOST_ALIASES
  • [ops] Heroku domains show v1 on old site app and apex/app on turf-monster-mainnet
  • [ops] Public DNS and HTTPS checks pass for v1, apex, and app hosts

Checks Run

  • [verify] Heroku domains show turfmonster.media and app.turfmonster.media attached to turf-monster-mainnet with certs issued
  • [docs] McRitchie Studio PR #79 merged for root-domain docs/config

Stage Timeline

Who handled each stage, the time it took (measured), and the model / tokens / cost reported (best-effort) — plus who's on it right now. means the agent didn't report that metric.

No stage changes recorded yet.

Conversation

QA review feedback, agent handoffs, and follow-up notes for this task.

Handoff 6 days ago

Draft PRs opened: Turf Monster https://github.com/amcritchie/turf-monster/pull/159 and McRitchie Studio https://github.com/amcritchie/mcritchie-studio/pull/79. Heroku old-site app limitless-tundra-34071 now has v1.turfmonster.media attached with CNAME target whispering-savannah-euqsutzic06i9306g89db3ug.herokudns.com. Name.com still needs v1 CNAME creation. After PR merge/deploy, set turf-monster-mainnet APP_HOST=turfmonster.media, MAILER_HOST=turfmonster.media, APP_HOST_ALIASES=app.turfmonster.media, then move apex turfmonster.media from limitless-tundra-34071 to turf-monster-mainnet and update apex DNS to the Heroku target returned during that cutover.

QA Feedback 6 days ago

QA APPROVE-WITH-NITS on code (both PRs #79 + #159) — HELD at submitted pending PR readiness + runbook fix. Host-alias abstraction correct, wired into host-auth/ActionCable/CDP CORS/mailer; both hosts accepted simultaneously for zero-downtime; prod zeitwerk:check clears the manual require of the Zeitwerk-managed lib file; both MERGEABLE/CLEAN, not behind. Owed before -> reviewed: (1) mark PRs #79 and #159 ready-for-review (both draft); (2) FIX runbook deployment.md cutover ordering — keep MAILER_HOST=app.turfmonster.media until the apex DNS moves to turf-monster-mainnet AND propagates, otherwise magic links (the ONLY login method) point at the old landing app. Operator actions at cutover: add BOTH turfmonster.media + app.turfmonster.media to Coinbase CDP portal allowlist before flipping APP_HOST; consider defaulting APP_HOST_ALIASES=app.turfmonster.media (fail-safe vs fail-documented). Heads-up: host-scoped session cookie -> users re-auth via magic link after the host change (expected, not a regression).

Comment 6 days ago

Gate cleared for review: PRs #79 + #160... (turf #159) marked ready, CI green on both, current with main, code reviewed-clean (host-alias backward-compatible). Advancing to reviewed. STILL OWED before the PRODUCTION DNS cutover (separately gated, NOT a QA-release blocker): runbook deployment.md MAILER_HOST ordering fix + add both hosts to Coinbase CDP allowlist.

Sealed-bid sizing

Edit →

Alex (PM)

Avi (PO)

Dev

Actual