2026-08-02-seo-foundation-session

Handoff — Adventure Weddings SEO foundation (2026-08-02)

Written mid-session to move machines. Plan: docs/plans/2026-08-02-001-feat-adventure-weddings-seo-foundation-plan.md — that document is the authority; this file is just the session state around it.

Where things stand

UnitState
U1 Repair CIMerged — PR #5, main @ 34cd05c, CI green
U2 Post model + Markdown pipeline🟡 PR #6 open, CI green, awaiting merge
U3–U8Not started

Also done outside the units:

  • Google Search Console verified for https://adventureweddings.love (URL-prefix property, HTML-file method, PR #4). File is public/googlee270fc2479589a08.htmlnever delete it.
  • Baseline not yet captured. Data takes 1–3 days from verification (2026-08-02). Capture from the plan’s Success Metrics table before U3–U7 ship, or the whole effort is unmeasurable.

Pick up here

cd ~/Projects/adventure-weddings
git checkout main && git pull
gh pr view 6            # merge if it still looks right

Then resume with /ce:work U3 from the monorepo.

~/Projects/adventure-weddings is a separate repo, not part of this monorepo. Clone it if the new machine doesn’t have it: git clone git@github.com:veganpolice/adventure-weddings.git.

Gotchas that will bite on a fresh machine

These were learned the hard way this session and are not discoverable from the code.

  1. Merging to main does NOT deploy. GitHub→Lovable sync moves code; publishing to adventureweddings.love is a separate manual Publish click in the Lovable UI. Verify a deploy actually shipped by watching x-deployment-id change in the response headers.

  2. bun install does not work outside Lovable’s sandbox. bun.lock bakes in 654 URLs to Lovable’s private Artifact Registry (europe-west*-npm.pkg.dev/lovable-core-prod) and 403s everywhere else. BUN_CONFIG_REGISTRY does not override URLs already pinned in a lockfile, and bun add fails too. Use:

    npm install --legacy-peer-deps --no-package-lock --no-audit --no-fund

    --legacy-peer-deps is required — next-themes@0.3.0 declares a React 16–18 peer while the app is on React 19.

  3. Never mix bun and npm in node_modules. A partial bun install leaves a hybrid tree with wrong package versions, which produced a phantom lint error at a line number that didn’t exist. If anything looks impossible, rm -rf node_modules and reinstall with the npm command above.

  4. Do not add dependencies without solving the lockfile problem first. package.json can be edited but bun.lock cannot be regenerated locally, and Lovable’s build may use --frozen-lockfile. This is why U2’s Markdown renderer is hand-written.

  5. Don’t commit supabase/functions/mcp/index.ts churn. It’s auto-generated and bakes in the @lovable.dev/mcp-js version, so it changes whenever a local install resolves a different patch version. Revert it rather than committing.

  6. .output/ is build output. Now gitignored as part of U2 — pull that change before running a build.

Open, unrelated to the units

  • Domain access gap. adventureweddings.love is registered at iWantMyName, DNS is on a Cloudflare account nobody on the team can access (Google’s Cloudflare OAuth returns “not authorized”). It is not Aaron’s account and almost certainly not Lovable’s — the zone carries Lana’s Zoho email records and predates the Lovable project. Domain expires 2026-12-27. Lana should search her email for “iwantmyname” and “Cloudflare”. The registrar login is the credential that matters — it outranks Cloudflare.
  • www is not redirected. www.adventureweddings.love and the apex both return 200 with identical content (duplicate content). Needs a Cloudflare 301 — blocked on the access gap above.
  • ~1,676 formatting warnings. npm run format clears them, but it’s a ~1,700-change commit — do it as its own PR when Lana isn’t mid-edit in Lovable.