trainlog/docs/roadmap.md
2026-09-06 20:18:31 +02:00

3.9 KiB

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

GATE_0=PASS

Development rules, ownership boundaries, identity rules, validation discipline, and Git workflow are established.

Gate 1 — Trainlog exchange format v1

GATE_1=PASS
TRAINLOG_FORMAT_V1=FROZEN

The published Trainlog JSON v1 compatibility boundary remains unchanged.

Gate 2 — Persistence and usable desktop TUI

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

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

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

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

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:

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

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.

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:

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

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:

NEXT_FEATURE=UNFROZEN

Body analytics v1

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.

NEXT_FEATURE=UNFROZEN