diff --git a/docs/adr/0009-socle-pwa-typescript.md b/docs/adr/0009-socle-pwa-typescript.md index e6a100a..c9cbed2 100644 --- a/docs/adr/0009-socle-pwa-typescript.md +++ b/docs/adr/0009-socle-pwa-typescript.md @@ -1,9 +1,9 @@ # 0009. Socle : PWA en TypeScript, moteur en WebAssembly -- **Statut** : proposé +- **Statut** : accepté - **Date** : 2026-11-02 -- **Décideurs** : Pierre (langage, outils), sur proposition de Claude Code ; - le socle sera accepté après les mesures sur le Fairphone 4 +- **Décideurs** : Pierre, sur proposition de Claude Code, après les mesures + sur le Fairphone 4 ## Contexte @@ -13,15 +13,29 @@ en WebAssembly (MR !9) : même suite de contrat qu'en natif (écart maximal 9,5e-4 pour une tolérance de 0,002), 7,3 Mo compressés à télécharger (seuil 40 Mo). Sur le PC de développement (i5-2450M, 2011), le meilleur coup à 2 plis prend au plus 0,3 s sous Chromium et 2,3 s sous Firefox (seuil sur le -téléphone : 3 s). Les mesures sur le Fairphone 4 restent à faire. +téléphone : 3 s). + +Mesures sur le Fairphone 4 (Chrome 156, page `bench.html`, servie par +`make deploy-web`), trois essais le 2026-11-02, maximum sur les positions de +référence : + +| Mesure | Fairphone 4 (pire des 3 essais) | Seuil | Marge | +| --- | --- | --- | --- | +| Meilleur coup, 0 pli | 21 ms | 300 ms | ×14 | +| Meilleur coup, 2 plis (médiane 94 à 98 ms) | 348 ms (`race-2`) | 3 000 ms | ×8,6 | +| Décision de videau, 2 plis | 148 ms | 3 000 ms | ×20 | +| Chargement du moteur | 239 à 276 ms | – | – | +| Téléchargement, gzip | 7,3 Mo | 40 Mo | ×5 | +| Mémoire WebAssembly | 51,9 Mo | – | – | + +Les trois essais diffèrent de moins de 10 %. Firefox n'a pas été mesuré sur le +téléphone. L'ADR 0007 renvoyait au choix du socle le langage de l'interface et l'outil de vérification des dépendances. ## Décision -Sous réserve des mesures sur le Fairphone 4 : - - **Socle : PWA**, installable et utilisable hors ligne, moteur en WebAssembly dans un Web Worker. L'étape 0c (Android natif) n'est pas faite. - **Langage : TypeScript**, compilé par `tsc` en modules JavaScript standard, @@ -49,5 +63,8 @@ Sous réserve des mesures sur le Fairphone 4 : - La distribution sur F-Droid et le Play Store demandera plus tard une enveloppe Android minimale autour de la PWA (à décider à l'étape 1). -- Si les mesures du Fairphone 4 dépassent les seuils, cet ADR passe au statut - « obsolète » et l'étape 0c est lancée. +- L'étape 0c (Android natif) est abandonnée. +- Le critère de fin de l'étape 0 (« moins de 2 s par coup de l'IA en niveau + standard ») est tenu même au niveau fort (2 plis) : c'est le niveau standard + de l'ordinateur à l'étape 0d. +- Firefox sur le téléphone reste à vérifier, sans bloquer. diff --git a/docs/adr/README.md b/docs/adr/README.md index 55949a4..ba46966 100644 --- a/docs/adr/README.md +++ b/docs/adr/README.md @@ -15,4 +15,4 @@ l'ancien passe au statut « remplacé par NNNN ». Voir l'ADR 0001. | [0006](0006-merge-requests-systematiques.md) | Merge requests systématiques, fusionnées par Claude Code | accepté | | [0007](0007-architecture-et-conventions-de-code.md) | Architecture et conventions de code | accepté | | [0008](0008-glossaire-et-scenarios-source-unique.md) | Glossaire et scénarios : une source unique pour le code, l'aide et les tests | accepté | -| [0009](0009-socle-pwa-typescript.md) | Socle : PWA en TypeScript, moteur en WebAssembly | proposé | +| [0009](0009-socle-pwa-typescript.md) | Socle : PWA en TypeScript, moteur en WebAssembly | accepté | diff --git a/docs/feuille-de-route.md b/docs/feuille-de-route.md index acd4dbf..fee452d 100644 --- a/docs/feuille-de-route.md +++ b/docs/feuille-de-route.md @@ -13,13 +13,11 @@ Acquis : socle du dépôt, organisation (ADR 0001, 0003, 0006), source du moteur (ADR 0005 : gnubg officiel, commit 14b6798), gnubg de référence et 32 positions de référence (0a.2), moteur embarqué et `engine-cli` (0a.3), comparaison automatique aux références, tolérance 0,002 (0a.4), moteur en WebAssembly avec -page de test, page de mesure et guide de test (0b). +page de test, page de mesure et guide de test (0b), mesures sur le Fairphone 4 et +socle PWA en TypeScript (ADR 0009 ; 0c Android natif abandonnée). | Sous-étape | Contenu | État | Plan | | --- | --- | --- | --- | -| Mesures | Pierre relève les mesures sur le Fairphone 4, en suivant `docs/guide-test-etape-0.md` | 🔄 | | -| Décision | Socle PWA ou Android natif : ADR 0009 proposé (PWA, TypeScript), à accepter après les mesures | 🔄 | | -| 0c | Android natif (NDK, Gradle en ligne de commande, `make deploy` via adb) | ⏸ si 0b échoue | | | 0d.1 | Domaine « partie » en TypeScript (journal d'événements), scénario exécuté sur le vrai moteur, garde-fous d'architecture | 🔄 | `plans/2026-11-02-domaine-partie.md` | | 0d.2 | Plateau minimal jouable (PWA hors ligne) ; vérifié avec Pierre en suivant `docs/scenarios/jouer-une-partie.feature` | ⏳ | |