Skip to content

feat: training zones — Daniels paces + Karvonen HR zones (v1.10.0)#80

Merged
0jonjo merged 5 commits into
mainfrom
feat/training-zones-v1.10.0
Jul 11, 2026
Merged

feat: training zones — Daniels paces + Karvonen HR zones (v1.10.0)#80
0jonjo merged 5 commits into
mainfrom
feat/training-zones-v1.10.0

Conversation

@0jonjo

@0jonjo 0jonjo commented Jul 11, 2026

Copy link
Copy Markdown
Owner

Summary

New TrainingZones module answering the runner's next question after VO2max: what pace should I train at?

  • training_paces(vo2max) — personalized Easy/Marathon/Threshold/Interval/Repetition pace bands per km, inverting the Daniels & Gilbert (1979) velocity equation at each training intensity (%VO2max from Daniels' Running Formula)
  • training_paces_from_race(distance_km, time) — convenience wrapper reusing estimate_vo2max
  • hr_zones(hr_max:, hr_rest:) — five Karvonen (Heart Rate Reserve) heart-rate zones using resting HR
  • Structured results (PaceBand, HrZone) with seconds and clock formats
  • Zero new dependencies; no existing method changed; minor bump to 1.10.0

Validation

Threshold pace at VO2max 50 matches Daniels' VDOT 50 table exactly (04:15/km); interval and repetition within seconds; easy band is a range heuristic.

Test plan

  • 16 new Minitest tests (TDD — red/green per task)
  • Full suite: 275 runs, 630 assertions, 0 failures
  • Rubocop clean

Release (gem build + gem push) only after merge.

Copilot AI review requested due to automatic review settings July 11, 2026 11:07

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@0jonjo
0jonjo merged commit 5753821 into main Jul 11, 2026
7 checks passed
@0jonjo
0jonjo deleted the feat/training-zones-v1.10.0 branch July 11, 2026 11:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants