docs: document 0.1.4 analysis foundation
This commit is contained in:
parent
2bd68100e9
commit
109eb6fcd4
6 changed files with 57 additions and 13 deletions
10
CHANGELOG.md
10
CHANGELOG.md
|
|
@ -4,6 +4,16 @@
|
||||||
|
|
||||||
Development opened after stable v0.1.3 release.
|
Development opened after stable v0.1.3 release.
|
||||||
|
|
||||||
|
- Implemented the loopback-only Web Analyse V1 workspace and shared bounded
|
||||||
|
Core read model. The 7/30/90-day and all-history filters, factual activity,
|
||||||
|
active-Program progress, compatible exercise metrics, explicit persisted
|
||||||
|
MAX results, primary BODY ZONE exposures, and fourteen body measurements are
|
||||||
|
calculated by the C17 backend. Dashboard summaries consume the same model
|
||||||
|
while preserving all existing tile identities and layout behavior. Deep
|
||||||
|
links, safe query fallbacks, null/empty states, French/English presentation,
|
||||||
|
keyboard focus, and responsive charts are covered without estimating 1RM,
|
||||||
|
readiness, fatigue, recovery, body fat, or performance.
|
||||||
|
|
||||||
## 0.1.3 — 2026-09-20
|
## 0.1.3 — 2026-09-20
|
||||||
|
|
||||||
- Decoupled the Android full-generation request from the strict legacy V3
|
- Decoupled the Android full-generation request from the strict legacy V3
|
||||||
|
|
|
||||||
|
|
@ -350,7 +350,8 @@ As of 2026-09-18:
|
||||||
`WEB_DASHBOARD_V1=PASS/FROZEN` and `TRAINLOG_WEB_SESSIONS_V1=PASS/FROZEN`;
|
`WEB_DASHBOARD_V1=PASS/FROZEN` and `TRAINLOG_WEB_SESSIONS_V1=PASS/FROZEN`;
|
||||||
`/programmes` is an operational active-Program calendar, while
|
`/programmes` is an operational active-Program calendar, while
|
||||||
Sessions → Programmes remains the administration surface;
|
Sessions → Programmes remains the administration surface;
|
||||||
`TRAINLOG_WEB_EXERCISES_V1=PASS`; Analyse remains a placeholder;
|
`TRAINLOG_WEB_EXERCISES_V1=PASS`; `/analyse` now provides the 0.1.4 factual
|
||||||
|
Dashboard/Analyse read-model foundation pending visual review;
|
||||||
- `TRAINLOG_PROGRAMS_PRESENTATION_ANDROID_DELETE_V1=PASS`: the coordinated
|
- `TRAINLOG_PROGRAMS_PRESENTATION_ANDROID_DELETE_V1=PASS`: the coordinated
|
||||||
private desktop/Android deployment, real Firefox presentation, correlated
|
private desktop/Android deployment, real Firefox presentation, correlated
|
||||||
`programs-v1` deletion ACK, restart/replay, and non-resurrection checks pass;
|
`programs-v1` deletion ACK, restart/replay, and non-resurrection checks pass;
|
||||||
|
|
|
||||||
|
|
@ -61,6 +61,14 @@ long-term history. Core owns data, persistence, business logic, calculations,
|
||||||
read models, command services, and versioned contracts. An interface must not
|
read models, command services, and versioned contracts. An interface must not
|
||||||
query tables directly to reconstruct its own business rules.
|
query tables directly to reconstruct its own business rules.
|
||||||
|
|
||||||
|
The Web Dashboard and Analyse workspace share `GET /api/v1/analysis`, backed by
|
||||||
|
one C17 read model. Period filtering, active-Program progress, compatible
|
||||||
|
exercise metrics, explicit MAX results, primary BODY ZONE exposures, and body
|
||||||
|
measurement first/last/delta calculations occur in Core. React validates the
|
||||||
|
bounded response and presents it; it does not load raw history or issue SQL.
|
||||||
|
Absent values remain null, and the model never estimates physiological or
|
||||||
|
performance scores.
|
||||||
|
|
||||||
Android local SQLite is a capture store, not a synchronization format.
|
Android local SQLite is a capture store, not a synchronization format.
|
||||||
|
|
||||||
## 2. Components
|
## 2. Components
|
||||||
|
|
|
||||||
|
|
@ -141,7 +141,7 @@ parallel implementation of its rules.
|
||||||
| Private full-generation rollout | `TRAINLOG_SYNC_FINALIZATION_AND_ROLLOUT_V1=PASS` (direct MTP, one authorized phone) |
|
| Private full-generation rollout | `TRAINLOG_SYNC_FINALIZATION_AND_ROLLOUT_V1=PASS` (direct MTP, one authorized phone) |
|
||||||
| Local Web | `TRAINLOG_WEB_V1=CONTRACT_FROZEN / IMPLEMENTATION_STARTED` |
|
| Local Web | `TRAINLOG_WEB_V1=CONTRACT_FROZEN / IMPLEMENTATION_STARTED` |
|
||||||
| Web Exercises V1 | `TRAINLOG_WEB_EXERCISES_V1=PASS` |
|
| Web Exercises V1 | `TRAINLOG_WEB_EXERCISES_V1=PASS` |
|
||||||
| Current operational cursor | `TRAINLOG_WEB_ANALYSIS_V1` |
|
| Current operational cursor | `TRAINLOG_WEB_ANALYSIS_V1` (implemented, visual review pending) |
|
||||||
| Complete synchronization gap contract | Frozen dependency contract; operational USB/Drive slices required by v0.1.2 are delivered |
|
| 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` |
|
| Isolated synchronization test environment | `TRAINLOG_SYNC_TEST_ENV_V1=PASS/FROZEN` |
|
||||||
| Synchronization characterization | `TRAINLOG_SYNC_CHARACTERIZATION_V1=PASS/FROZEN` |
|
| Synchronization characterization | `TRAINLOG_SYNC_CHARACTERIZATION_V1=PASS/FROZEN` |
|
||||||
|
|
@ -291,7 +291,24 @@ explicit proposal derivation and generation-backed Android delivery. The
|
||||||
top-level `/programmes` route is an operational daily active-Program calendar;
|
top-level `/programmes` route is an operational daily active-Program calendar;
|
||||||
Sessions → Programmes remains the technical administration/import, list,
|
Sessions → Programmes remains the technical administration/import, list,
|
||||||
detail, archive, and delete surface. `/exercices` is the operational desktop
|
detail, archive, and delete surface. `/exercices` is the operational desktop
|
||||||
catalogue administration surface; Analyse remains an explicit placeholder.
|
catalogue administration surface. `/analyse` is implemented with Overview,
|
||||||
|
Exercises, Distribution, and Measurements sections over one bounded Core read
|
||||||
|
model. Its global 7/30/90-day/all filter is applied in the backend; Dashboard
|
||||||
|
uses the same 30-day calculations for activity, active-Program progress,
|
||||||
|
exercise progression, measurements, and BODY ZONE links.
|
||||||
|
|
||||||
|
The Analyse API validates period, exercise identity, measurement metric and
|
||||||
|
page, rejects unknown or duplicate parameters, and bounds exercises and chart
|
||||||
|
points. Missing facts remain null. Exercise output respects persisted
|
||||||
|
tracking/load modes, explicit MAX rows are never estimated, and duration,
|
||||||
|
distance, speed, external load, and external volume appear only when their
|
||||||
|
source observations support them. BODY ZONES are labelled as recorded primary
|
||||||
|
zone exposures/associated sets rather than physiological percentages. All
|
||||||
|
fourteen stored body metrics expose period-first, period-last, and an absolute
|
||||||
|
delta only with at least two points. The route and Dashboard deep links have
|
||||||
|
safe invalid-query fallbacks, French/English labels, keyboard controls, and
|
||||||
|
responsive no-overflow layouts. Visual inspection remains pending before any
|
||||||
|
freeze marker.
|
||||||
|
|
||||||
Exercises uses bounded Core-owned list/detail reads, canonical name
|
Exercises uses bounded Core-owned list/detail reads, canonical name
|
||||||
normalization, BODY ZONES taxonomy, profiled creation/update commands and
|
normalization, BODY ZONES taxonomy, profiled creation/update commands and
|
||||||
|
|
@ -587,9 +604,8 @@ tests, Android debug assembly, and 211 Android tests (207 passed, four optional
|
||||||
historical-fixture skips). Strict desktop builds use Clang 22.1.8; the compared
|
historical-fixture skips). Strict desktop builds use Clang 22.1.8; the compared
|
||||||
pre-existing GCC 16.2.1 Web warning gate remains documented rather than green.
|
pre-existing GCC 16.2.1 Web warning gate remains documented rather than green.
|
||||||
|
|
||||||
- `TRAINLOG_WEB_EXERCISES_V1=PASS`. The next planned work is
|
- `TRAINLOG_WEB_EXERCISES_V1=PASS`. `TRAINLOG_WEB_ANALYSIS_V1` is implemented
|
||||||
`TRAINLOG_ANDROID_UI_REDESIGN_V1`; it remains unimplemented. Analyse remains
|
on the 0.1.4 branch and awaits the requested Dashboard/Analyse visual review.
|
||||||
a placeholder and is not a v0.1.3 priority.
|
|
||||||
- `APP_SHELL_V1` retains a recorded legacy visual/accessibility review gate; its
|
- `APP_SHELL_V1` retains a recorded legacy visual/accessibility review gate; its
|
||||||
observations are inputs to, not decisions for, the new 0.1.3 Android contract.
|
observations are inputs to, not decisions for, the new 0.1.3 Android contract.
|
||||||
- Session Generator V1 is hidden while V2 planning semantics are developed.
|
- Session Generator V1 is hidden while V2 planning semantics are developed.
|
||||||
|
|
|
||||||
|
|
@ -43,9 +43,9 @@ tile rendering exist. The Dashboard's bounded progression and BODY ZONES
|
||||||
visualizations and Sessions V1 are implemented. The top-level `/programmes`
|
visualizations and Sessions V1 are implemented. The top-level `/programmes`
|
||||||
route is an operational daily active-Program calendar, while
|
route is an operational daily active-Program calendar, while
|
||||||
Sessions → Programmes remains the technical administration/import, list,
|
Sessions → Programmes remains the technical administration/import, list,
|
||||||
detail, archive, and delete surface. Web Exercises V1 is implemented; Analyse
|
detail, archive, and delete surface. Web Exercises V1 is implemented. The
|
||||||
remains a placeholder outside this cycle unless a later explicit decision
|
0.1.4 `TRAINLOG_WEB_ANALYSIS_V1` branch now owns the factual Dashboard/Analyse
|
||||||
changes that order.
|
read-model foundation and stops before merge for visual inspection.
|
||||||
The corrective prepared-item projection, bounded phase-owned MTP outbox,
|
The corrective prepared-item projection, bounded phase-owned MTP outbox,
|
||||||
Sessions presentation correction, local date preference and durable preparation
|
Sessions presentation correction, local date preference and durable preparation
|
||||||
withdrawal are implemented. The withdrawal uses the separate versioned
|
withdrawal are implemented. The withdrawal uses the separate versioned
|
||||||
|
|
@ -54,12 +54,12 @@ mobile snapshot or `TRAINLOG_FORMAT_V1` contracts.
|
||||||
|
|
||||||
## Current cursor
|
## Current cursor
|
||||||
|
|
||||||
The v0.1.3 development cursor proceeds from the closed stable v0.1.2 baseline
|
The v0.1.4 cursor proceeds from stable v0.1.3 and its validated Web, Program
|
||||||
and its validated Web, Program execution, USB/Drive generation, ACK, and
|
execution, USB/Drive generation, ACK, and causal-deletion contracts without
|
||||||
causal-deletion contracts without reopening those completed gates.
|
reopening those completed gates.
|
||||||
|
|
||||||
```text
|
```text
|
||||||
CURRENT_OPERATIONAL_CURSOR=TRAINLOG_ANDROID_UI_REDESIGN_V1_CONTRACT
|
CURRENT_OPERATIONAL_CURSOR=TRAINLOG_WEB_ANALYSIS_V1
|
||||||
```
|
```
|
||||||
|
|
||||||
The focused `TRAINLOG_SYNC_CAUSAL_DELETE_V1_CLOSEOUT` is complete before this
|
The focused `TRAINLOG_SYNC_CAUSAL_DELETE_V1_CLOSEOUT` is complete before this
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,14 @@
|
||||||
# Tests and validation
|
# Tests and validation
|
||||||
|
|
||||||
|
`web_analysis` covers empty history, every 7/30/90/all period selector,
|
||||||
|
loaded and unloaded repetitions, continuous duration/distance/speed, explicit
|
||||||
|
persisted MAX, multiple primary BODY ZONES, partial measurements, one- and
|
||||||
|
multiple-point measurement semantics, and active-Program projection. The HTTP
|
||||||
|
suite exercises the real bounded endpoint plus invalid and duplicate query
|
||||||
|
parameters. Vitest validates the typed parser, null preservation, route and
|
||||||
|
section changes, period/exercise/metric selection, invalid deep-link fallback,
|
||||||
|
critical French/English labels, and Dashboard layout regressions.
|
||||||
|
|
||||||
`test_sync_drive_transport` proves Drive artifact-before-manifest and
|
`test_sync_drive_transport` proves Drive artifact-before-manifest and
|
||||||
manifest-before-reference publication, rejects unsafe/AI namespaces, and keeps
|
manifest-before-reference publication, rejects unsafe/AI namespaces, and keeps
|
||||||
a partial generation invisible. Orchestrator coverage proves that Drive mirror
|
a partial generation invisible. Orchestrator coverage proves that Drive mirror
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue