--- 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.