Skip to content

Separate WHOOP 5 HRV baseline at labelled R-R boundary - #2583

Open
kavemang wants to merge 5 commits into
ryanbr:mainfrom
kavemang:fix/whoop5-hrv-baseline-regime-2126
Open

kavemang wants to merge 5 commits into
ryanbr:mainfrom
kavemang:fix/whoop5-hrv-baseline-regime-2126

Conversation

@kavemang

@kavemang kavemang commented Sep 29, 2026 •

Copy link
Copy Markdown

Summary

  • Use the first scorable, labelled WHOOP 5 R-R beat as the HRV baseline boundary on iOS and Android.
  • Keep the later of that boundary and the user's manual recalibration epoch, and pass the same epoch to the scoring fold and its diagnostic trace.
  • Leave historical HRV rows intact for display. Older nights stop contributing to new Charge comparisons.

Refs #2126

Validation

  • Android :app:compileFullDebugKotlin --offline passed.
  • Android IntelligenceEngineJacocoBudgetTest, Whoop5RRSqliteTest, and HrvBaselineRecalibrationTest passed. The WHOOP 5 lifecycle test now verifies that the first labelled night restores HRV while Charge calibrates against the new regime.
  • git diff --check passed.

Remaining validation

I could not build the Swift app target on this Linux host; the app build check should validate it on macOS. The Today calibration count and explanatory copy still read stored history through the manual epoch only, so they may need a follow-up to reflect the automatic WHOOP 5 boundary while a new baseline is seeding. This PR addresses the scoring error first.

Preserve imported and own baseline histories while reusing the effective
manual-or-labelled-RR epoch in both scoring folds and their trace. Remove
the later manual-only epoch reread introduced by the automatic merge.

Refs #2126
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.

1 participant