docs(train): what Train keeps is deleted on the band (ADR 0030, D38)

Polar's sync guideline asks apps to remove what they synced, so D38
revises D37's third point: once the app has sealed a day (yesterday or
earlier), the next read deletes it on the band type by type; the
background job deletes only what the app confirmed kept; today never.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-10-28 19:52:57 +01:00
commit 24de3c0a4e
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -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–D37 below). The shell (D12)
- **Status:** decided 27–28 Oct 2026, by the developer (D1–D38 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) is built, its
daily data (7b, D37) is being built.
daily data (7b, D37, D38) is 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.
@ -650,6 +650,23 @@ Strava. What was found, 27 Oct:
(`PHYSDATA.BPB`) without a new user identifier, to be weighed once a real band shows
what a new identifier does.
- **D38 What the band holds is deleted once Train keeps it** (recommended, the
developer's; 28 Oct; revises D37's third point, over deleting a day once it is in the
phone's file, and over never deleting): Polar's own sync guideline (the SDK's
`documentation/SyncImplementationGuideline.md`, 8.3.0) asks apps to remove what they
synced, as soon as possible, to free the device's memory and not lose data, sensors
such as the Polar 360 holding less than watches; D37 had assumed the band's memory
rolls over by itself. So once the app has sealed a day (yesterday or earlier) into
the person's database, the next read deletes it on the band, type by type (activity,
daily summary, 24/7 samples, sleep and its score, Nightly Recharge, skin temperature
and skin contact); the background job reads into the file alone and deletes only
what the app confirmed kept; today is never deleted. Each read is framed by the
SDK's sync start and stop calls, its calls to the band one after the other, as the
guideline asks. The VO2max defaults of 7a are Polar's table too: the SDK's
`documentation/FirstTimeUse.md` gives the same tables, without saying which class
to take.
## Consequences
- Train's sensors are one pattern: open profiles read by the app itself, on the phone;