docs: record sleep persistence and agenda evidence
This commit is contained in:
parent
a60e1aa056
commit
4cb911d5c4
4 changed files with 50 additions and 15 deletions
14
CHANGELOG.md
14
CHANGELOG.md
|
|
@ -45,6 +45,20 @@ also refined.
|
|||
`trainlog.perf` deployment and read-only Firefox smoke validate the latest
|
||||
real HR night and the latest real night containing medications from code
|
||||
commit `2ce458d`.
|
||||
- Reused that same read-only fallback projection in the multi-night Sleep
|
||||
agenda, with a visibly estimated hatched interval and no Sleep write. The
|
||||
agenda now derives an exact 18:00-to-18:00 hourly grid, presents at least
|
||||
two-hour labels on ordinary desktop widths, expands to every hour when wide,
|
||||
and reduces to six-hour anchors on narrow screens. A read-only real-device
|
||||
investigation of the 2026-09-23 night found no medication intake in any
|
||||
retained local revision and established that later synchronization only
|
||||
published the already-empty current revision. Android regression coverage
|
||||
now proves two pre-bed intakes, including quantity two, through repeated
|
||||
repository reopen, bedtime, wake, final get-up, generation, desktop ACK,
|
||||
replay, stale-ancestor input and a subsequent revision. The private service
|
||||
serves Web code commit `a60e1aa`; a non-mutating Firefox smoke on the real
|
||||
night confirms the identical 22:50–04:04 agenda/detail projection and the
|
||||
responsive 13/25/5-label axis densities.
|
||||
|
||||
## 0.1.5 — 2026-09-23
|
||||
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@ parallel implementation of its rules.
|
|||
| Sleep tonight readiness delta | `TRAINLOG_SLEEP_TONIGHT_CLOSEOUT_V1=PASS`: Meson 111/111, import checks 6/6, Android `testDebugUnitTest` plus `assembleDebug`, Web 191/191 plus typecheck/build, exact V2 quantity replay, private vc47 schema-v32 migration, fresh CYCPLUS BPM and non-mutating Android/Web visual review. |
|
||||
| 0.1.5 validation | `TRAINLOG_0_1_5_VALIDATION_V1=PASS`: native 111/111; Android unit-test task and APK build; Web 191/191 plus typecheck/build; JSON/import, C-format and diff checks pass. Private vc47 preserves real data through schema v32, renders pre-bed medication quantity controls, reconnects the CYCPLUS and presents the multi-night Web Sleep agenda. |
|
||||
| Tomorrow session readiness | `TRAINLOG_TOMORROW_SESSION_CARDIO_READINESS_V1=PASS`: the private vc46 is clean on schema v31 with fresh CYCPLUS BPM and the next Program session is unambiguous; one combined regression proves two ordered occurrences loaded from the synchronized Program, Program provenance, factual timeline/HR ownership, finalization, full generation, desktop import, replay and correlated ACK |
|
||||
| Current operational cursor | 0.1.6 Sleep graph overlays and post-review Web corrections implemented, fully validated, and served by the private `trainlog.perf` service from development code commit `2ce458d`; immutable stable v0.1.5 remains unchanged. |
|
||||
| Current operational cursor | 0.1.6 Sleep graph overlays, shared agenda estimate and denser responsive agenda axis validated and privately served from Web code commit `a60e1aa`; immutable stable v0.1.5 remains unchanged. |
|
||||
| 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` |
|
||||
|
|
@ -195,8 +195,11 @@ full-hour ticks between exact visible bounds. Medication presentation retains
|
|||
unit dose and quantity as separate facts. A missing declared sleep interval
|
||||
uses only a labeled, non-medical Web estimate from Couché plus 45 minutes to
|
||||
Levé minus 10 minutes when both bounds exist; it never changes canonical Sleep
|
||||
data. The overlays remain available without an HR capture and do not fabricate
|
||||
BPM.
|
||||
data. The selected-night graph and the period agenda consume the same
|
||||
projection. The agenda renders an estimated interval with distinct hatching,
|
||||
never substitutes it for a factual interval, and retains the exact shared
|
||||
18:00-to-18:00 geometry. The overlays remain available without an HR capture
|
||||
and do not fabricate BPM.
|
||||
|
||||
Language is device-local presentation state. Android keeps it in dedicated
|
||||
SharedPreferences; desktop keeps it in the XDG configuration file
|
||||
|
|
@ -341,9 +344,12 @@ cluster. Program progress uses the shared success color while retaining its
|
|||
factual completed/total text. Responsive charts preserve their viewBox aspect
|
||||
ratio, and Analyse explicitly distinguishes unavailable exercise timing from
|
||||
partial measured coverage instead of deriving time from sets or repetitions.
|
||||
The shared Sleep agenda owns one label/track/facts grid. Its five clock labels
|
||||
and every event, interval and medication marker use the same coordinates:
|
||||
18:00 at 0%, 00:00 at 25%, 06:00 at 50%, 12:00 at 75%, and 18:00 at 100%.
|
||||
The shared Sleep agenda owns one label/track/facts grid. Its 25 exact hourly
|
||||
positions and every event, interval and medication marker use the same
|
||||
coordinates: 18:00 at 0%, 00:00 at 25%, 06:00 at 50%, 12:00 at 75%, and 18:00
|
||||
at 100%. Ordinary desktop widths show the 13 two-hour labels, wide layouts show
|
||||
all hours, and narrow layouts retain the five six-hour anchors without changing
|
||||
the underlying geometry.
|
||||
|
||||
The Equipment route projects supplied and custom definitions with exercise,
|
||||
history, preparation and Program reference counts. Its guarded merge accepts a
|
||||
|
|
|
|||
|
|
@ -65,11 +65,14 @@ synchronization transport.
|
|||
|
||||
The 0.1.6 Web refinement now also layers factual Sleep intervals, awakenings,
|
||||
medication intakes and complete hourly ticks on the selected night's HR chart.
|
||||
Its explicitly labeled fallback estimate is presentation-only; release work
|
||||
remains the next separate operational step.
|
||||
Its explicitly labeled fallback estimate is presentation-only and is shared by
|
||||
the period agenda, whose responsive labels retain an exact hourly
|
||||
18:00-to-18:00 geometry. Android lifecycle/ACK regressions now explicitly guard
|
||||
pre-bed medication snapshots against restart, replay and stale ancestry.
|
||||
Release work remains the next separate operational step.
|
||||
|
||||
```text
|
||||
CURRENT_OPERATIONAL_CURSOR=0.1.6 Sleep graph overlays and post-review Web corrections validated and privately deployed; stable release work remains separate.
|
||||
CURRENT_OPERATIONAL_CURSOR=0.1.6 Sleep graph/agenda projection and Android medication persistence proof validated and privately deployed; stable release work remains separate.
|
||||
```
|
||||
|
||||
Sleep Diary V1 stays frozen/readable while active capable peers require
|
||||
|
|
|
|||
|
|
@ -25,27 +25,39 @@ still conflicts. The equipment client test removes `crypto.randomUUID`, uses
|
|||
deterministic `getRandomValues` bytes, and completes the protected merge HTTP
|
||||
request; native merge tests retain their transaction/rollback coverage.
|
||||
|
||||
The real Sleep Bluetooth recovery regression starts with no Android session,
|
||||
records a pre-bed medication with `quantity=2`, Couché, two BPM/RR samples
|
||||
The real Sleep Bluetooth recovery regression starts with no Android session
|
||||
and an empty pending Sleep revision, records two pre-bed medication intakes
|
||||
(including `quantity=2`), reopens the repository after each meaningful
|
||||
lifecycle transition, then records Couché, two BPM/RR samples
|
||||
separated by Réveil, and Levé. It captures and publishes the production V2
|
||||
Sleep and V1 heart-rate artifacts, imports them with the desktop consumer,
|
||||
accepts and replays the ACK without duplication, then admits a second
|
||||
Sleep-only revision. Separate tests prove connection-arrival auto-request
|
||||
Sleep-only revision. It also applies the original intake-free ancestor after
|
||||
ACK and proves that causal reconciliation cannot erase the current intakes.
|
||||
Separate tests prove connection-arrival auto-request
|
||||
policy with its cooldown, cross-run reuse of an unacknowledged immutable
|
||||
generation and recognition of its original-run exact generation/digest ACK,
|
||||
ledger-backed superseded-branch capacity, fresh-peer non-root Sleep ancestry,
|
||||
service-installer upgrade behavior, and ACK-recovery progress frames over the
|
||||
Bluetooth-selected orchestrator path.
|
||||
|
||||
UI regressions assert the Sleep labels at exactly 0/25/50/75/100%, persisted
|
||||
UI regressions assert the Sleep agenda's 25 exact hourly positions, 13 visible
|
||||
two-hour desktop labels and five narrow six-hour anchors, including the exact
|
||||
0/25/50/75/100% coordinates. They also prove that both Sleep views reuse the
|
||||
same presentation-only Couché +45 minutes to Levé -10 minutes estimate, that a
|
||||
factual sleep interval wins, and that a missing bound produces no estimate.
|
||||
Other UI regressions cover persisted
|
||||
Dashboard sizing and reset behavior, English preference persistence across a
|
||||
remount, centralized Dashboard English labels, non-stretched chart aspect
|
||||
ratios, and distinct missing/partial exercise-timing messages.
|
||||
The closeout run passes Web **31 files / 196 tests**, TypeScript typecheck and
|
||||
The closeout run passes Web **32 files / 205 tests**, TypeScript typecheck and
|
||||
the production build; native Meson **111/111**; Android `testDebugUnitTest` and
|
||||
`assembleDebug`; JSON/import validators; changed-C formatting; and diff checks.
|
||||
The restarted private service serves the rebuilt executable byte-for-byte from
|
||||
the development checkout and reports healthy Trainlog `0.1.6`.
|
||||
the development checkout and reports healthy Trainlog `0.1.6`. A non-mutating
|
||||
Firefox smoke on the real 2026-09-23 night confirms the agenda and detail both
|
||||
show 22:50–04:04 as estimated, with 13 ordinary-desktop labels, 25 wide labels
|
||||
and five narrow anchors.
|
||||
|
||||
Sleep Diary coverage includes schema creation/migration, midnight and DST
|
||||
offsets, revision conflict, logical deletion/reopen, companion replay and
|
||||
|
|
|
|||
Loading…
Reference in a new issue