docs(train): the Loop's training sessions are workouts (ADR 0030, D39)
The sessions the band detects become sealed workouts with their heart rate, origin Polar Loop; Train gains an activity Other workout; one overlapping a recorded workout gives it its heart rate; deleted on the band once sealed, as the days are. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
parent
5250f32329
commit
06cc39025b
1 changed files with 23 additions and 2 deletions
|
|
@ -1,9 +1,9 @@
|
|||
# ADR 0030: Halkyon Train, what it does and where its data comes from
|
||||
|
||||
- **Status:** decided 27–28 Oct 2026, by the developer (D1–D38 below). The shell (D12)
|
||||
- **Status:** decided 27–28 Oct 2026, by the developer (D1–D39 below). The shell (D12)
|
||||
is built; recording (D13–D28) is built on Android, iOS waiting for a Mac; Health
|
||||
Connect (D29–D31) is built; the Loop's setup and keeping (7a, D34–D36) and its
|
||||
daily data (7b, D37, D38) are built.
|
||||
daily data (7b, D37, D38) are built; its sessions (7c, D39) are being built.
|
||||
- **Numbering:** 0025 is held by the federation draft (stashed), 0026–0029 by the .NET
|
||||
rewrite on the local branch `rewrite-dotnet`, abandoned on 27 Oct; Train takes the next
|
||||
free number so that neither is ever read as this one.
|
||||
|
|
@ -689,6 +689,27 @@ Strava. What was found, 27 Oct:
|
|||
yet tried with a Loop: whether the SDK's deletion includes its `until` day, and
|
||||
whether the job connects to the band in the background, are for a real band.
|
||||
|
||||
- **D39 The Loop's training sessions are workouts** (recommended, the developer's; 28
|
||||
Oct): the band records a session by itself when it detects one (at least ten minutes
|
||||
of raised heart rate and movement, saved as *Other indoor* unless the person picks a
|
||||
sport; Polar's manual, *Automatic training detection*), which Polar's SDK reads from
|
||||
the band (`PolarTrainingSessionApi`: a summary with start, duration, sport,
|
||||
calories, distance and ascent, and samples at an interval: heart rate, and speed,
|
||||
distance and cadence where the band had them). Each becomes a sealed, synced
|
||||
workout, its heart rate its series, its origin *Polar Loop* with the band's
|
||||
reference of the session, as Health Connect's imports are (D31), so there is one
|
||||
list and one page, written to Health Connect with the rest (over a model of its own
|
||||
under *Days*). Train gains an activity *Other workout* for what it doesn't know,
|
||||
which the person can change on the workout's page; Polar's running (sport 1),
|
||||
cycling (2) and other outdoor (16, as *Other*) are the IDs the SDK itself names,
|
||||
every other sport comes as *Other* until a band shows its IDs (over leaving out
|
||||
what Train doesn't know, most of the band's sessions). A session overlapping a
|
||||
workout Train recorded for at least half the shorter, whatever the sports, is that
|
||||
workout's double: the recorded one stays and gains the band's heart rate where it
|
||||
has none (over keeping both). Sessions are read with the days, by the open app and
|
||||
the background job, and deleted on the band once sealed by the same rule (D38); one
|
||||
deleted in Train is remembered, so it isn't brought back.
|
||||
|
||||
## Consequences
|
||||
|
||||
- Train's sensors are one pattern: open profiles read by the app itself, on the phone;
|
||||
|
|
|
|||
Loading…
Reference in a new issue