---
issueRef: "#3"
version: 5
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
updatedAt: 1784305026425
---
Référence : mémoire "gametime-architecture-initial-stack-data-model" pour le détail des entités (Exercise, MediaAsset, Program, ProgramExercise, WorkoutTemplate, WorkoutTemplateProgram, WorkoutTemplateExerciseOverride, ActiveWorkoutSession, ActiveSetResult, ActiveRestState, WorkoutHistory, WorkoutHistorySetResult, change_log).
Points de friction actés par Architect à respecter dans le schéma :
- Repos matérialisé comme événements concrets à l'exécution, pas comme simple règle statique.
- Exercice jamais supprimé en dur (archivedAt), copies lisibles conservées dans programmes/historique.
- Score = valeur numérique décimale + label/unité textuels snapshotés séparément de l'exercice source.
- IDs stables générés localement (UUIDv7/ULID), pas d'auto-increment comme identifiant métier.
- WorkoutTemplateExerciseOverride ne porte QUE setsCountOverride et les valeurs cibles numériques (targetTimeSecondsOverride, targetRepsOverride, targetScoreOverride) — pas de champ pour changer les mesures activées.