ADR 0009 accepté : socle PWA, mesures du Fairphone 4

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Pierre MARTIN
2026-11-02 20:21:29 +01:00
co-authored by Claude Opus 5.5
parent 03b26ccba7
commit ea304795b5
3 changed files with 28 additions and 13 deletions
+25 -8
View File
@@ -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.
+1 -1
View File
@@ -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é |
+2 -4
View File
@@ -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` | ⏳ | |