Skip to content

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_retro registered on capture + coordinator personas
  • Cron: 30 3 * * 1 (Mon 03:30 UTC = Sun 22:30 CT CDT) → logs to forge/logs/integrations/fitness-retro.log
  • Reports: forge/data/fitness-retros/<monday-iso>.md

What it does

  1. Pulls last 30 Wellness Daily rows from Notion via n8n notion-query-database
  2. 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
  3. Calls Sonnet for a 3-bullet recap (em-dashes stripped via forge_text_sanitize.strip_em_dashes)
  4. Writes a markdown report to forge/data/fitness-retros/<monday-iso>.md
  5. Posts a Notion sub-page under the Fitness page (3510950b-d7a9-815a-bf64-f9b787390458) via n8n notion-create-subpage
  6. 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]