feat: 1RM parity Phase 1 — canonical hybrid estimate + sync field#486
Conversation
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…stimate Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add PortalExerciseDto.estimatedOneRepMaxKg (nullable Float) computed via OneRepMaxCalculator.estimate (Brzycki ≤10 reps, Epley >10 reps). Mobile is now the source of truth; portal stores verbatim and skips recomputation when field is present. Field is nullable for backward compat with legacy payloads.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
There was a problem hiding this comment.
Code Review
This pull request implements Phase 1 of the 1RM Parity plan by introducing a canonical hybrid 1RM estimation formula (Brzycki for reps <= 10, Epley for reps > 10) in OneRepMaxCalculator and refactoring various screens, exporters, and repositories to use it. It also adds the estimatedOneRepMaxKg field to the sync DTO to ship the mobile-computed estimate to the portal. The reviewer feedback suggests using session.workingReps instead of session.totalReps in the sync adapter to avoid inflating 1RM estimates with warmup reps, along with a corresponding update to the unit tests.
…c/PortalSyncAdapter.kt Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…c/PortalSyncAdapterTest.kt Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Code Review Roast 🔥Verdict: No Issues Found | Recommendation: Merge Oh wait, this PR is actually clean. I need to sit down. I had my flamethrower warmed up and everything. This is a rare sight - a PR that not only adds functionality but actually removes code duplication while fixing latent bugs. The hybrid Brzycki/Epley transition at reps=10 is mathematically seamless (both give 1.3333× multiplier), and the centralization of 📊 Overall: Like finding a unicorn in production — I didn't think clean PRs existed anymore, but here we are. Files Reviewed (11 files)
Reviewed by laguna-m.1-20260312:free · 1,363,949 tokens |
Summary
Test plan
Made with Cursor