---
name: gametime-session-execution-timer-refactor
description: memory note gametime-session-execution-timer-refactor
metadata:
  type: project
---
# GameTime — Refonte exécution séance et logique chronos

Décision UX/architecture issue de la demande utilisateur du 2026-07-20.

## Principe d'affichage

L'écran d'exécution de séance doit organiser les informations autour d'une carte `Exercice actif`, placée sous le compteur `SÉRIE X / Y`.

Cette carte regroupe :
- nom de l'exercice ;
- accès médias ;
- `Temps de série` si la mesure temps est active ;
- action primaire `Démarrer l'exercice` quand un chrono doit démarrer au début de la série.

Le temps de série ne doit plus être une information isolée en bas de l'écran.

## Principe de démarrage

`Démarrer l'exercice` est le point de départ global. Il lance tous les chronos qui commencent logiquement au début de la série :
- timer de série si `timeEnabled` ;
- chrono de la première étape si cette première étape est de type temps ;
- chrono score de série si `scoreInputMode == stopwatch`.

L'objectif est de minimiser les actions pendant l'effort, notamment quand l'utilisateur n'a pas le téléphone près de lui.

## États et invariants

- Le timer de série est un état persistant dédié, pas un simple `DateTime` UI volatile.
- Pause séance suspend tous les chronos running : série, score chrono, étape, score chrono étape si présent, repos.
- Reprise restaure l'état exact ; un état `Chrono suivant prêt` reste prêt et ne démarre pas automatiquement.
- `Terminer la série` arrête/enregistre les chronos actifs.
- `Passer la série` ignore les chronos et confirme si un chrono ou une séquence est en cours.
- Le repos démarre seulement après terminer/passer la série et doit être pause-aware (`pausedAt` + `accumulatedPausedMs`).

## Implémentation locale

Une implémentation a été réalisée sans commit : domaine/application/persistance, écran Flutter et tests ciblés. QA a validé les vérifications exécutables dans le sandbox (`git diff --check`, `dart analyze` exit 0). Les commandes `flutter analyze` et `flutter test` restent à relancer dans un environnement où le SDK Flutter peut écrire dans son cache.