docs(release): record 0.1.5 validation

This commit is contained in:
fy59 2026-09-23 15:58:09 +02:00
parent 246e47ee8f
commit 8f8b361915
4 changed files with 36 additions and 3 deletions

View file

@ -36,7 +36,7 @@ Programs. Sessions → Programmes remains the technical administration/import,
list, detail, archive, and delete surface.
Web Exercises administration, the factual Dashboard/Analyse read model, and the
synchronized Sleep Diary workspace are the stable v0.1.4 baseline. Version
0.1.5 development now has validated persistent CYCPLUS acquisition, the global `♥ BPM` indicator, training exercise timestamps, one-tap Android Sleep capture, dedicated synchronized `cardio` sessions, versioned measured Cardio calibration, fresh-signal BPM-guided phases and factual Web heart-rate timelines in History/Sleep; complete 0.1.5 validation is the current implementation cursor.
0.1.5 development now has validated persistent CYCPLUS acquisition, the global `♥ BPM` indicator, training exercise timestamps, one-tap Android Sleep capture, dedicated synchronized `cardio` sessions, versioned measured Cardio calibration, fresh-signal BPM-guided phases and factual Web heart-rate timelines in History/Sleep; software validation is complete; private-device visual review is the current implementation cursor.
## Releases

View file

@ -156,7 +156,8 @@ parallel implementation of its rules.
| Cardio calibration | `TRAINLOG_CARDIO_CALIBRATION_V1=PASS`: reserved system Calibration cardio exercise, real measured observed peak, ≥3 min recovery with bounded +1/+2/+3 min factual samples, immutable profile and Android→desktop calibration companion |
| Cardio BPM guidance | `TRAINLOG_CARDIO_BPM_GUIDANCE_V1=PASS`: absolute/calibration-derived immutable BPM targets, 2 BPM hysteresis, 3 s confirmation, stale-signal suspension, durable phase/condition history, Android live guidance UI and strict Android→desktop `trainlog-cardio-guidance` V1 sync |
| Cardio Web visualization | `TRAINLOG_CARDIO_WEB_VISUALIZATION_V1=PASS`: one bounded factual heart-rate timeline read model/HTTP endpoint powers Web History and Sleep with raw BPM/RR, real session/exercise/Sleep markers, guided targets/instructions and calibration facts; no sleep-stage or medical inference |
| Current operational cursor | `TRAINLOG_0_1_5_VALIDATION_V1`: complete Android/native/Web regression, migration, package, sync/replay and private-device smoke validation before any stable release decision |
| 0.1.5 validation | `TRAINLOG_0_1_5_VALIDATION_V1=SOFTWARE_PASS / DEVICE_VISUAL_PENDING`: complete native 111/111, Android 300 tests (295 pass + 5 historical skips), Web 183/183 + typecheck/build, vc43 in-place private update with schema v31/integrity/data preservation and live CYCPLUS 94–95 BPM foreground capture validated while locked |
| Current operational cursor | `TRAINLOG_0_1_5_DEVICE_VISUAL_REVIEW_V1`: unlock the private phone and visually smoke-test the Android Sommeil, Calibration cardio and active guided-cardio presentation before any stable release decision |
| Complete synchronization gap contract | Frozen dependency contract; operational USB/Drive slices required by v0.1.2 are delivered |
| Isolated synchronization test environment | `TRAINLOG_SYNC_TEST_ENV_V1=PASS/FROZEN` |
| Synchronization characterization | `TRAINLOG_SYNC_CHARACTERIZATION_V1=PASS/FROZEN` |

View file

@ -69,7 +69,7 @@ sensor. Heart-rate ingestion must not reuse or overload the frozen Trainlog
Bluetooth synchronization transport contract.
```text
CURRENT_OPERATIONAL_CURSOR=TRAINLOG_0_1_5_VALIDATION_V1
CURRENT_OPERATIONAL_CURSOR=TRAINLOG_0_1_5_DEVICE_VISUAL_REVIEW_V1
```
The focused `TRAINLOG_SYNC_CAUSAL_DELETE_V1_CLOSEOUT` is complete before this

View file

@ -1862,3 +1862,35 @@ test covers valid empty GET, bad context rejection and GET-only semantics. The
2026-09-23 closeout passes the complete native inventory **111/111** and the
complete Web inventory **29 files / 183 tests**; Web typecheck and production
build also succeed.
## Trainlog 0.1.5 complete validation
`TRAINLOG_0_1_5_VALIDATION_V1=SOFTWARE_PASS / DEVICE_VISUAL_PENDING` closes the
complete software regression after Cardio Web visualization. The native Meson
inventory passes **111/111**. Android reports **300 JVM tests: 295 passed, five
historical/external skips, zero failures/errors**, and `assembleDebug`
succeeds. Web passes **29 files / 183 tests**, TypeScript typecheck and the
production Vite build.
The authorized SM_G990B was backed up before the final private candidate. The
pre-update `trainlog-android.db` was copied while the app was force-stopped and
verified at 1,892,352 bytes. Private Trainlog 0.1.5 advanced in place from
versionCode 42 to versionCode 43 using the exact same Android debug signing
certificate; `adb install -r` succeeded without uninstall or data clear.
Before and after vc43, the Android store remained schema v31 with identical
high-level business counts: 12 completed sessions, 45 catalogue exercises and
2 Sleep Diary entries. The four cardio-guidance tables are present after the
update, `PRAGMA integrity_check` returns `ok`, and
`PRAGMA foreign_key_check` returns no row.
The locked-device background smoke test confirms both Trainlog foreground
services remain alive. `HeartRateSensorService` continued receiving the real
CYCPLUS H2 and exposed 94 then 95 BPM through its foreground notification while
the phone was dozing, proving the final candidate still acquires live heart
rate without requiring the activity to remain visible.
The phone was locked during the final UI probe, so the visual smoke test of
Sommeil, Calibration cardio and active guided-cardio presentation remains
`DEVICE_VISUAL_PENDING`. No stable `v0.1.5` tag or release is authorized by
this closeout.