Session 0 du plan — aucun code applicatif. Cadre - 5 ADR : licences, Phaser 4 hors budget initial, frontière Svelte/Phaser, filières A/B des assets, kréyòl langue principale (norme gwadloupéyenne). - LICENSE (AGPL-3.0-or-later, texte canonique gnu.org), LICENSE-CONTENT (CC BY-SA 4.0). Le jeu est une œuvre collective : aucun compositing sur un média SA ou NC, contrainte vérifiée par script. - Audit des 7 sources avec endpoints réellement appelés. TRAMIL vérifié en direct : « all rights reserved » et page de mentions légales en 404. iNaturalist mesuré à 93 % de CC BY-NC sur un échantillon de 305 photos. Outillage (tools/data/, hors bundle, zéro appel réseau au runtime) - verify:taxa, ingest:commons, build:dataset, validate:data, test:porte, build:credits, check:audio. - validate.mjs est la porte exigée par le brief §2 : le build échoue si une épreuve s'appuie sur un média non validé, non photographique ou de filière B, sur une attribution sans auteur, sur un compositing SA/NC, ou sur une entrée publiée sans relecture kréyòl. test:porte prouve les 9 refus + 1 témoin. Données - 13 entrées (8 fruits + 5 plantes du module Pa touché) vérifiées contre Wikidata ET GBIF : 13/13 ACCEPTED, 0 divergence avec la graine. - 130 candidats Commons sous licence libre, 39 pré-inscrits, 0 validé — aucun agent ne peut valider un média. Écarts signalés, non corrigés en silence - Le champ danger de la graine a deux formes (note vs resume) : normalisé. - 3 identifiants divergent du nom kréyòl au-delà des accents : non tranchés. - comestible:false sur akée et pomme-cajou : sous-estimation prudente assumée. - Le mancenillier n'a aucune photographie moderne dans ses 3 premiers candidats — l'entrée la plus critique est la moins bien servie. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2.7 KiB
ADR 0002 — Phaser 4 et l'écart au budget JS
- Statut : accepté, avec mesure à compléter en session 4
- Date : 2026-07-27
- Session : 0 — cadre et données
Contexte
Le playbook OKI §2.7 fixe un budget non négociable de 170 Ko de JS initial compressé. Le mode arcade « Ranmasé » demande de la physique, des particules et du game feel : le faire en DOM coûterait plus cher en travail et en performance qu'un moteur éprouvé.
Le pack d'origine prescrivait « Phaser 5 ». Phaser 5 n'existe pas. Vérification faite au démarrage de la session :
$ npm view phaser version
4.2.1
La branche courante est Phaser 4 — 4.0 « Caladan » (avril 2026), 4.1 « Salusa », 4.2 « Giedi » — avec un moteur WebGL réécrit en render nodes. Partir de Phaser 3 aurait été partir d'une branche en fin de vie.
Décision
Utiliser phaser@^4 (4.2.1 au moment de la décision), et assumer un écart documenté
au budget JS, borné par quatre conditions :
- Phaser n'est jamais dans le chemin critique. Import dynamique dans la route
(jeu)/ranmaseuniquement, jamais au layout racine. - Le shell reste ≤ 170 Ko gzip, Phaser exclu. Le budget n'est pas relâché : il est mesuré à part.
- L'entrée dans la scène passe derrière un écran de chargement designé (playbook P5,
en KA avec le tambour
ka), pas derrière une page blanche. - Rendu
AUTO(WebGL avec repli canvas), DPR plafonné à 1,5,powerPreference: 'low-power', cible 30 fps stables sur Mali-G52.
Conséquences
- Le budget d'entrée du site (≤ 2 Mo) et les Core Web Vitals (LCP < 2,5 s, INP < 200 ms, CLS < 0,05) restent mesurés sur l'accueil et sur une fiche, pages qui ne chargent jamais Phaser.
- Un utilisateur qui ne joue jamais au mode arcade ne télécharge jamais Phaser. Les quatre autres modes sont en Svelte pur (ADR 0003).
- La session 4 doit renseigner ici la mesure réelle du bundle Phaser en gzip et le relevé de fps sur mobile d'entrée de gamme.
Mesures — à compléter en session 4
| Mesure | Cible | Relevé |
|---|---|---|
| Shell JS initial (gzip) | ≤ 170 Ko | à mesurer |
| Bundle Phaser seul (gzip) | information | à mesurer |
| fps scène Ranmasé sur Mali-G52 | ≥ 30 stables | à mesurer |
| Poids total de l'accueil | ≤ 2 Mo | à mesurer |
Condition de réexamen
Si la mesure de session 4 montre que Phaser dépasse ~450 Ko gzip, ou que les 30 fps ne sont pas tenus sur mobile d'entrée de gamme, la scène « Ranmasé » est réécrite en DOM/CSS avec une boucle rAF maison — le playbook P3 (« DOM d'abord, WebGL seulement où ça paie ») reprend alors la main. Les quatre autres modes n'en dépendent pas : le jeu reste entier.