snapshots.gf.cx R2 push — 2026-06-23
DAILY HYGIENE · · detail report · check snapshots_r2_push
Verdict: 🔴 RED
22 surface(s) have a BROKEN LATEST entry — visible as a broken featured card on snapshots.gf.cx: antifragile-gf, brand-gf-cx, brooklyn-gf-cx, crm-gf-cx, cv-gf-cx, dash-gf-cx, dash-reports, data-gf-cx, data-sourced, email-gf-cx, growth-gf-cx, happiness-gf-cx, london-gf-cx, pa-gf-cx, patterns-gf-cx, radar-gf-cx, sandbox-fal, sandbox-gf-cx, sandbox-one-pager, services-gf-cx, status-gf-cx, status-transfer-windows.
Delta-results
| Metric | Value |
|---|---|
| surfaces | [{‘slug’: ‘antifragile-gf’, ‘total_entries’: 20, ‘in_window’: 4, ‘missing_r2’: 2, ‘missing_examples’: [‘antifragile-gf_2026-06-22_842f982.jpg’, ‘antifragile-gf_2026-06-23_842f982.jpg’], ‘broken_url_count’: 0, ‘latest_broken’: True, ‘latest_filename’: ‘antifragile-gf_2026-06-23_842f982.jpg’}, {‘slug’: ‘brand-gf-cx’, ‘total_entries’: 8, ‘in_window’: 2, ‘missing_r2’: 2, ‘missing_examples’: [‘brand-gf-cx_2026-06-22_fbac34c.jpg’, ‘brand-gf-cx_2026-06-23_fbac34c.jpg’], ‘broken_url_count’: 0, ‘latest_broken’: True, ‘latest_filename’: ‘brand-gf-cx_2026-06-23_fbac34c.jpg’}, {‘slug’: ‘brooklyn-gf-cx’, ‘total_entries’: 8, ‘in_window’: 2, ‘missing_r2’: 2, ‘missing_examples’: [‘brooklyn-gf-cx_2026-06-22_c8ddc84.jpg’, ‘brooklyn-gf-cx_2026-06-23_c8ddc84.jpg’], ‘broken_url_count’: 0, ‘latest_broken’: True, ‘latest_filename’: ‘brooklyn-gf-cx_2026-06-23_c8ddc84.jpg’}, {‘slug’: ‘crm-gf-cx’, ‘total_entries’: 8, ‘in_window’: 2, ‘missing_r2’: 2, ‘missing_examples’: [‘crm-gf-cx_2026-06-22_110135.jpg’, ‘crm-gf-cx_2026-06-23_110129.jpg’], ‘broken_url_count’: 0, ‘latest_broken’: True, ‘latest_filename’: ‘crm-gf-cx_2026-06-23_110129.jpg’}, {‘slug’: ‘cv-gf-cx’, ‘total_entries’: 8, ‘in_window’: 2, ‘missing_r2’: 2, ‘missing_examples’: [‘cv-gf-cx_2026-06-22_110146.jpg’, ‘cv-gf-cx_2026-06-23_110142.jpg’], ‘broken_url_count’: 0, ‘latest_broken’: True, ‘latest_filename’: ‘cv-gf-cx_2026-06-23_110142.jpg’}, {‘slug’: ‘dash-gf-cx’, ‘total_entries’: 58, ‘in_window’: 3, ‘missing_r2’: 2, ‘missing_examples’: [‘dash-gf-cx_2026-06-22_cd56e77.jpg’, ‘dash-gf-cx_2026-06-23_cd56e77.jpg’], ‘broken_url_count’: 0, ‘latest_broken’: True, ‘latest_filename’: ‘dash-gf-cx_2026-06-23_cd56e77.jpg’}, {‘slug’: ‘dash-reports’, ‘total_entries’: 77, ‘in_window’: 2, ‘missing_r2’: 2, ‘missing_examples’: [‘dash-reports_2026-06-22_8d6462a.jpg’, ‘dash-reports_2026-06-23_8d6462a.jpg’], ‘broken_url_count’: 0, ‘latest_broken’: True, ‘latest_filename’: ‘dash-reports_2026-06-23_8d6462a.jpg’}, {‘slug’: ‘data-gf-cx’, ‘total_entries’: 32, ‘in_window’: 2, ‘missing_r2’: 2, ‘missing_examples’: [‘data-gf-cx_2026-06-22_df04686.jpg’, ‘data-gf-cx_2026-06-23_df04686.jpg’], ‘broken_url_count’: 0, ‘latest_broken’: True, ‘latest_filename’: ‘data-gf-cx_2026-06-23_df04686.jpg’}, {‘slug’: ‘data-sourced’, ‘total_entries’: 30, ‘in_window’: 2, ‘missing_r2’: 2, ‘missing_examples’: [‘data-sourced_2026-06-22_df04686.jpg’, ‘data-sourced_2026-06-23_df04686.jpg’], ‘broken_url_count’: 0, ‘latest_broken’: True, ‘latest_filename’: ‘data-sourced_2026-06-23_df04686.jpg’}, {‘slug’: ‘email-gf-cx’, ‘total_entries’: 9, ‘in_window’: 2, ‘missing_r2’: 2, ‘missing_examples’: [‘email-gf-cx_2026-06-22_7558645.jpg’, ‘email-gf-cx_2026-06-23_7558645.jpg’], ‘broken_url_count’: 0, ‘latest_broken’: True, ‘latest_filename’: ‘email-gf-cx_2026-06-23_7558645.jpg’}, {‘slug’: ‘growth-gf-cx’, ‘total_entries’: 15, ‘in_window’: 2, ‘missing_r2’: 2, ‘missing_examples’: [‘growth-gf-cx_2026-06-22_110129.jpg’, ‘growth-gf-cx_2026-06-23_110121.jpg’], ‘broken_url_count’: 0, ‘latest_broken’: True, ‘latest_filename’: ‘growth-gf-cx_2026-06-23_110121.jpg’}, {‘slug’: ‘happiness-gf-cx’, ‘total_entries’: 92, ‘in_window’: 4, ‘missing_r2’: 2, ‘missing_examples’: [‘happiness-gf-cx_2026-06-22_c66153a.jpg’, ‘happiness-gf-cx_2026-06-23_ab81b05.jpg’], ‘broken_url_count’: 0, ‘latest_broken’: True, ‘latest_filename’: ‘happiness-gf-cx_2026-06-23_ab81b05.jpg’}, {‘slug’: ‘london-gf-cx’, ‘total_entries’: 12, ‘in_window’: 2, ‘missing_r2’: 2, ‘missing_examples’: [‘london-gf-cx_2026-06-22_552a60b.jpg’, ‘london-gf-cx_2026-06-23_552a60b.jpg’], ‘broken_url_count’: 0, ‘latest_broken’: True, ‘latest_filename’: ‘london-gf-cx_2026-06-23_552a60b.jpg’}, {‘slug’: ‘pa-gf-cx’, ‘total_entries’: 25, ‘in_window’: 2, ‘missing_r2’: 2, ‘missing_examples’: [‘pa-gf-cx_2026-06-22_110039.jpg’, ‘pa-gf-cx_2026-06-23_110041.jpg’], ‘broken_url_count’: 0, ‘latest_broken’: True, ‘latest_filename’: ‘pa-gf-cx_2026-06-23_110041.jpg’}, {‘slug’: ‘patterns-gf-cx’, ‘total_entries’: 51, ‘in_window’: 2, ‘missing_r2’: 2, ‘missing_examples’: [‘patterns-gf-cx_2026-06-22_4e3ab40.jpg’, ‘patterns-gf-cx_2026-06-23_4e3ab40.jpg’], ‘broken_url_count’: 0, ‘latest_broken’: True, ‘latest_filename’: ‘patterns-gf-cx_2026-06-23_4e3ab40.jpg’}, {‘slug’: ‘radar-gf-cx’, ‘total_entries’: 8, ‘in_window’: 2, ‘missing_r2’: 2, ‘missing_examples’: [‘radar-gf-cx_2026-06-22_110140.jpg’, ‘radar-gf-cx_2026-06-23_110136.jpg’], ‘broken_url_count’: 0, ‘latest_broken’: True, ‘latest_filename’: ‘radar-gf-cx_2026-06-23_110136.jpg’}, {‘slug’: ‘sandbox-fal’, ‘total_entries’: 11, ‘in_window’: 2, ‘missing_r2’: 2, ‘missing_examples’: [‘sandbox-fal_2026-06-22_110115.jpg’, ‘sandbox-fal_2026-06-23_110108.jpg’], ‘broken_url_count’: 0, ‘latest_broken’: True, ‘latest_filename’: ‘sandbox-fal_2026-06-23_110108.jpg’}, {‘slug’: ‘sandbox-gf-cx’, ‘total_entries’: 12, ‘in_window’: 2, ‘missing_r2’: 2, ‘missing_examples’: [‘sandbox-gf-cx_2026-06-22_110110.jpg’, ‘sandbox-gf-cx_2026-06-23_110102.jpg’], ‘broken_url_count’: 0, ‘latest_broken’: True, ‘latest_filename’: ‘sandbox-gf-cx_2026-06-23_110102.jpg’}, {‘slug’: ‘sandbox-one-pager’, ‘total_entries’: 6, ‘in_window’: 2, ‘missing_r2’: 2, ‘missing_examples’: [‘sandbox-one-pager_2026-06-22_110121.jpg’, ‘sandbox-one-pager_2026-06-23_110114.jpg’], ‘broken_url_count’: 0, ‘latest_broken’: True, ‘latest_filename’: ‘sandbox-one-pager_2026-06-23_110114.jpg’}, {‘slug’: ‘services-gf-cx’, ‘total_entries’: 6, ‘in_window’: 2, ‘missing_r2’: 2, ‘missing_examples’: [‘services-gf-cx_2026-06-22_32ec2f7.jpg’, ‘services-gf-cx_2026-06-23_32ec2f7.jpg’], ‘broken_url_count’: 0, ‘latest_broken’: True, ‘latest_filename’: ‘services-gf-cx_2026-06-23_32ec2f7.jpg’}, {‘slug’: ‘status-gf-cx’, ‘total_entries’: 276, ‘in_window’: 4, ‘missing_r2’: 2, ‘missing_examples’: [‘status-gf-cx_2026-06-22_b92a74d.jpg’, ‘status-gf-cx_2026-06-23_bfbae4c.jpg’], ‘broken_url_count’: 0, ‘latest_broken’: True, ‘latest_filename’: ‘status-gf-cx_2026-06-23_bfbae4c.jpg’}, {‘slug’: ‘status-transfer-windows’, ‘total_entries’: 44, ‘in_window’: 4, ‘missing_r2’: 2, ‘missing_examples’: [‘status-transfer-windows_2026-06-22_b92a74d.jpg’, ‘status-transfer-windows_2026-06-23_bfbae4c.jpg’], ‘broken_url_count’: 0, ‘latest_broken’: True, ‘latest_filename’: ‘status-transfer-windows_2026-06-23_bfbae4c.jpg’}] |
| total_missing_r2 | 44 |
| total_broken_url | 0 |
| latest_broken_surfaces | [‘antifragile-gf’, ‘brand-gf-cx’, ‘brooklyn-gf-cx’, ‘crm-gf-cx’, ‘cv-gf-cx’, ‘dash-gf-cx’, ‘dash-reports’, ‘data-gf-cx’, ‘data-sourced’, ‘email-gf-cx’, ‘growth-gf-cx’, ‘happiness-gf-cx’, ‘london-gf-cx’, ‘pa-gf-cx’, ‘patterns-gf-cx’, ‘radar-gf-cx’, ‘sandbox-fal’, ‘sandbox-gf-cx’, ‘sandbox-one-pager’, ‘services-gf-cx’, ‘status-gf-cx’, ‘status-transfer-windows’] |
Why this tripwire exists
Catches the silent R2 upload failure where surface_snapshot.py captures the local JPEG successfully but wrangler r2 object put fails because launchd isn’t carrying CLOUDFLARE_API_TOKEN. Added 2026-06-05 after dash-gf-cx_2026-06-05_110006.jpg rendered as a broken featured card on snapshots.gf.cx (local 297 KB on disk, R2 URL 404). RED when any surface’s LATEST entry has no r2_url (= visible broken card) or ≥3 entries across portfolio are missing within 48h. Backfill heal: surface_snapshot.py --backfill-r2.
Generated by dare_daily_hygiene.py · check snapshots_r2_push · 2026-06-23 · authoritative click-through for the dash.dare.co.uk Site-Health card.
dare_snapshots_r2_push_2026-06-23.md · Rendered Built with — component scripts
seo_render_html.py— wraps the source.mdin the dash.gf.cx design language (+anchor_enricher.pyfor inline-link promotion & rollover thumbnails)dare_dev_reports_publish.py— bundles the day’s reports into the catalog and ships to dash.gf.cx/reports