trainlog/docs/roadmap.md

143 lines
2.5 KiB
Markdown

# Roadmap
## Gate 0 — Project contract
Status: PASS
Canonical result:
```text
GATE_0=PASS
GATE_0_REVIEW_01=PASS
```
Reviewed hardening commit:
```text
bc54d6b4ce10d098916823b6a79f72b39d9c7703
```
Gate 0 closure commit:
```text
ebd4316ed68c58598a471e567edf13455d00f92b
```
## Gate 1 — Exchange format v1 freeze
Status: VALIDATION PENDING — REVIEW #2
Canonical state:
```text
GATE_1_REVIEW_01=IMPLEMENTED
GATE_1_REVIEW_02=IMPLEMENTED
GATE_1=VALIDATION_PENDING
TRAINLOG_FORMAT_V1=DRAFT
```
Review #1 defined:
- exercise identity and tracking mode;
- session identity and ordering;
- load semantics;
- target versus actual work;
- rest;
- body weight and measurements;
- notes;
- strict document validation.
Review #2 closes:
- official UUIDv4 identifier generation;
- Android/TUI catalog collision handling;
- hard tracking-mode identity conflicts;
- different-ID/same-name anti-duplicate conflicts;
- atomic catalog reconciliation.
Exit criteria:
- `python tools/validate_json.py` passes;
- `python tools/validate_import_contract.py` passes;
- `git diff --check` passes;
- Android documentation aligned;
- TUI documentation aligned;
- both review commits pushed to Forgejo and GitHub;
- mirrored review passes;
- closure sets `TRAINLOG_FORMAT_V1=FROZEN`.
## Gate 2 — TUI persistence core
Deliverables:
- Meson C17 project;
- SQLite open/create;
- schema versioning;
- UUIDv4 identity generation;
- exercise catalog;
- atomic catalog reconciliation;
- session import transaction;
- idempotent import tests.
Exit criteria:
- database tests pass;
- sanitizer validation passes.
## Gate 3 — Minimal TUI
Deliverables:
- ncursesw initialization;
- centralized color theme module;
- dashboard shell;
- exercise list;
- session history;
- direct session entry;
- import screen;
- minimum-terminal fallback.
Exit criteria:
- usable color TUI;
- monochrome fallback;
- UTF-8 test pass.
## Gate 4 — Android recorder
Deliverables:
- local exercise catalog;
- UUIDv4 identity generation;
- start/stop session timestamps;
- target entry;
- actual-set entry;
- rest entry;
- body data;
- JSON export.
Exit criteria:
- exported fixture validates against frozen v1;
- exported file imports successfully into the TUI.
## Gate 5 — Analytics
Deliverables:
- body-weight trend;
- measurement trend;
- exercise performance trend;
- training volume summaries;
- terminal graphs.
## Gate 6 — Hardening
Deliverables:
- broader fixture coverage;
- migrations;
- import/export robustness;
- documentation cleanup;
- packaging;
- first tagged release.