docs: add maintained launch checklist; de-duplicate stale task lists

Cutover tasks were scattered across three sources that disagreed with each
other and with reality: planning/parity-checklist.md (git-ignored, content
only), docs/seo-aeo-optimization.md (SEO only, listed the Zod schema,
seo-lint and breadcrumbs as open when all three are done, and called for
Uptime Kuma which ADR-0004 replaced with monylog), and session notes.

Add docs/launch-checklist.md as the single source of truth, verified against
the working tree, the cluster and ArgoCD rather than inherited from the older
docs. Point the SEO doc's two checkbox blocks at it and keep only reference
detail there.

Also records blockers that were not tracked anywhere: TLS never wired on the
ingress, developer-facing copy rendered on the contact page, the contact form
having no endpoint, and the draft insight post building into the sitemap
because the draft flag is declared in Zod but never filtered on.
This commit is contained in:
bmr_bluecap committed 2026-09-22 15:45:48 -04:00
1 parent 9f1cbca1b1
commit 79e7fd4b2b
2 files changed
+266 -19

No files matched your search

+23 -19
View File
@@ -80,15 +80,21 @@ Already implemented in `src/layouts/BaseLayout.astro` (keep + enforce):
To add/verify:
- [ ] **Per-page OG images** — currently every page falls back to `/assets/water-strategy.jpg`.
Generate topic-specific OG images (services, focus areas, insights) at 1200×630.
- [ ] **`robots` meta** wired to the `noindex` frontmatter flag (for `/thank-you/`, staging).
- [ ] **`article:published_time` / `modified_time`** OG tags on insights posts.
- [ ] **Breadcrumbs** (visible + `BreadcrumbList` schema) on services/focus/insights detail pages.
- [ ] **Sitemap** already via `@astrojs/sitemap` (excludes `/thank-you/`); add `lastmod` from
content dates for insights.
- [ ] **Trailing-slash consistency** — config uses `trailingSlash: "always"`; ensure canonical +
internal links all match to avoid duplicate-URL dilution.
> **Tracked in [`launch-checklist.md`](./launch-checklist.md) §4.** The list that used to live
> here went stale (breadcrumbs are done). This section keeps the *reference* detail below; the
> live task state is in the launch checklist only.
- **Per-page OG images** — every page currently falls back to one shared image
(`BaseLayout.astro` emits a single `og:image`). Generate topic-specific 1200×630 images for
services, focus areas, and insights.
- **`robots` meta** wired to a `noindex` frontmatter flag (for `/thank-you/`, staging). Not wired
today — `/thank-you/` is sitemap-excluded but emits no `noindex`.
- **`article:published_time` / `modified_time`** OG tags on insights posts.
- **Breadcrumbs** — DONE. `BreadcrumbList` in `src/utils/schema.ts`, applied on detail pages.
- **Sitemap** — via `@astrojs/sitemap`, excludes `/thank-you/`. Still to add: `lastmod` from
content dates for insights.
- **Trailing-slash consistency** — config uses `trailingSlash: "always"`; ensure canonical +
internal links all match to avoid duplicate-URL dilution.
## 3. Structured data (JSON-LD) matrix
@@ -214,16 +220,14 @@ Decided: **run PostHog and Umami side-by-side initially** and keep whichever fit
## 7. Pre-launch SEO checklist
- [ ] Zod SEO schema in place; build fails on title/description/OG/canonical violations.
- [ ] `scripts/seo-lint.mjs` (single H1, heading order, canonical, alt text, JSON-LD parses) green in CI.
- [ ] Every page: unique title, description in window, canonical, OG image, valid JSON-LD.
- [ ] Organization/WebSite/Service/Person/Article/Breadcrumb schema per §3, all visible-content-backed.
- [ ] `robots.txt` per §5 (owner-decided); `sitemap-index.xml` correct; `/thank-you/` + staging `noindex`.
- [ ] Canonical host decided (apex vs `www`) + redirect configured at the edge.
- [ ] Search Console + Bing verified, sitemap submitted.
- [ ] Analytics deployed (Umami) + consultation/CTA events firing.
- [ ] Uptime Kuma + external check live and alerting.
- [ ] Lighthouse ≥ 95 across the board; no CLS from unsized images.
> **Moved.** This list is no longer maintained here — it duplicated, and disagreed with, reality
> (it listed the Zod schema, `seo-lint`, and breadcrumbs as open when all three are done, and
> called for Uptime Kuma, which ADR-0004 replaced with `monylog`).
>
> **The maintained checklist is [`launch-checklist.md`](./launch-checklist.md).** SEO items are
> in §3 (owner decisions: canonical host, robots policy) and §4 (post-cutover: OG images,
> `noindex` meta, article times, `lastmod`, Lighthouse, trailing slashes). What is already
> complete is recorded in §5.
## Sources (verified 2026-07-15)