Fitness Weekly Retro¶
Built 2026-04-30 as Build 3 of the Garmin + Hevy integration plan (reference_garmin_workout_integration.md).
Files¶
forge/scripts/forge_fitness_weekly_retro.py— engine + CLI- Bot tool
fitness_weekly_retroregistered on capture + coordinator personas - Cron:
30 3 * * 1(Mon 03:30 UTC = Sun 22:30 CT CDT) → logs toforge/logs/integrations/fitness-retro.log - Reports:
forge/data/fitness-retros/<monday-iso>.md
What it does¶
- Pulls last 30 Wellness Daily rows from Notion via n8n
notion-query-database - Computes lag-1 Pearson r between training inputs (
working_sets,lift_volume) on day N and recovery outputs (hrv_delta_7d,sleep_score,readiness) on day N+1 - Calls Sonnet for a 3-bullet recap (em-dashes stripped via
forge_text_sanitize.strip_em_dashes) - Writes a markdown report to
forge/data/fitness-retros/<monday-iso>.md - Posts a Notion sub-page under the Fitness page (
3510950b-d7a9-815a-bf64-f9b787390458) via n8nnotion-create-subpage - Sends a one-line forge notify with totals
Usage¶
~/forge/scripts/integrations/.venv/bin/python ~/forge/scripts/forge_fitness_weekly_retro.py # full run
~/forge/scripts/integrations/.venv/bin/python ~/forge/scripts/forge_fitness_weekly_retro.py --dry-run # local md only
~/forge/scripts/integrations/.venv/bin/python ~/forge/scripts/forge_fitness_weekly_retro.py --no-sonnet # rule-based, no quota burn
~/forge/scripts/integrations/.venv/bin/python ~/forge/scripts/forge_fitness_weekly_retro.py --show # also print report
Bot trigger phrases: "how's training been", "volume vs recovery", "how am I trending this month", "fitness retro".
Notes¶
- Pearson uses stdlib (no numpy/pandas). Returns None when n<3 or zero variance.
- Caveats interpreted into language: r<0.3 weak, 0.3-0.6 moderate, ≥0.6 strong.
- Wellness Daily DB was created 2026-04-28; useful signal needs ~30 days of accumulation. Early runs will report n=0/1/2 for most cells.
- Per-muscle-group correlations explicitly skipped at first pass (too noisy at small n).
[Claude Code, Build 3 of Garmin + Hevy plan]