chore(wip): consolidation intermédiaire multi-tickets (sprints Statistiques, UI, Bug resolution, Serveur-client)
Regroupe l'état de travail en cours réalisé dans un même worktree sur plusieurs tickets/sprints (#85, #136, #145, #155-160, #162-164), mélangeant des tickets QA et inProgress. Ne constitue pas une feature terminée : commit de sauvegarde avant triage/split par ticket en branches feature/* dédiées. Exclut les dossiers d'environnement de build locaux et le heap dump parasite (.gitignore mis à jour). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
29
.ideai/tickets/100/carnet.md
Normal file
29
.ideai/tickets/100/carnet.md
Normal file
@ -0,0 +1,29 @@
|
||||
---
|
||||
issueRef: "#100"
|
||||
version: 3
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedAt: 1785002671405
|
||||
---
|
||||
## Rapport de validation #91-G — 2026-07-25 (Main, QA-channel instable)
|
||||
|
||||
### Validé en sandbox (VERT)
|
||||
- Contrat A : 8 `dart test` OK.
|
||||
- Projection B (12 tests), command handler C (11), adapter D (6) : `flutter test` all passed.
|
||||
- Idempotence : « advances once on retry duplicate », « deduplicates retry before dispatching ».
|
||||
- Rejets : stale revision, non applicable, missing session, mismatch.
|
||||
- Adapter : publish par révision, heartbeat, ack, resync reconnexion, ordre séquentiel.
|
||||
- `flutter analyze` app téléphone : 0 problème sur le code watch. `flutter analyze` watch_app : No issues found.
|
||||
- Revue code (Main) : la montre n'applique jamais une commande localement (recalage sur projection confirmée — `watch_session_view_model.dart:140-196`) ; haptiques sans focus audio (#92) ; démarrage commun exercice+étape via use cases existants.
|
||||
|
||||
### À valider on-device par l'utilisateur
|
||||
1. `flutter build apk` (app téléphone) — vérifier compilation avec D (plugin Kotlin, `play-services-wearable:19.0.0`, `WatchCompanionForegroundService`, `PhoneWatchBridgeListenerService`).
|
||||
2. `cd watch_app && flutter build apk` — vérifier compilation de l'app Wear OS.
|
||||
3. Pairing Wearable : installer les deux APK, appairer, lancer une séance, vérifier projection reçue sur la montre.
|
||||
4. Commandes depuis la montre : démarrer/pause chrono, démarrer chrono suivant prêt, passer étape/passage/série, terminer série, passer repos → effet réel côté téléphone.
|
||||
5. Foreground service : téléphone verrouillé / app en background pendant séance → le canal reste vivant.
|
||||
6. Latence/interpolation/resync réelles ; haptiques au ack sans couper la musique.
|
||||
|
||||
### Commits (feature/ticket91-wear-os-watch-sync)
|
||||
cf68a72 #91-A · d1c6076 #91-B · 6c177de #91-C · 68a87d1 #91-D · c65a5a7 #91-E/#91-F · 40a2d5e server networking (séparé).
|
||||
|
||||
QA-agent n'a pas pu produire de final textuel (canal instable, sandbox bloquant flutter) — exécutable pris en charge par Main. Revue code par Main.
|
||||
28
.ideai/tickets/100/issue.md
Normal file
28
.ideai/tickets/100/issue.md
Normal file
@ -0,0 +1,28 @@
|
||||
---
|
||||
id: "f28612f6-ef2c-4a5d-a0ac-9d66afb151d6"
|
||||
number: 100
|
||||
title: "#91-G [QA] Validation companion watch offline/local"
|
||||
status: "closed"
|
||||
priority: "medium"
|
||||
sprint: null
|
||||
links: [{"target":"#99","kind":"dependsOn"}]
|
||||
agentRefs: [{"agentId":"7efa512f-3b3a-47b5-ade0-a2dd13073055","role":"assigned"}]
|
||||
createdBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
updatedBy: {"kind":"agent","agent_id":"57695b92-24d0-4876-837c-76116e70a6ae"}
|
||||
createdAt: 1784991960335
|
||||
updatedAt: 1785002671405
|
||||
version: 3
|
||||
---
|
||||
Partie #91, dépend de #91-F.
|
||||
|
||||
Validation end-to-end du companion montre, offline/local uniquement :
|
||||
- Projection téléphone correcte pour chaque phase.
|
||||
- Routing commandes + idempotence : retry/doublon n'avance jamais deux fois une étape/passage/série ; révision stale rejetée.
|
||||
- Acks corrects selon contexte.
|
||||
- Reconnexion + resync complet de l'état.
|
||||
- Foreground service téléphone (verrouillé / background).
|
||||
- Interpolation du chrono montre vs timestamps autoritaires.
|
||||
- Cohérence téléphone/montre : la montre ne modifie jamais l'état localement ; le téléphone reste source de vérité ; actions simultanées -> dernier état confirmé.
|
||||
- Haptiques sans couper la musique (#92).
|
||||
|
||||
Définition de done : rapport de validation par commande réelle (dart analyze, flutter test, build app téléphone + build watch, scénarios manuels sur émulateur/device si possible). Sortie verte ou rapport d'échec non enjolivé.
|
||||
Reference in New Issue
Block a user