Repository navigation
Add durable training pauses and retryable saves - #10
Closed
AlexSchmidt1999 wants to merge 2 commits into
Closed
AlexSchmidt1999 wants to merge 2 commits into
AlexSchmidt1999 wants to merge 2 commits into
Conversation
Owner
Author
|
Closing this older fork test PR. Its full head ( The relevant changes are now submitted for upstream review in #2759. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Normal workouts and Lift Log can pause explicitly without toggling a paused session back on. Lift clocks/rest warnings freeze, typed inputs survive restoration, and stored active workout duration excludes pauses.
Both save paths await successful storage before clearing the session. Failed saves keep the paused session available; Lift retry IDs are stable, and external callers can save only completed sets without modifying a program template. Normal workout scoring uses an immutable snapshot away from the main actor.
The shared 600-second pulse guard uses the existing accepted-live-packet funnel, including new packets with equal bpm. Its iPhone activation and external controls are in the following stacked PR. Existing coaching Live Sessions retain their original auto-end deadline basis. No database migration, backup-key change, destructive BLE command or new dependency is introduced. Scope is Apple only.
Validation: macOS app tests and iOS device builds passed locally. Focused tests cover pulse freshness/599–600 seconds, restoration, pause/resume/undo and frozen Lift clocks, preserved pending input/RPE, and an injected SQLite write failure followed by an idempotent retry. Accepted live packet and CRC tests passed. Hardware BLE behavior remains to be tested with the owner's strap.
Stacked on the Today/sync fix for the fork test build. No upstream PR is requested yet.