Repository navigation
Conversation
|
Thanks @kavemang. I traced the race and it is real: on main, Holding this one for two reasons, neither of them about the design. 1. The CoreBluetooth path needs a strapAGENTS.md is explicit that anything on the CoreBluetooth, offload or live-HR path must be validated on real hardware, because compile success proves nothing about connection behaviour. Your own notes say the same ("No strap or phone tested", "Draft pending"), so I am taking that at face value rather than merging on green CI. I have a 4.0 and a 5.0/MG here and can run it. What I would want exercised, since the change moves all of these onto one path:
2. The gate refuses silently, and one of those refusals used to logThis is the part I would like changed before it lands.
AGENTS.md's diagnostics rule cuts directly against that: "do not let a path go quiet: replacing a wrong line with no line removed the evidence that identified the bug." In a change whose whole subject is startup sequencing, the failure report it will produce is "my strap stopped connecting after this update", and there would be nothing in a strap log to separate a database that did not open from a radio that was not powered yet. Could you log inside One behaviour change worth confirming on hardware
What I checked and found sound
For reference, #2646 is merged, as |
What this PR does
Automatic WHOOP startup waits for the store to load the active-device selection before connecting or discovering services. Shared preparation covers poweredOn, restoration, and a restored pending connection that completes during store opening. Readiness, radio state and the existing device policy are checked after preparation.
Startup refusals now report store-not-ready or central-not-poweredOn through the always-on connection log, including the startup entry point and observed radio state. Existing active-device refusal logging remains the policy evidence. Failed preparation can retry on foreground entry or protected-data availability.
Refs #2604. This covers the startup race; established-link cancellation and an outbound-write gate remain outside this PR. Android seeds its active-device selection synchronously before radio callbacks and does not share this initialization race.
Validation
4fbdc2e351f4f2f328352ac9d176b67418bf2f11: native macOS build with StrandTests, iOS simulator build, Tools Python, hygiene and i18n. The head and complete five-check roster were rechecked. Apple CI run.Awaiting maintainer hardware — draft
No phone or strap has been tested for this PR. The maintainer's review checklist requires real WHOOP 4.0 and 5.0/MG validation:
The PR remains draft until that hardware validation is supplied. Compile/test success does not establish BLE behavior.