# Happy Tails Astro and internal CMS guidance ## Repository role - This is the active production source for the Happy Tails primary and blog sites. The remote default is protected `main`; the slash-free `cms` branch is the long-lived internal editor branch. - Read `README.md`, `docs/content-model.md`, `docs/decap-cms-pilot.md`, and the company-wide `../../docs/operations/optional-decap-cms.md` before changing content or CMS behavior. ## Content and release boundaries - Keep public content in the typed Markdown collections and assets in the site-owned public paths. Do not fabricate business facts, claims, reviews, availability, or form success. - CMS editors may change only the approved content/media paths. Do not expand CMS access to workflows, source, scripts, schemas, manifests, Wrangler files, secrets, or deployment controls. - `cms` produces a no-index preview. Production requires validation, human review, and a protected merge to `main`; publishing content never authorizes an automatic production merge. - Keep the primary and blog as isolated builds and Workers. A deployment must build and upload only its selected `SITE_KEY` output. - DNS, custom domains, contact routing, Gitea OAuth/CORS, branch protection, and production deployment require explicit authorization beyond a source edit. ## Verification - Run `npm run verify:cms` for CMS/configuration changes. - Run both complete site pairs after shared content or CMS machinery changes: `SITE_KEY=www npm run build:site`, `SITE_KEY=www npm run verify:build`, `SITE_KEY=blog npm run build:site`, and `SITE_KEY=blog npm run verify:build`. - Preserve image optimization, metadata removal, draft filtering, no-index previews, canonical production metadata, sitemaps, and real 404 behavior.