202 lines
3.9 KiB
Markdown
202 lines
3.9 KiB
Markdown
# Roadmap
|
|
|
|
This file describes the current project state and the next implementation
|
|
cursor. Historical checkpoint detail belongs in Git history and `docs/reviews`.
|
|
|
|
## Gate 0 — Project contract
|
|
|
|
```text
|
|
GATE_0=PASS
|
|
```
|
|
|
|
Development rules, ownership boundaries, identity rules, validation discipline,
|
|
and Git workflow are established.
|
|
|
|
## Gate 1 — Trainlog exchange format v1
|
|
|
|
```text
|
|
GATE_1=PASS
|
|
TRAINLOG_FORMAT_V1=FROZEN
|
|
```
|
|
|
|
The published Trainlog JSON v1 compatibility boundary remains unchanged.
|
|
|
|
## Gate 2 — Persistence and usable desktop TUI
|
|
|
|
```text
|
|
GATE_2=PASS
|
|
DESKTOP_SCHEMA_V5=PASS
|
|
FIRST_USABLE_TUI=PASS
|
|
```
|
|
|
|
Completed baseline includes:
|
|
|
|
- SQLite persistence and explicit migrations;
|
|
- direct session entry;
|
|
- session history/detail/editing;
|
|
- exercise catalog;
|
|
- profile-aware set and continuous work;
|
|
- body history/editing/visualization;
|
|
- exercise performance history;
|
|
- strict validation and rollback behavior.
|
|
|
|
## Android local client
|
|
|
|
```text
|
|
ANDROID_LOCAL_WORKFLOWS=PASS
|
|
ANDROID_LOCAL_DATABASE_V3=PASS
|
|
```
|
|
|
|
Completed:
|
|
|
|
- exercise creation;
|
|
- inline exercise creation;
|
|
- profile-aware session entry;
|
|
- heterogeneous repetition sets;
|
|
- continuous activity;
|
|
- session history/detail;
|
|
- body measurements;
|
|
- exercise removal from the current session draft.
|
|
|
|
## Variable set checkpoint
|
|
|
|
```text
|
|
VARIABLE_REPETITION_SETS=PASS
|
|
REPETITION_SHORTHAND_5x10=PASS
|
|
REPETITION_EXPLICIT_LIST=PASS
|
|
REPETITION_PYRAMID=PASS
|
|
|
|
DESKTOP_SCHEMA_V5=PASS
|
|
V4_TO_V5_MIGRATION_REGRESSION=PASS
|
|
MOBILE_HETEROGENEOUS_SET_IMPORT=PASS
|
|
NO_FAKE_UNIFORM_TARGET=PASS
|
|
```
|
|
|
|
## Direct MTP transport
|
|
|
|
```text
|
|
USB_MTP_DETECTION=PASS
|
|
MTP_STORAGE_ACCESS=PASS
|
|
MTP_WRITE=PASS
|
|
MTP_LIST_FOLDER=PASS
|
|
MTP_READ=PASS
|
|
MTP_ROUNDTRIP=PASS
|
|
DIRECT_MTP_TRANSPORT=PASS
|
|
```
|
|
|
|
No mounted-filesystem dependency is required.
|
|
|
|
## Bidirectional synchronization v1
|
|
|
|
```text
|
|
ANDROID_TO_PC_MTP=PASS
|
|
DESKTOP_MOBILE_IMPORT_V1=PASS
|
|
DESKTOP_MOBILE_IMPORT_IDEMPOTENT=PASS
|
|
|
|
PC_CATALOG_EXPORT_V1=PASS
|
|
PC_TO_ANDROID_MTP_PUBLISH=PASS
|
|
|
|
COMMON_SYNC_ENGINE=PASS
|
|
TRAINLOG_SYNCD=PASS
|
|
ANDROID_TRIGGERED_SYNC=PASS
|
|
ANDROID_SYNC_RECEIPT=PASS
|
|
TUI_SYNC_LOG_SHOW=PASS
|
|
|
|
BIDIRECTIONAL_SYNC_V1=PASS
|
|
```
|
|
|
|
Validated architecture:
|
|
|
|
```text
|
|
Android local change
|
|
-> automatic mobile snapshot
|
|
|
|
Android "Synchroniser maintenant"
|
|
-> request
|
|
|
|
trainlog-syncd
|
|
-> shared C sync engine
|
|
-> Android -> PC import
|
|
-> PC -> Android catalog
|
|
-> receipt
|
|
|
|
Android
|
|
-> matching receipt
|
|
-> catalog apply
|
|
-> final result
|
|
```
|
|
|
|
The TUI invokes the same engine manually.
|
|
|
|
## Current quality baseline
|
|
|
|
```text
|
|
DESKTOP_TESTS=19/19 PASS
|
|
ANDROID_BUILD=PASS
|
|
HARDWARE_SYNC_VALIDATION=PASS
|
|
TRAINLOG_FORMAT_V1=FROZEN
|
|
```
|
|
|
|
## Current implementation cursor
|
|
|
|
No next product feature is frozen by this documentation checkpoint.
|
|
|
|
```text
|
|
NEXT_FEATURE=UNFROZEN
|
|
```
|
|
|
|
Candidate future areas may include richer analytics, measured-max semantics,
|
|
additional editing workflows, synchronization hardening, or other product work,
|
|
but none is canonical until explicitly selected.
|
|
|
|
## Permanent constraints
|
|
|
|
Do not regress to:
|
|
|
|
```text
|
|
SQLite file synchronization
|
|
mandatory mounted Android filesystem
|
|
exercise-name identity heuristics
|
|
fake performed sets for continuous activity
|
|
fake uniform targets for heterogeneous actual sets
|
|
incompatible changes to Trainlog JSON v1
|
|
```
|
|
|
|
## Measured max v1
|
|
|
|
```text
|
|
MEASURED_MAX_V1=PASS
|
|
MEASURED_MAX_ONLY_FROM_MAX_TEST=PASS
|
|
MEASURED_MAX_HISTORY=PASS
|
|
MEASURED_MAX_GRAPH=PASS
|
|
WORKING_LOAD_PERCENTAGES=PASS
|
|
ANDROID_MAX_TEST_SESSION=PASS
|
|
DESKTOP_TESTS=20/20 PASS
|
|
```
|
|
|
|
No schema v6 and no Trainlog JSON v1 change were required.
|
|
|
|
The next product feature remains intentionally unfrozen:
|
|
|
|
```text
|
|
NEXT_FEATURE=UNFROZEN
|
|
```
|
|
|
|
## Body analytics v1
|
|
|
|
```text
|
|
BODY_ANALYTICS_V1=PASS
|
|
BODY_ANALYTICS_TUI_ONLY=PASS
|
|
BODY_COMPOSITION_ESTIMATE=PASS
|
|
BODY_PROPORTION_RATIOS=PASS
|
|
BODY_SYMMETRY_ANALYTICS=PASS
|
|
NO_ESTIMATE_PERSISTENCE=PASS
|
|
DESKTOP_TESTS=21/21 PASS
|
|
```
|
|
|
|
No Android feature, database schema migration, or frozen JSON v1 change was
|
|
required.
|
|
|
|
```text
|
|
NEXT_FEATURE=UNFROZEN
|
|
```
|