# Dashboard QC Report — 2026-08-01 16:02:13
_Today = 2026-08-01, Yesterday = 2026-07-31_

## Summary
- PASS: 72
- WARN: 6
- FAIL: 0

**Overall: WARN**

## Checks

### WARN (6)

- [WARN] **Withings — most recent weigh-in** — 2026-07-25 09:37:00 (7d old)
- [WARN] **Static review — Mounjaro nutrition sub (macro targets card)** — reviewed 21d ago (cadence 14d) — re-read soon
- [WARN] **Static review — Strict keto vs moderate low-carb** — reviewed 21d ago (cadence 14d) — re-read soon
- [WARN] **Static review — Pill organizer headings (Data)** — reviewed 21d ago (cadence 14d) — re-read soon
- [WARN] **Static review — meds_supplements.csv review** — reviewed 21d ago (cadence 14d) — re-read soon
- [WARN] **Static review — Doctor questions list** — reviewed 45d ago (cadence 30d) — re-read soon

### PASS (72)

- [PASS] **Script syntax — all Python scripts compile** — All 33 .py scripts compile cleanly
- [PASS] **Build output — Fitness_Dashboard.html fresh** — Written 0.0h ago
- [PASS] **Build output — HTML structural integrity** — 476KB, ends with </html>, all required sections present
- [PASS] **Last scheduled run — all steps passed** — Completed 3.0h ago, publish verified
- [PASS] **Freshness — Apple Health JSON** — HealthAutoExport_2026-07-31T19-56-29-136Z_1c75c132.json (13.0h old)
- [PASS] **Freshness — Whoop CSV** — journal_entries.csv (0.0h old)
- [PASS] **Freshness — Withings CSV** — sleep.csv (0.0h old)
- [PASS] **Freshness — MFP CSV** — diary.csv (0.0h old)
- [PASS] **Freshness — Keto-Mojo CSV** — 260801 keto-mojo-web.csv (0.0h old)
- [PASS] **Freshness — Beurer BP CSV** — 260801 beurer-bp-bridge.csv (0.0h old)
- [PASS] **Dashboard HTML present** — Fitness_Dashboard.html (486,760 chars)
- [PASS] **Today tab — eyebrow date** — Dashboard shows AUG 01, 2026
- [PASS] **Today tab — header weight plausible** — 137.3 kg
- [PASS] **Today tab — header BF% plausible** — 29.3%
- [PASS] **Today tab — Recovery has value** — 35%
- [PASS] **Today tab — HRV chip non-zero** — HRV 19 ms
- [PASS] **Today tab — Sleep chip present** — 6h 36m
- [PASS] **Today tab — Macros Yesterday populated** — All 4 macros have values: {'Protein': '85 g', 'Net Carbs': '215 g', 'Fat': '86 g', 'Sugar': '24 g'}
- [PASS] **Today tab — Protein dial bg is red** — dial stroke = #f87171 (unified state palette, correct)
- [PASS] **Today tab — Lean/Fat Loss baseline** — Anchored on Mounjaro start (May 4, 2026)
- [PASS] **Nutrition tab — Protein fresh today+yesterday** — today=76, yesterday=85
- [PASS] **Nutrition tab — Carbs fresh today+yesterday** — today=0, yesterday=232
- [PASS] **Nutrition tab — Fat fresh today+yesterday** — today=28, yesterday=86
- [PASS] **Nutrition tab — Sugar fresh today+yesterday** — today=0.0, yesterday=24.0
- [PASS] **Nutrition tab — Calories in fresh today+yesterday** — today=580, yesterday=2045
- [PASS] **Nutrition tab — Calories burned fresh today+yesterday** — today=1550, yesterday=2565
- [PASS] **Activity tab — Steps fresh today+yesterday** — today=133, yesterday=2002
- [PASS] **Activity tab — Recovery % fresh today+yesterday** — today=35.0, yesterday=88.0
- [PASS] **Activity tab — HRV (ms) fresh today+yesterday** — today=19.0, yesterday=29.0
- [PASS] **Activity tab — Resting HR fresh today+yesterday** — today=67.0, yesterday=60.0
- [PASS] **Activity tab — Sleep (h) fresh today+yesterday** — today=6.6, yesterday=6.17
- [PASS] **Activity tab — Strain (Whoop) fresh today+yesterday** — today=4.2, yesterday=4.4
- [PASS] **Activity tab — Exercise minutes fresh today+yesterday** — today=0, yesterday=3
- [PASS] **Nutrition tab — Fiber data fresh** — 66/95 days populated, latest=0.0
- [PASS] **MFP source — column coverage** — All expected columns present
- [PASS] **MFP source — fiber populated** — today='0.0', yesterday='17.0'
- [PASS] **Cross-source — Withings vs header weight** — Latest Withings 137.3kg (2026-07-25 09:37:00) matches header 137.3kg
- [PASS] **Drag verdict honesty** — 'Net carbs 215g (target &le;28g &mdash; 667% over)'
- [PASS] **Hydration honesty** — No null-as-zero hydration fabrication
- [PASS] **Static review — Long-term arc (Goals hero)** — reviewed 1d ago (cadence 30d)
- [PASS] **Static review — Build the base (Activity hero)** — reviewed 1d ago (cadence 30d)
- [PASS] **Static review — Protein-first (Nutrition hero)** — reviewed 1d ago (cadence 30d)
- [PASS] **Static review — Body composition (Body hero)** — reviewed 1d ago (cadence 30d)
- [PASS] **Static review — Data sources of truth (Data hero)** — reviewed 1d ago (cadence 30d)
- [PASS] **Static review — Recipes hero** — reviewed 1d ago (cadence 30d)
- [PASS] **Static review — Source-of-truth policy (Data)** — reviewed 1d ago (cadence 30d)
- [PASS] **Static review — Vitamin D loading protocol (Data)** — reviewed 4d ago (cadence 7d)
- [PASS] **Static review — Recovery interpretation thresholds** — reviewed 1d ago (cadence 30d)
- [PASS] **Static review — GKI interpretation thresholds** — reviewed 1d ago (cadence 30d)
- [PASS] **Static review — Yesterday score weights** — reviewed 1d ago (cadence 30d)
- [PASS] **Static review — Mounjaro week-3 narrative transition** — reviewed 1d ago (cadence 30d)
- [PASS] **Static review — health_config.md weekly review** — reviewed 1d ago (cadence 30d)
- [PASS] **Hero gauges identical viewBox** — Both = '0 0 220 130'
- [PASS] **Recipes tab — 14 cards present** — 53 rcp-card entries
- [PASS] **Data tab — 2/3-1/3 row layout** — data-cards-2-1-row container present
- [PASS] **Data tab — 13 source-of-truth logo tiles** — 13 sot-cell entries
- [PASS] **Data tab — 12 brand logo images linked** — 12 source-logos/* image refs
- [PASS] **Data tab — Pending data streams section removed** — absent (good)
- [PASS] **Data tab — Daily snapshot section removed** — absent (good)
- [PASS] **Data tab — Refresh Cadence card removed** — absent (good)
- [PASS] **Data tab — Old linear source-policy layout removed** — absent (good)
- [PASS] **Data tab — QC card shows real numbers** — pass=72 warn=6 fail=0
- [PASS] **Publish — qc_report.md staged** — publish_to_cloudflare.ps1 references qc_report.md
- [PASS] **Withings logo — current wordmark** — withings.svg is the current standalone wordmark (302 bytes)
- [PASS] **Source-logos folder — all 12 image files present** — All 12 files exist in source-logos/
- [PASS] **Insights wiring — window.DATA.protein_today exposed** — key present in DATA literal
- [PASS] **Insights wiring — window.DATA.steps_today exposed** — key present in DATA literal
- [PASS] **Insights wiring — window.DATA.latest_ketone exposed** — key present in DATA literal
- [PASS] **Body tab — progress photo rendered** — 4 front photo(s) on disk, photo-slot-filled present in HTML
- [PASS] **workout.js — required IIFE markers + closing OK** — 113KB, all 6 markers present, ends correctly
- [PASS] **workout.js — bracket balance** — braces: 521=521, parens: 1917=1917
- [PASS] **insights.js — water tracker has all 4 buttons** — buttons: ['250', '500', '1000', '1500'] ml

_Generated by qc_dashboard.py against Fitness_Dashboard.html_