{
  "schema": "garnet-changelog/v1",
  "generated_at": "2026-05-12T03:53:07.899Z",
  "window": "120 days ago",
  "total_entries": 80,
  "categories": {
    "feature": 12,
    "fix": 20,
    "a11y": 13,
    "audit": 3,
    "other": 15,
    "aeo": 1,
    "perf": 1,
    "revenue": 7,
    "data": 1,
    "content": 5,
    "infra": 2
  },
  "grouped_by_date": [
    {
      "date": "2026-05-11",
      "items": [
        {
          "hash": "89b1ff224",
          "date": "2026-05-11",
          "iso": "2026-05-11 23:47:42 -0400",
          "category": "feature",
          "headline": "live WCAG 2.1 AA accessibility badge + report + daily cron",
          "raw_subject": "feature: live WCAG 2.1 AA accessibility badge + report + daily cron"
        },
        {
          "hash": "0fc0cf255",
          "date": "2026-05-11",
          "iso": "2026-05-11 23:28:16 -0400",
          "category": "feature",
          "headline": "/api/llms.json — machine-readable mirror of llms.txt",
          "raw_subject": "feature: /api/llms.json — machine-readable mirror of llms.txt"
        },
        {
          "hash": "0dd3d96dd",
          "date": "2026-05-11",
          "iso": "2026-05-11 23:18:19 -0400",
          "category": "feature",
          "headline": "in-house GEO case study + daily 4-engine capture cron",
          "raw_subject": "feature: in-house GEO case study + daily 4-engine capture cron"
        },
        {
          "hash": "0b7d2baca",
          "date": "2026-05-11",
          "iso": "2026-05-11 19:30:00 -0400",
          "category": "fix",
          "headline": "/api/audit-baseline returns 200+error-in-body (Cloudflare edge eats 5xx)",
          "raw_subject": "fix: /api/audit-baseline returns 200+error-in-body (Cloudflare edge eats 5xx)"
        },
        {
          "hash": "39f838171",
          "date": "2026-05-11",
          "iso": "2026-05-11 19:24:32 -0400",
          "category": "feature",
          "headline": "/audit free AEO citation audit (public lead-magnet) + internal status script",
          "raw_subject": "feature: /audit free AEO citation audit (public lead-magnet) + internal status script"
        },
        {
          "hash": "024329ce8",
          "date": "2026-05-11",
          "iso": "2026-05-11 19:20:40 -0400",
          "category": "feature",
          "headline": "on-platform rebuild of the contact form relay",
          "raw_subject": "feat(contact-relay): on-platform rebuild of the contact form relay"
        },
        {
          "hash": "e27385eae",
          "date": "2026-05-11",
          "iso": "2026-05-11 19:05:02 -0400",
          "category": "feature",
          "headline": "/ai-citations public dashboard — daily AI-bot crawl data, CC0-licensed",
          "raw_subject": "feature: /ai-citations public dashboard — daily AI-bot crawl data, CC0-licensed"
        },
        {
          "hash": "9381177bf",
          "date": "2026-05-11",
          "iso": "2026-05-11 16:12:22 -0400",
          "category": "a11y",
          "headline": "a11y(round-3): gate-card role=dialog + final h4→h3 on home + case-study",
          "raw_subject": "a11y(round-3): gate-card role=dialog + final h4→h3 on home + case-study"
        },
        {
          "hash": "cf9b0c2a7",
          "date": "2026-05-11",
          "iso": "2026-05-11 15:41:16 -0400",
          "category": "a11y",
          "headline": "a11y(round-2): more region roles + h4→h3 + lane-eyebrow contrast",
          "raw_subject": "a11y(round-2): more region roles + h4→h3 + lane-eyebrow contrast"
        },
        {
          "hash": "36860cba6",
          "date": "2026-05-11",
          "iso": "2026-05-11 15:37:33 -0400",
          "category": "a11y",
          "headline": "a11y(B+C): <main> wrappers + H4→H3 card titles + unique aria-labels",
          "raw_subject": "a11y(B+C): <main> wrappers + H4→H3 card titles + unique aria-labels"
        },
        {
          "hash": "77a4557c7",
          "date": "2026-05-11",
          "iso": "2026-05-11 14:46:57 -0400",
          "category": "a11y",
          "headline": "a11y: close final 10 — .artifact-tag selector + force opacity:1 on video captions",
          "raw_subject": "a11y: close final 10 — .artifact-tag selector + force opacity:1 on video captions"
        },
        {
          "hash": "ed4c99f7c",
          "date": "2026-05-11",
          "iso": "2026-05-11 14:43:24 -0400",
          "category": "a11y",
          "headline": "a11y: target .day-tag child element (axe flagged child, not parent)",
          "raw_subject": "a11y: target .day-tag child element (axe flagged child, not parent)"
        },
        {
          "hash": "56530de61",
          "date": "2026-05-11",
          "iso": "2026-05-11 12:50:59 -0400",
          "category": "a11y",
          "headline": "a11y(wcag-strict): close last 35 WCAG AA violations on /onboarding-walkthroughs/",
          "raw_subject": "a11y(wcag-strict): close last 35 WCAG AA violations on /onboarding-walkthroughs/"
        }
      ]
    },
    {
      "date": "2026-05-10",
      "items": [
        {
          "hash": "2b0fed400",
          "date": "2026-05-10",
          "iso": "2026-05-10 22:15:21 -0400",
          "category": "a11y",
          "headline": "a11y: catch .ar-author__role + .hc-ecosystem-title in last contrast sweep",
          "raw_subject": "a11y: catch .ar-author__role + .hc-ecosystem-title in last contrast sweep"
        },
        {
          "hash": "cd657459c",
          "date": "2026-05-10",
          "iso": "2026-05-10 22:11:14 -0400",
          "category": "a11y",
          "headline": "a11y(critical): add a11y-contrast.css to 39 article-tier pages + override translucent text",
          "raw_subject": "a11y(critical): add a11y-contrast.css to 39 article-tier pages + override translucent text"
        },
        {
          "hash": "939c92ffe",
          "date": "2026-05-10",
          "iso": "2026-05-10 22:06:19 -0400",
          "category": "a11y",
          "headline": "a11y: opacity:1 on .nav-segment .segment-label + label/eyebrow color refinements",
          "raw_subject": "a11y: opacity:1 on .nav-segment .segment-label + label/eyebrow color refinements"
        },
        {
          "hash": "952cea69f",
          "date": "2026-05-10",
          "iso": "2026-05-10 22:03:50 -0400",
          "category": "a11y",
          "headline": "a11y(wcag2a): fix scrollable-region-focusable + aria-input-field-name",
          "raw_subject": "a11y(wcag2a): fix scrollable-region-focusable + aria-input-field-name"
        },
        {
          "hash": "bd33b297b",
          "date": "2026-05-10",
          "iso": "2026-05-10 21:59:51 -0400",
          "category": "a11y",
          "headline": "a11y: sweep inline critical-CSS color:var(--garnet-main) → var(--garnet-text)",
          "raw_subject": "a11y: sweep inline critical-CSS color:var(--garnet-main) → var(--garnet-text)"
        },
        {
          "hash": "7e29ba77a",
          "date": "2026-05-10",
          "iso": "2026-05-10 21:54:36 -0400",
          "category": "fix",
          "headline": "bump cache-bust → 20260510b after garnet-text refactor",
          "raw_subject": "fix(cache): bump cache-bust → 20260510b after garnet-text refactor"
        },
        {
          "hash": "27e29d16d",
          "date": "2026-05-10",
          "iso": "2026-05-10 21:54:31 -0400",
          "category": "a11y",
          "headline": "a11y: refactor color: var(--garnet-main) → color: var(--garnet-text) (90 swaps)",
          "raw_subject": "a11y: refactor color: var(--garnet-main) → color: var(--garnet-text) (90 swaps)"
        },
        {
          "hash": "2a2ab11e3",
          "date": "2026-05-10",
          "iso": "2026-05-10 21:18:33 -0400",
          "category": "audit",
          "headline": "a11y session results — 382 → 211 violations (-45%)",
          "raw_subject": "audit: a11y session results — 382 → 211 violations (-45%)"
        },
        {
          "hash": "32192a86f",
          "date": "2026-05-10",
          "iso": "2026-05-10 21:15:33 -0400",
          "category": "fix",
          "headline": "bump cache-bust 20260510 → 20260510a (force fresh a11y CSS)",
          "raw_subject": "fix(cache): bump cache-bust 20260510 → 20260510a (force fresh a11y CSS)"
        },
        {
          "hash": "68d5a4171",
          "date": "2026-05-10",
          "iso": "2026-05-10 21:13:26 -0400",
          "category": "a11y",
          "headline": "a11y: extend contrast overrides to .ar-* article patterns + in-page anchors",
          "raw_subject": "a11y: extend contrast overrides to .ar-* article patterns + in-page anchors"
        },
        {
          "hash": "cc00ee364",
          "date": "2026-05-10",
          "iso": "2026-05-10 21:10:41 -0400",
          "category": "fix",
          "headline": "_headers order + bust a11y-contrast.css references on 50 pages",
          "raw_subject": "fix(cache): _headers order + bust a11y-contrast.css references on 50 pages"
        },
        {
          "hash": "d51c01079",
          "date": "2026-05-10",
          "iso": "2026-05-10 21:05:49 -0400",
          "category": "other",
          "headline": "a11y+infra: contrast token sweep (281 axe nodes targeted) + worker consolidation",
          "raw_subject": "a11y+infra: contrast token sweep (281 axe nodes targeted) + worker consolidation"
        },
        {
          "hash": "7986b170a",
          "date": "2026-05-10",
          "iso": "2026-05-10 18:20:36 -0400",
          "category": "audit",
          "headline": "Lighthouse desktop (4 URLs) + axe-core a11y scan + CrUX status",
          "raw_subject": "audit: Lighthouse desktop (4 URLs) + axe-core a11y scan + CrUX status"
        },
        {
          "hash": "c519411fd",
          "date": "2026-05-10",
          "iso": "2026-05-10 18:09:54 -0400",
          "category": "aeo",
          "headline": "BreadcrumbList on 57 articles + HowTo on 4 methodology pages",
          "raw_subject": "aeo: BreadcrumbList on 57 articles + HowTo on 4 methodology pages"
        },
        {
          "hash": "4f8a04232",
          "date": "2026-05-10",
          "iso": "2026-05-10 18:05:42 -0400",
          "category": "perf",
          "headline": "defer 183 scripts + kill mobile LCP-blocking dazzle animation",
          "raw_subject": "perf: defer 183 scripts + kill mobile LCP-blocking dazzle animation"
        },
        {
          "hash": "fd94ab57f",
          "date": "2026-05-10",
          "iso": "2026-05-10 15:03:12 -0400",
          "category": "audit",
          "headline": "rerun against prod after fixes — garnetgrid 98% vs vertsolutions 94%",
          "raw_subject": "audit: rerun against prod after fixes — garnetgrid 98% vs vertsolutions 94%"
        },
        {
          "hash": "f9af034d7",
          "date": "2026-05-10",
          "iso": "2026-05-10 15:00:49 -0400",
          "category": "other",
          "headline": "comprehensive site-audit checklist + scorer + 4 SEO/PWA fixes",
          "raw_subject": "audit+ux: comprehensive site-audit checklist + scorer + 4 SEO/PWA fixes"
        },
        {
          "hash": "3cc0cf150",
          "date": "2026-05-10",
          "iso": "2026-05-10 14:43:32 -0400",
          "category": "revenue",
          "headline": "rotate Stripe publishable key + scrub historical partial refs",
          "raw_subject": "revenue+sec: rotate Stripe publishable key + scrub historical partial refs"
        },
        {
          "hash": "c397429c1",
          "date": "2026-05-10",
          "iso": "2026-05-10 10:07:37 -0400",
          "category": "data",
          "headline": "GEO baseline rerun snapshot (throttle fix partial, Gemini grounded)",
          "raw_subject": "data: GEO baseline rerun snapshot (throttle fix partial, Gemini grounded)"
        },
        {
          "hash": "42c935d5a",
          "date": "2026-05-10",
          "iso": "2026-05-10 10:00:43 -0400",
          "category": "content",
          "headline": "prune 8 redundant insights articles → consolidated parents (40 → 32)",
          "raw_subject": "content: prune 8 redundant insights articles → consolidated parents (40 → 32)"
        },
        {
          "hash": "f766728fc",
          "date": "2026-05-10",
          "iso": "2026-05-10 09:42:53 -0400",
          "category": "other",
          "headline": "phase-4.1 — backfill audit-fixes-2026-05-09.css to article-tier pages",
          "raw_subject": "ux: phase-4.1 — backfill audit-fixes-2026-05-09.css to article-tier pages"
        },
        {
          "hash": "778b6e021",
          "date": "2026-05-10",
          "iso": "2026-05-10 09:36:03 -0400",
          "category": "other",
          "headline": "phase-4.4 — standardize body[data-tier]+[data-scene] across 70 pages",
          "raw_subject": "ux: phase-4.4 — standardize body[data-tier]+[data-scene] across 70 pages"
        },
        {
          "hash": "c63325ef5",
          "date": "2026-05-10",
          "iso": "2026-05-10 09:08:53 -0400",
          "category": "other",
          "headline": "global header/footer + asset hygiene across 97 pages",
          "raw_subject": "ux: global header/footer + asset hygiene across 97 pages"
        },
        {
          "hash": "9657748fd",
          "date": "2026-05-10",
          "iso": "2026-05-10 08:44:07 -0400",
          "category": "revenue",
          "headline": "serialize local-LLM engines + lower max_tokens, capture Gemini-grounded baseline",
          "raw_subject": "revenue: serialize local-LLM engines + lower max_tokens, capture Gemini-grounded baseline"
        },
        {
          "hash": "17741a1d7",
          "date": "2026-05-10",
          "iso": "2026-05-10 08:11:26 -0400",
          "category": "infra",
          "headline": "cron capacity unblock + gemini sovereign-by-default + launchd analyzer",
          "raw_subject": "infra: cron capacity unblock + gemini sovereign-by-default + launchd analyzer"
        },
        {
          "hash": "116d6f918",
          "date": "2026-05-10",
          "iso": "2026-05-10 07:20:43 -0400",
          "category": "revenue",
          "headline": "crawler tap end-to-end verified — first WAE-backed snapshot landed",
          "raw_subject": "revenue: crawler tap end-to-end verified — first WAE-backed snapshot landed"
        },
        {
          "hash": "9021207f9",
          "date": "2026-05-10",
          "iso": "2026-05-10 07:11:24 -0400",
          "category": "infra",
          "headline": "rename WAE binding → GARNET_GRID_DS / Garnet_grid_ds + add event_kind discriminator",
          "raw_subject": "infra: rename WAE binding → GARNET_GRID_DS / Garnet_grid_ds + add event_kind discriminator"
        },
        {
          "hash": "37d58a074",
          "date": "2026-05-10",
          "iso": "2026-05-10 05:33:21 -0400",
          "category": "other",
          "headline": "WAE binding requires product opt-in — runbook step 0 added",
          "raw_subject": "state+docs: WAE binding requires product opt-in — runbook step 0 added"
        },
        {
          "hash": "fab87ffa2",
          "date": "2026-05-10",
          "iso": "2026-05-10 05:11:17 -0400",
          "category": "other",
          "headline": "deploy snapshot-writer + crawler-analyzer Workers — 5-cron limit notes",
          "raw_subject": "state+infra: deploy snapshot-writer + crawler-analyzer Workers — 5-cron limit notes"
        },
        {
          "hash": "0f97a7f11",
          "date": "2026-05-10",
          "iso": "2026-05-10 04:50:45 -0400",
          "category": "revenue",
          "headline": "AI-bot crawler analyzer — pure-Garnet citation-indexing measurement",
          "raw_subject": "revenue: AI-bot crawler analyzer — pure-Garnet citation-indexing measurement"
        },
        {
          "hash": "54f417385",
          "date": "2026-05-10",
          "iso": "2026-05-10 00:36:48 -0400",
          "category": "revenue",
          "headline": "free SearXNG fallback for the GEO Perplexity row + runbook",
          "raw_subject": "revenue: free SearXNG fallback for the GEO Perplexity row + runbook"
        }
      ]
    },
    {
      "date": "2026-05-09",
      "items": [
        {
          "hash": "87f169c3a",
          "date": "2026-05-09",
          "iso": "2026-05-09 22:30:18 -0400",
          "category": "other",
          "headline": "log geo-snapshot-writer + in-house GEO baseline milestone",
          "raw_subject": "state: log geo-snapshot-writer + in-house GEO baseline milestone"
        },
        {
          "hash": "d586e1023",
          "date": "2026-05-09",
          "iso": "2026-05-09 22:29:39 -0400",
          "category": "revenue",
          "headline": "ship garnet-geo-snapshot-writer Worker + capture in-house GEO baseline",
          "raw_subject": "revenue: ship garnet-geo-snapshot-writer Worker + capture in-house GEO baseline"
        },
        {
          "hash": "5be877d8b",
          "date": "2026-05-09",
          "iso": "2026-05-09 20:24:13 -0400",
          "category": "content",
          "headline": "4 onboarding walkthroughs + index — what the first 30 days actually look like",
          "raw_subject": "content: 4 onboarding walkthroughs + index — what the first 30 days actually look like"
        },
        {
          "hash": "e0d9fdfe9",
          "date": "2026-05-09",
          "iso": "2026-05-09 20:12:06 -0400",
          "category": "content",
          "headline": "3 more vs-alternatives pages, schema PR pack starter, upgraded home Org schema",
          "raw_subject": "content+revenue: 3 more vs-alternatives pages, schema PR pack starter, upgraded home Org schema"
        },
        {
          "hash": "7510a9491",
          "date": "2026-05-09",
          "iso": "2026-05-09 19:58:18 -0400",
          "category": "fix",
          "headline": "add llms.txt to build-pages.sh whitelist",
          "raw_subject": "fix(build): add llms.txt to build-pages.sh whitelist"
        },
        {
          "hash": "8377f9eb2",
          "date": "2026-05-09",
          "iso": "2026-05-09 19:56:51 -0400",
          "category": "content",
          "headline": "/llms.txt, GEO vs-alternatives buyer comparison, deploy-all.sh script",
          "raw_subject": "content+revenue: /llms.txt, GEO vs-alternatives buyer comparison, deploy-all.sh script"
        },
        {
          "hash": "2c74d05c6",
          "date": "2026-05-09",
          "iso": "2026-05-09 19:49:42 -0400",
          "category": "revenue",
          "headline": "make 3 deferred monthly Workflows deploy-ready + write snapshot-writer template",
          "raw_subject": "revenue: make 3 deferred monthly Workflows deploy-ready + write snapshot-writer template"
        },
        {
          "hash": "ef60d9384",
          "date": "2026-05-09",
          "iso": "2026-05-09 19:47:34 -0400",
          "category": "content",
          "headline": "bulk 4 lane methodology pages from ~720 to 1500-1900 words each",
          "raw_subject": "content(methodology): bulk 4 lane methodology pages from ~720 to 1500-1900 words each"
        },
        {
          "hash": "236a15017",
          "date": "2026-05-09",
          "iso": "2026-05-09 19:16:07 -0400",
          "category": "fix",
          "headline": "bust stale CSS/JS edge cache + restore nav on /lanes /case-studies /reports",
          "raw_subject": "fix(perfect-pass-2): bust stale CSS/JS edge cache + restore nav on /lanes /case-studies /reports"
        },
        {
          "hash": "0b0f47950",
          "date": "2026-05-09",
          "iso": "2026-05-09 19:05:14 -0400",
          "category": "fix",
          "headline": "consent.js null-deref, CSP strict-dynamic, og:image, sitewide footer",
          "raw_subject": "fix(perfect-pass): consent.js null-deref, CSP strict-dynamic, og:image, sitewide footer"
        },
        {
          "hash": "99e875bdf",
          "date": "2026-05-09",
          "iso": "2026-05-09 18:52:39 -0400",
          "category": "fix",
          "headline": "stack lane-hero vertically on mobile so .container reaches full width",
          "raw_subject": "fix(lanes): stack lane-hero vertically on mobile so .container reaches full width"
        },
        {
          "hash": "a7829c66e",
          "date": "2026-05-09",
          "iso": "2026-05-09 18:49:46 -0400",
          "category": "fix",
          "headline": "split _headers — /assets/css/* and /assets/js/* are NOT immutable",
          "raw_subject": "fix(cache): split _headers — /assets/css/* and /assets/js/* are NOT immutable"
        },
        {
          "hash": "2a5b2e79c",
          "date": "2026-05-09",
          "iso": "2026-05-09 18:41:33 -0400",
          "category": "fix",
          "headline": "unstick desktop hero blur, mobile hero letter-stack, missing nav",
          "raw_subject": "fix(lanes): unstick desktop hero blur, mobile hero letter-stack, missing nav"
        },
        {
          "hash": "50b132dfa",
          "date": "2026-05-09",
          "iso": "2026-05-09 18:09:28 -0400",
          "category": "fix",
          "headline": "keep style-src-attr permissive — JS libs set runtime element.style",
          "raw_subject": "fix(csp): keep style-src-attr permissive — JS libs set runtime element.style"
        },
        {
          "hash": "99890af6b",
          "date": "2026-05-09",
          "iso": "2026-05-09 18:08:01 -0400",
          "category": "fix",
          "headline": "chatbot CSS extracted to static file (was JS-injected, blocked by strict CSP)",
          "raw_subject": "fix(csp): chatbot CSS extracted to static file (was JS-injected, blocked by strict CSP)"
        },
        {
          "hash": "c28145ce5",
          "date": "2026-05-09",
          "iso": "2026-05-09 18:04:37 -0400",
          "category": "other",
          "headline": "style-src strict — hoist all 368 inline style attrs to classes",
          "raw_subject": "sec(csp): style-src strict — hoist all 368 inline style attrs to classes"
        },
        {
          "hash": "85753bcbd",
          "date": "2026-05-09",
          "iso": "2026-05-09 17:52:27 -0400",
          "category": "feature",
          "headline": "phase 4 — 3 methodology pages, live-ops footer, structured logger",
          "raw_subject": "feat: phase 4 — 3 methodology pages, live-ops footer, structured logger"
        },
        {
          "hash": "e3ea28dc7",
          "date": "2026-05-09",
          "iso": "2026-05-09 17:35:59 -0400",
          "category": "feature",
          "headline": "phase 3 — /pricing jump-nav + accordion, /checkout V4 reskin",
          "raw_subject": "feat(ux): phase 3 — /pricing jump-nav + accordion, /checkout V4 reskin"
        },
        {
          "hash": "a80f7e1f6",
          "date": "2026-05-09",
          "iso": "2026-05-09 17:33:29 -0400",
          "category": "feature",
          "headline": "phase 2 — engineer tile, photo rotation, hub filter, weekly ping",
          "raw_subject": "feat(ux+telemetry): phase 2 — engineer tile, photo rotation, hub filter, weekly ping"
        },
        {
          "hash": "23d2cfc83",
          "date": "2026-05-09",
          "iso": "2026-05-09 17:27:57 -0400",
          "category": "fix",
          "headline": "apex 308 response now carries HSTS header (preload eligibility)",
          "raw_subject": "fix(hsts): apex 308 response now carries HSTS header (preload eligibility)"
        },
        {
          "hash": "d6b10eaee",
          "date": "2026-05-09",
          "iso": "2026-05-09 17:25:40 -0400",
          "category": "feature",
          "headline": "audit-list QW phase — local MLX, byline, sticky CTA, TOC, redirects",
          "raw_subject": "feat(longform+ux): audit-list QW phase — local MLX, byline, sticky CTA, TOC, redirects"
        },
        {
          "hash": "e58546a17",
          "date": "2026-05-09",
          "iso": "2026-05-09 17:03:25 -0400",
          "category": "fix",
          "headline": "apex→www canonical via Pages middleware (was no-op in _redirects)",
          "raw_subject": "fix(redirect): apex→www canonical via Pages middleware (was no-op in _redirects)"
        },
        {
          "hash": "db12a0e83",
          "date": "2026-05-09",
          "iso": "2026-05-09 17:01:54 -0400",
          "category": "other",
          "headline": "apex canonical, idempotency, lighthouse, rollback, error routing",
          "raw_subject": "hardening(2026-05-09): apex canonical, idempotency, lighthouse, rollback, error routing"
        },
        {
          "hash": "72a660314",
          "date": "2026-05-09",
          "iso": "2026-05-09 16:53:15 -0400",
          "category": "fix",
          "headline": "drop wrong \"immutable, max-age=1y\" on non-fingerprinted bundles",
          "raw_subject": "fix(cache): drop wrong \"immutable, max-age=1y\" on non-fingerprinted bundles"
        },
        {
          "hash": "bbf2513e8",
          "date": "2026-05-09",
          "iso": "2026-05-09 16:44:43 -0400",
          "category": "fix",
          "headline": "post-audit P0+P1 sweep — desktop+mobile audit findings 2026-05-09",
          "raw_subject": "fix(ux): post-audit P0+P1 sweep — desktop+mobile audit findings 2026-05-09"
        },
        {
          "hash": "d04847656",
          "date": "2026-05-09",
          "iso": "2026-05-09 16:00:31 -0400",
          "category": "fix",
          "headline": "everything is Jakub Rezayev — sweep \"ANDREW\" + fix headshot src",
          "raw_subject": "fix(brand): everything is Jakub Rezayev — sweep \"ANDREW\" + fix headshot src"
        },
        {
          "hash": "1c7ab259d",
          "date": "2026-05-09",
          "iso": "2026-05-09 15:55:21 -0400",
          "category": "fix",
          "headline": "pricing coherence + concierge placeholder text (live audit fixes 2,4)",
          "raw_subject": "fix(ux): pricing coherence + concierge placeholder text (live audit fixes 2,4)"
        },
        {
          "hash": "9ea858dbb",
          "date": "2026-05-09",
          "iso": "2026-05-09 15:21:38 -0400",
          "category": "other",
          "headline": "add GitHub Actions CI workflow gating PRs/pushes on tests",
          "raw_subject": "ci: add GitHub Actions CI workflow gating PRs/pushes on tests"
        },
        {
          "hash": "1c170a122",
          "date": "2026-05-09",
          "iso": "2026-05-09 15:18:23 -0400",
          "category": "fix",
          "headline": "fix(site)+docs: quick-win SEO + nav cleanup; add STATE/INDEX root docs",
          "raw_subject": "fix(site)+docs: quick-win SEO + nav cleanup; add STATE/INDEX root docs"
        },
        {
          "hash": "7e340f27a",
          "date": "2026-05-09",
          "iso": "2026-05-09 14:55:17 -0400",
          "category": "other",
          "headline": "force-404 Pages Function for the briefly-public slug",
          "raw_subject": "sec(dashboards): force-404 Pages Function for the briefly-public slug"
        },
        {
          "hash": "68f09b7d1",
          "date": "2026-05-09",
          "iso": "2026-05-09 14:01:54 -0400",
          "category": "feature",
          "headline": "close 30+ stub TODOs across monthly workflows + GEO lane",
          "raw_subject": "feat(workflows+lanes): close 30+ stub TODOs across monthly workflows + GEO lane"
        },
        {
          "hash": "2267610a9",
          "date": "2026-05-09",
          "iso": "2026-05-09 13:32:52 -0400",
          "category": "other",
          "headline": "pull internal GA4 dashboards from public Pages — local-only",
          "raw_subject": "sec(dashboards): pull internal GA4 dashboards from public Pages — local-only"
        },
        {
          "hash": "e9974d424",
          "date": "2026-05-09",
          "iso": "2026-05-09 13:25:02 -0400",
          "category": "other",
          "headline": "include dashboards/ in deploy whitelist",
          "raw_subject": "build(pages): include dashboards/ in deploy whitelist"
        },
        {
          "hash": "7b8b04947",
          "date": "2026-05-09",
          "iso": "2026-05-09 13:13:28 -0400",
          "category": "feature",
          "headline": "GA4 internal dashboards via Data API + Chart.js",
          "raw_subject": "feat(dashboards): GA4 internal dashboards via Data API + Chart.js"
        },
        {
          "hash": "e20e55b1a",
          "date": "2026-05-09",
          "iso": "2026-05-09 12:07:49 -0400",
          "category": "fix",
          "headline": "fix(a11y) + docs(looker): heading-order, mobile-nav landmark, one-click Looker URLs",
          "raw_subject": "fix(a11y) + docs(looker): heading-order, mobile-nav landmark, one-click Looker URLs"
        },
        {
          "hash": "33beb8188",
          "date": "2026-05-09",
          "iso": "2026-05-09 12:02:51 -0400",
          "category": "other",
          "headline": "perf+a11y: 4 optimizations + Looker runbook (closes audit follow-up list)",
          "raw_subject": "perf+a11y: 4 optimizations + Looker runbook (closes audit follow-up list)"
        }
      ]
    }
  ]
}