feat(session-0): cadre juridique, porte de validation et dataset vérifié
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>
This commit is contained in:
@@ -0,0 +1,151 @@
|
||||
# Points à arbitrer par un humain
|
||||
|
||||
> Le brief §9 est explicite : « Si une décision engage le juridique, la pédagogie ou la
|
||||
> sécurité des enfants : arrête-toi et demande. Ce sont les trois domaines où une erreur ne
|
||||
> se rattrape pas par un correctif. »
|
||||
>
|
||||
> Ce fichier liste ce que la session 0 a rencontré et **n'a pas tranché**. Chaque point
|
||||
> indique la valeur provisoire retenue dans les données et pourquoi ce choix-là plutôt qu'un
|
||||
> autre. Aucun n'est bloquant pour la session 1 ; tous le sont pour une publication.
|
||||
|
||||
---
|
||||
|
||||
## 1. `comestible: false` sur l'akée et la pomme-cajou — sous-estimation assumée
|
||||
|
||||
**Domaine : sécurité des enfants.**
|
||||
|
||||
Les cinq entrées du module « Pa touché » sortent de la composition avec `comestible: false`.
|
||||
C'est **factuellement incomplet pour deux d'entre elles** :
|
||||
|
||||
- **Aki / akée** (*Blighia sapida*) — se mange, mais **uniquement** ouverte naturellement et
|
||||
mûre, et seulement la partie charnue claire. Le fruit non mûr et les graines sont toxiques
|
||||
(hypoglycine).
|
||||
- **Pòm-kajou / pomme-cajou** (*Anacardium occidentale*) — la pomme se mange. C'est la coque
|
||||
de la noix qui contient un liquide caustique.
|
||||
|
||||
**Pourquoi `false` malgré tout.** Entre deux erreurs possibles, l'une dit à un enfant « ce
|
||||
fruit ne se mange pas » alors qu'il se mange sous conditions ; l'autre dit « ce fruit se
|
||||
mange » à un enfant qui rencontrera un akée fermé. La seconde envoie aux urgences. Le
|
||||
défaut prudent était le seul choix défendable sans arbitrage humain.
|
||||
|
||||
La nuance complète est présente dans `danger.resume` de chaque entrée, mot pour mot depuis
|
||||
la graine. Rien n'est perdu ; c'est la valeur booléenne qui est grossière.
|
||||
|
||||
**À trancher :** comment l'interface exprime « comestible sous conditions strictes » sans
|
||||
transformer une nuance en autorisation. Un booléen ne suffit probablement pas — un troisième
|
||||
état (`conditionnel`) est possible, mais il faudra qu'il s'affiche de façon qu'un enfant de
|
||||
sept ans ne le lise pas comme un oui.
|
||||
|
||||
---
|
||||
|
||||
## 2. Les fruits dangereux doivent-ils apparaître ailleurs que dans « Pa touché » ?
|
||||
|
||||
**Domaine : pédagogie et sécurité.**
|
||||
|
||||
État actuel : les cinq plantes sont en `categorie: "plante_dangereuse"`, et le validateur
|
||||
**interdit** qu'un de leurs médias porte un usage `epreuve`. C'est l'application directe du
|
||||
brief §6 — « jamais chronométré, jamais scoré, jamais transformé en épreuve d'adresse ».
|
||||
|
||||
Mais la pomme-cajou est aussi un fruit qu'on trouve au marché et que les enfants mangent.
|
||||
L'exclure entièrement des modes d'apprentissage est peut-être une perte : un enfant qui sait
|
||||
reconnaître une pomme-cajou et sait que la noix brûle est mieux armé qu'un enfant qui n'a
|
||||
vu la plante que dans un module « danger ».
|
||||
|
||||
**À trancher :** une entrée peut-elle appartenir aux deux mondes ? Si oui, la règle
|
||||
technique doit devenir plus fine que « catégorie dangereuse ⇒ pas d'épreuve », et cette
|
||||
finesse est exactement le genre de chose qui se relâche silencieusement. La règle actuelle,
|
||||
plus grossière, a le mérite d'être infranchissable.
|
||||
|
||||
---
|
||||
|
||||
## 3. Les mois de saisonnalité ne sont vérifiés contre rien
|
||||
|
||||
**Domaine : pédagogie.**
|
||||
|
||||
Les `saison_mois` des huit fruits proviennent de `fruits.seed.json` et **n'ont été vérifiés
|
||||
contre aucune source** — contrairement à la taxonomie, contrôlée contre Wikidata et GBIF.
|
||||
|
||||
Deux problèmes distincts :
|
||||
|
||||
1. **Aucune source.** Rien ne les étaie aujourd'hui.
|
||||
2. **Aucune distinction par île.** Le champ est unique alors que les entrées listent jusqu'à
|
||||
quatre îles (`gp`, `mq`, `gf`, `re`). La Guyane et La Réunion n'ont pas le calendrier de
|
||||
la Guadeloupe.
|
||||
|
||||
Or le mode « Sézon » repose entièrement sur ce champ, et le savoir qu'il prétend transmettre
|
||||
est précisément celui qui se perd. Enseigner une saisonnalité fausse est pire que ne pas
|
||||
l'enseigner.
|
||||
|
||||
**À trancher :** source de référence (CIRAD Antilles est le candidat naturel — lettre prête
|
||||
dans `docs/courriers/cirad.md`), et passage éventuel à une structure par île. Tant que ce
|
||||
n'est pas fait, **le mode Sézon ne doit pas être publié**, même s'il est techniquement prêt
|
||||
en session 2.
|
||||
|
||||
---
|
||||
|
||||
## 4. Quelles photographies pour le mancenillier
|
||||
|
||||
**Domaine : sécurité des enfants.**
|
||||
|
||||
Le brief impose « aucun visuel anxiogène » sur le module « Pa touché ». Mais un enfant ne
|
||||
peut éviter un mancenillier que s'il le reconnaît — et ce qu'il doit reconnaître, c'est
|
||||
l'arbre entier au bord de la plage, la feuille à nervure médiane jaune, et le petit fruit
|
||||
vert d'aspect appétissant.
|
||||
|
||||
Le danger est précisément que le fruit **paraisse bon**. La photographie utile est donc
|
||||
celle d'un fruit qui a l'air appétissant, accompagnée du texte qui dit de ne pas y toucher.
|
||||
|
||||
**Difficulté matérielle constatée en session 0 :** les trois premiers candidats Commons pour
|
||||
*Hippomane mancinella* sont **toutes des planches gravées** — Jacquin 1780, Green 1816-20,
|
||||
Hocquart 1821. Aucune photographie moderne dans le haut de la pile. C'est l'entrée la plus
|
||||
critique du module qui est la moins bien servie.
|
||||
|
||||
**À trancher :** la sélection des médias de `mansiniye`, image par image, par un humain. Ne
|
||||
pas laisser ce choix à l'ordre de pertinence d'un moteur de recherche. Une photo de lésion
|
||||
cutanée, par exemple, serait à la fois anxiogène et pédagogiquement inutile — l'enfant doit
|
||||
reconnaître l'arbre, pas la brûlure.
|
||||
|
||||
**Voie la plus sûre :** photographier l'arbre soi-même sur le littoral. Il est signalé par
|
||||
une bande de peinture rouge, ce qui rend la séance praticable et écarte tout risque de
|
||||
confondre l'espèce.
|
||||
|
||||
À noter aussi : la bande de peinture rouge qui signale les mancenilliers sur le littoral
|
||||
martiniquais et guadeloupéen est elle-même un indice à enseigner. Il est renseigné dans
|
||||
`danger.signalement`.
|
||||
|
||||
---
|
||||
|
||||
## 5. `pòm-dlo` : trois noms, trois espèces
|
||||
|
||||
**Domaine : pédagogie.** Détaillé dans `docs/kreyol-a-relire.md` §3.
|
||||
|
||||
`pòm-dlo`, `pòm-malaka` et `pòm-rose` désignent des *Syzygium* différents selon les îles.
|
||||
L'entrée actuelle associe `pòm-dlo` à *Syzygium samarangense* sur la seule foi de la graine.
|
||||
La taxonomie de cette association est vérifiée ; **l'association nom ↔ espèce ne l'est pas.**
|
||||
|
||||
---
|
||||
|
||||
## 6. Le champ `iles` n'est vérifié pour aucune entrée
|
||||
|
||||
**Domaine : pédagogie.**
|
||||
|
||||
Les listes d'îles viennent de la graine. Elles déterminent quels fruits apparaissent dans un
|
||||
pack d'île, donc ce qu'un enfant guadeloupéen verra. Une erreur ici ne casse rien
|
||||
techniquement : elle enseigne juste qu'un fruit pousse là où il ne pousse pas.
|
||||
|
||||
**Piste de vérification :** les observations géolocalisées d'iNaturalist
|
||||
(`place_id` Guadeloupe / Martinique / Guyane / La Réunion) donnent une première mesure
|
||||
objective de présence, à croiser avec un regard local.
|
||||
|
||||
---
|
||||
|
||||
## Récapitulatif
|
||||
|
||||
| # | Point | Domaine | Bloque quoi |
|
||||
|---|---|---|---|
|
||||
| 1 | `comestible` grossier sur akée et pomme-cajou | sécurité | publication des fiches |
|
||||
| 2 | Fruits dangereux hors du module Pa touché | pédagogie / sécurité | rien à ce stade |
|
||||
| 3 | Saisonnalité non sourcée, non ventilée par île | pédagogie | **publication du mode Sézon** |
|
||||
| 4 | Choix des photos du mancenillier | sécurité | publication du module Pa touché |
|
||||
| 5 | `pòm-dlo` — association nom ↔ espèce | pédagogie | publication de l'entrée |
|
||||
| 6 | Présence par île non vérifiée | pédagogie | packs d'île |
|
||||
@@ -0,0 +1,90 @@
|
||||
# ADR 0001 — Licences du code, du contenu et des médias
|
||||
|
||||
- **Statut :** accepté
|
||||
- **Date :** 2026-07-27
|
||||
- **Session :** 0 — cadre et données
|
||||
- **Décideur :** le porteur (ORGANISATION KA INTERNATIONALE)
|
||||
|
||||
## Contexte
|
||||
|
||||
Le pack d'origine parlait de « ressources libres de droit ». L'expression n'a pas
|
||||
d'existence juridique et masque quatre régimes très différents :
|
||||
|
||||
- **Wikimedia Commons** n'héberge que du libre, mais majoritairement du **CC BY-SA**,
|
||||
qui impose l'attribution nominative **et** le partage à l'identique. Le partage à
|
||||
l'identique contamine les œuvres dérivées.
|
||||
- **iNaturalist** publie beaucoup de **CC BY-NC**, incompatible avec toute distribution
|
||||
commerciale.
|
||||
- **TRAMIL** (tramil.net) n'accorde aucune licence dans ses mentions légales. Par défaut :
|
||||
tous droits réservés.
|
||||
- **CIRAD / INRAE** appliquent des régimes mixtes, majoritairement propriétaires, avec des
|
||||
usages pédagogiques négociables au cas par cas.
|
||||
|
||||
Le projet vise des enfants de 7 à 12 ans dans un cadre scolaire. Une erreur de licence sur
|
||||
un support diffusé en classe n'est pas rattrapable par un correctif.
|
||||
|
||||
## Décision
|
||||
|
||||
### Code — AGPL-3.0-or-later
|
||||
|
||||
`LICENSE` contient le texte canonique récupéré depuis gnu.org. L'AGPL plutôt que la GPL
|
||||
parce qu'une version future pourrait exposer une face serveur (export de progression pour
|
||||
un enseignant, tableau de classe) : l'AGPL couvre l'usage en réseau, la GPL non.
|
||||
|
||||
### Contenu rédigé par OKI — CC BY-SA 4.0
|
||||
|
||||
Textes, fiches, indices botaniques, module « Pa touché », données structurées. Cohérent
|
||||
avec Commons, donc réutilisable par le projet lui-même et par les enseignants.
|
||||
|
||||
### Médias tiers — licence d'origine conservée, œuvre collective
|
||||
|
||||
Chaque média garde sa licence. Le jeu est une **œuvre collective**, pas une œuvre dérivée.
|
||||
C'est cette qualification qui permet à des médias CC BY-SA et CC BY-NC de coexister dans
|
||||
un même produit.
|
||||
|
||||
### Clause non commerciale — acceptée, et irréversible
|
||||
|
||||
Le porteur a tranché en session 0 : le CC BY-NC est accepté pour élargir le fonds
|
||||
photographique, en échange d'un **engagement non commercial définitif** sur le jeu.
|
||||
|
||||
Le code reste réutilisable commercialement sous AGPL une fois séparé des médias.
|
||||
|
||||
## Conséquences
|
||||
|
||||
### Ce que cette décision interdit, techniquement
|
||||
|
||||
1. **Aucun compositing.** Un média sous partage à l'identique ou sous clause non
|
||||
commerciale ne peut être ni fusionné, ni détouré puis recombiné, ni fondu dans un atlas
|
||||
de textures partagé avec d'autres médias. C'est ce qui préserve la qualification
|
||||
d'œuvre collective.
|
||||
2. **Aucune vente**, aucune version payante, aucune licence à un éditeur tant qu'un seul
|
||||
média NC est embarqué.
|
||||
3. **Aucun fichier TRAMIL.** TRAMIL se cite comme source de vérification factuelle, dans
|
||||
`sources_factuelles`, jamais comme source d'images.
|
||||
|
||||
### Ce qui applique la décision
|
||||
|
||||
- `npm run validate:data` refuse tout média `composite: true` portant une clause SA ou NC,
|
||||
et tout média à attribution dont l'auteur est absent.
|
||||
- `npm run test:porte` prouve que ces refus se produisent réellement.
|
||||
- `npm run build:credits` régénère `CREDITS.md` depuis les données, avec une section
|
||||
distincte pour les médias NC. Un fichier de crédits tenu à la main se désynchronise, et
|
||||
une attribution fausse est une violation.
|
||||
- Le schéma impose `licence`, `auteur`, `url_fichier` et `url_description` sur chaque média.
|
||||
|
||||
### Condition de réexamen
|
||||
|
||||
Si le projet devait un jour être distribué commercialement, il faudrait retirer tous les
|
||||
médias NC et régénérer les crédits. `CREDITS.md` liste ces médias dans une section dédiée
|
||||
précisément pour rendre cette opération possible. À ce jour, aucun média NC n'est embarqué :
|
||||
les 39 médias candidats proviennent tous de Commons, sous CC0, domaine public, CC BY ou
|
||||
CC BY-SA. **L'engagement non commercial n'est donc pas encore consommé** — il ne le sera
|
||||
qu'au premier média iNaturalist retenu.
|
||||
|
||||
## Alternatives écartées
|
||||
|
||||
- **Refuser le NC.** Aurait gardé une porte de sortie commerciale, au prix d'un fonds
|
||||
photographique plus pauvre sur les espèces mal couvertes (zikak, pòm-sitè).
|
||||
- **Isoler le NC dans un pack séparé retirable par flag.** Meilleur des deux mondes sur le
|
||||
papier, mais complexifie le pipeline d'assets et le service worker pour une option dont
|
||||
le porteur a jugé qu'il ne l'exercerait pas.
|
||||
@@ -0,0 +1,63 @@
|
||||
# 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 :
|
||||
|
||||
1. Phaser n'est **jamais** dans le chemin critique. Import dynamique dans la route
|
||||
`(jeu)/ranmase` uniquement, jamais au layout racine.
|
||||
2. Le shell reste **≤ 170 Ko gzip**, Phaser exclu. Le budget n'est pas relâché : il est
|
||||
mesuré à part.
|
||||
3. 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.
|
||||
4. 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.
|
||||
@@ -0,0 +1,59 @@
|
||||
# ADR 0003 — Frontière stricte entre Svelte et Phaser
|
||||
|
||||
- **Statut :** accepté
|
||||
- **Date :** 2026-07-27
|
||||
- **Session :** 0 — cadre et données
|
||||
|
||||
## Contexte
|
||||
|
||||
Le pack d'origine supposait que le jeu entier serait porté par le moteur de jeu. Or trois
|
||||
des cinq modes — Rekonèt, Kaché, Sézon — sont des interfaces de cartes et de boutons. Un
|
||||
canvas les rendrait moins accessibles, plus lourds et plus difficiles à rendre lisibles
|
||||
sans JavaScript, pour aucun gain.
|
||||
|
||||
Le public visé lit parfois mal, navigue sur Android d'entrée de gamme, et une partie de
|
||||
l'usage se fera en classe, potentiellement au clavier ou avec un lecteur d'écran.
|
||||
|
||||
## Décision
|
||||
|
||||
Architecture **hybride à frontière stricte** : Svelte porte la coquille, Phaser porte un
|
||||
seul îlot.
|
||||
|
||||
```
|
||||
Svelte 5 (coquille) Phaser 4 (îlot)
|
||||
├─ routes, i18n, SEO └─ scène « Ranmasé » uniquement
|
||||
├─ menus, HUD, album · import dynamique dans (jeu)/ranmase
|
||||
├─ fiches encyclopédiques · jamais au layout racine
|
||||
├─ données, progression · game.destroy(true) au démontage
|
||||
├─ audio, réglages · communication par événements
|
||||
└─ Rekonèt · Kaché · Sézon · aucun état Svelte partagé par frame
|
||||
```
|
||||
|
||||
Règles de frontière, non négociables :
|
||||
|
||||
1. **Import dynamique uniquement**, dans la route de la scène. Un `import` statique de
|
||||
Phaser au layout racine ferait entrer 300 à 400 Ko dans le chemin critique de toutes
|
||||
les pages, y compris de l'encyclopédie.
|
||||
2. **Destruction symétrique** : `game.destroy(true)` au démontage du composant. Un moteur
|
||||
de jeu qui survit à sa route fuit de la mémoire et continue de consommer du rAF.
|
||||
3. **Communication par événements**, jamais par état Svelte lu ou écrit à chaque frame.
|
||||
Le playbook §3 l'interdit explicitement : les états réactifs par frame passent par des
|
||||
variables plain et un flush rAF.
|
||||
4. **Miroir DOM sémantique obligatoire** pour la scène (playbook §2.8, point 4) : le canvas
|
||||
est `aria-hidden`, et l'état du jeu est doublé en DOM lisible au clavier et au lecteur
|
||||
d'écran.
|
||||
|
||||
## Conséquences
|
||||
|
||||
- Les quatre modes non-arcade sont **jouables au clavier** et dégradent proprement.
|
||||
- La session 2 doit produire un jeu **déjà amusant sans Phaser**. C'est la porte de sortie
|
||||
de cette session : si le jeu n'est pas plaisant en Svelte pur, ajouter un moteur de jeu
|
||||
ne le sauvera pas — cela ajoutera du poids à un problème de game design.
|
||||
- L'encyclopédie `/zerbaj/` ne dépend d'aucune brique de jeu et reste prérendue, lisible
|
||||
sans JavaScript.
|
||||
|
||||
## Alternative écartée
|
||||
|
||||
**Tout en Phaser.** Aurait unifié le rendu au prix de l'accessibilité clavier, du
|
||||
référencement de l'encyclopédie, de la lisibilité sans JS et du budget. Le playbook P3 est
|
||||
explicite : DOM d'abord, WebGL seulement où ça paie. Ici, il ne paie que sur une scène.
|
||||
@@ -0,0 +1,83 @@
|
||||
# ADR 0004 — Deux filières d'assets : vérité et décor
|
||||
|
||||
- **Statut :** accepté
|
||||
- **Date :** 2026-07-27
|
||||
- **Session :** 0 — cadre et données
|
||||
|
||||
## Contexte
|
||||
|
||||
Le pack d'origine prévoyait de générer l'intégralité des visuels du jeu — 76 images — par
|
||||
diffusion (SDXL / FLUX via ComfyUI), puis de passer directement à la production.
|
||||
|
||||
C'est une contradiction avec le but du jeu. Un enfant qui apprend à reconnaître un
|
||||
corossol sur une image générée n'apprend pas à reconnaître un corossol : il apprend à
|
||||
reconnaître ce qu'un modèle de diffusion produit quand on lui demande un corossol. Sur les
|
||||
espèces peu représentées dans les jeux d'entraînement — le zikak, la quenette, le cachiman
|
||||
cœur-de-bœuf, la pomme-liane — le modèle ne refuse pas : il produit un fruit **plausible
|
||||
et faux**. C'est le pire des deux mondes, parce que l'erreur est invisible à qui ne connaît
|
||||
pas déjà l'espèce.
|
||||
|
||||
Cette session a produit une illustration involontaire du même problème côté sources
|
||||
réelles : parmi les photographies que Wikimedia Commons remonte pour *Melicoccus bijugatus*
|
||||
(la quenette), l'un des premiers résultats est une photographie de **singe capucin**
|
||||
mangeant le fruit. Aucune machine — moteur de recherche ou modèle génératif — ne peut
|
||||
tenir lieu de validation botanique.
|
||||
|
||||
## Décision
|
||||
|
||||
Deux filières, deux régimes, jamais mélangés.
|
||||
|
||||
| Filière | Contenu | Source autorisée | Rôle |
|
||||
|---|---|---|---|
|
||||
| **A — Vérité** | fruit, coupe, feuille, écorce, port de l'arbre | photographie réelle : Commons, iNaturalist, herbier, appareil du porteur | tout ce qui sert à **identifier** — épreuves, indices, fiches |
|
||||
| **B — Décor** | fonds, personnages, UI, sprites arcade, badges, écrans de titre | génération IA (ComfyUI / FLUX) | tout ce qui **ne sert pas** à identifier |
|
||||
|
||||
### Une troisième catégorie découverte en session 0
|
||||
|
||||
Les fonds Commons contiennent beaucoup de **planches botaniques anciennes** — Blanco,
|
||||
Merian, Köhler, domaine public, exactes et magnifiques. Elles ne sont ni des photographies
|
||||
ni des images générées. Le schéma les distingue donc explicitement :
|
||||
|
||||
```
|
||||
type_media : "photo" | "planche_botanique" | "image_generee"
|
||||
```
|
||||
|
||||
Une planche botanique **documente** une fiche encyclopédique. Elle ne peut **pas** porter
|
||||
une épreuve d'identification : une gravure au trait rehaussée n'entraîne pas l'œil à
|
||||
reconnaître un fruit posé sur une table de marché.
|
||||
|
||||
### Le champ `usages` et la porte
|
||||
|
||||
Chaque média déclare où il est employé : `epreuve`, `indice`, `fiche`, `decor`. Les deux
|
||||
premiers sont les usages **identifiants**. Un média identifiant doit satisfaire les quatre
|
||||
conditions, vérifiées par script :
|
||||
|
||||
1. `filiere: "A"` ;
|
||||
2. `type_media: "photo"` ;
|
||||
3. `valide: true`, avec un `valide_par` nommé — une validation anonyme n'engage personne ;
|
||||
4. `vue` renseignée.
|
||||
|
||||
## Conséquences
|
||||
|
||||
- `npm run validate:data` fait échouer le build sur toute violation. `npm run test:porte`
|
||||
rejoue les neuf cas interdits et vérifie que le refus se produit — une règle qu'on n'a
|
||||
jamais vue refuser quelque chose est une intention, pas une règle.
|
||||
- **Tout média sort de l'ingestion avec `valide: false`.** Aucun agent, aucun script, aucun
|
||||
modèle ne peut passer ce champ à `true`. La validation se fait par comparaison à au moins
|
||||
deux photographies de référence, idéalement contresignée par quelqu'un qui connaît :
|
||||
TRAMIL, un enseignant de SVT, un agriculteur, une grand-mère.
|
||||
- Le pipeline de génération (filière B) vit dans `tools/assets/`, hors du bundle, avec son
|
||||
propre `requirements.txt`. Il est piloté **hors ligne, au build** (playbook P2). Aucun
|
||||
appel réseau ne subsiste au runtime du jeu.
|
||||
- Les défauts du script du pack d'origine sont corrigés en session 3 :
|
||||
`hash()` de Python est randomisé par exécution (`PYTHONHASHSEED`), donc les seeds annoncés
|
||||
comme reproductibles ne le sont pas — utiliser `zlib.crc32(clé.encode()) & 0xFFFFFFFF` ;
|
||||
`copy.deepcopy` au lieu de `json.loads(json.dumps(...))` ; et vérifier la licence des
|
||||
**poids** du modèle `rembg`, qui ne suit pas nécessairement la licence MIT du paquet.
|
||||
|
||||
## Alternative écartée
|
||||
|
||||
**Générer les visuels d'identification et les faire valider a posteriori.** Le pack le
|
||||
proposait implicitement. Le problème n'est pas la validation, c'est le coût de l'erreur non
|
||||
détectée : un validateur non spécialiste confirmera un corossol plausible. La photographie
|
||||
supprime la question.
|
||||
@@ -0,0 +1,78 @@
|
||||
# ADR 0005 — Le kréyòl est la langue principale, norme gwadloupéyenne
|
||||
|
||||
- **Statut :** accepté ; orthographe en attente de relecture humaine
|
||||
- **Date :** 2026-07-27
|
||||
- **Session :** 0 — cadre et données
|
||||
|
||||
## Contexte
|
||||
|
||||
Le jeu vise à restituer une connaissance qui se transmettait en kréyòl. Traiter le kréyòl
|
||||
comme une traduction du français inverserait le rapport que le projet cherche précisément
|
||||
à rétablir.
|
||||
|
||||
Par ailleurs, les orthographes gwadloupéyenne et matinitjée diffèrent sur plusieurs entrées
|
||||
du jeu de données. Les mélanger produirait un contenu que personne ne reconnaît tout à
|
||||
fait comme le sien.
|
||||
|
||||
## Décision
|
||||
|
||||
### Le nom kréyòl est le nom de l'entrée
|
||||
|
||||
Dans les données, `noms.gcf` est le **nom principal**. `noms.fr`, `noms.en` et `noms.es` en
|
||||
sont les traductions. Le schéma rend `gcf` obligatoire et les autres facultatives — pas
|
||||
l'inverse. C'est un choix politique, pas cosmétique, et il ne s'inverse pas au motif que le
|
||||
français serait « plus pratique » pour l'interface.
|
||||
|
||||
### Routes
|
||||
|
||||
`/` sert le kréyòl, `/fr/` le français, `/en/` l'anglais. Routeur par dossiers avec
|
||||
catalogues JSON, pas de middleware (playbook §5b.7) : les URLs et le prérendu restent sous
|
||||
contrôle total, ce qui est la condition du statique et du hors-ligne.
|
||||
|
||||
Attribut `lang="gcf"` correct partout, y compris sur les fragments kréyòl insérés dans une
|
||||
page française — un nom de fruit prononcé par un lecteur d'écran avec la phonétique
|
||||
française n'est pas le nom du fruit.
|
||||
|
||||
### Norme orthographique : gwadloupéyenne
|
||||
|
||||
Une seule norme pour tout le projet, décidée par le porteur en session 0. Le champ
|
||||
`orthographe.norme` vaut `"gwadloupeyen"` sur chaque entrée, et le schéma n'accepte pas
|
||||
d'autre valeur : il est impossible de mélanger les deux normes sans modifier le schéma,
|
||||
donc sans que la décision soit revue.
|
||||
|
||||
### L'orthographe elle-même n'est pas du ressort de l'agent
|
||||
|
||||
Aucune graphie n'est tranchée par un agent de code. Chaque entrée porte :
|
||||
|
||||
```json
|
||||
"orthographe": { "norme": "gwadloupeyen", "statut": "a_relire", "relu_par": null }
|
||||
```
|
||||
|
||||
`statut` ne passe à `"relu"` que par décision d'un locuteur humain nommé. Le validateur
|
||||
refuse toute entrée déclarée publiable dont l'orthographe n'est pas relue, et toute entrée
|
||||
`relu` sans nom de relecteur.
|
||||
|
||||
Les incertitudes constatées sont consignées dans `docs/kreyol-a-relire.md` — signalées, pas
|
||||
corrigées.
|
||||
|
||||
## Conséquences
|
||||
|
||||
- Les 13 graphies issues de `fruits.seed.json` sont **toutes non vérifiées** à ce stade. La
|
||||
graine elle-même le déclare. Trois incohérences internes ont été relevées entre
|
||||
l'identifiant technique et le nom kréyòl (voir `docs/kreyol-a-relire.md`) : elles ne sont
|
||||
pas corrigées ici.
|
||||
- Les identifiants techniques (`id`) restent en ASCII sans diacritique — ils servent de nom
|
||||
de fichier et de segment d'URL. Ils ne sont **pas** une graphie et ne doivent jamais être
|
||||
affichés à l'utilisateur. `kowosol` est un identifiant ; `kowosòl` est un nom.
|
||||
- Un identifiant ne se renomme jamais après publication : il est dans les URLs, dans la
|
||||
progression stockée en local et dans les liens partagés. Une correction d'orthographe
|
||||
change `noms.gcf`, jamais `id`.
|
||||
- Chaque entrée doit recevoir un enregistrement audio du nom prononcé par une voix humaine
|
||||
locale. Pas de synthèse vocale : les enfants visés lisent mal le kréyòl écrit, dont
|
||||
l'orthographe leur est peu familière — un jeu qui enseigne les noms kréyòl sans les faire
|
||||
entendre rate sa cible. `npm run check:audio` tient la liste de ce qui manque.
|
||||
|
||||
## Point ouvert
|
||||
|
||||
Le relecteur n'est pas encore désigné. Tant qu'il ne l'est pas, aucune entrée ne peut être
|
||||
publiée : c'est le validateur qui l'impose, pas une note de bas de page.
|
||||
@@ -0,0 +1,22 @@
|
||||
# Enregistrements kréyòl à réaliser
|
||||
|
||||
> Généré par `npm run check:audio`. Aucune synthèse vocale : ces noms doivent être
|
||||
> prononcés par une voix humaine locale (brief §6).
|
||||
|
||||
Format attendu : `.opus` — un fichier par entrée, déposé dans `static/audio/<id>.opus`.
|
||||
|
||||
## À enregistrer (13)
|
||||
|
||||
- [ ] **aki** — `static/audio/ake.opus` _(akée)_
|
||||
- [ ] **fwiyapen** — `static/audio/fwiyapen.opus` _(fruit à pain)_
|
||||
- [ ] **gouyav** — `static/audio/gouyav.opus` _(goyave)_
|
||||
- [ ] **kénèt** — `static/audio/kenet.opus` _(quenette)_
|
||||
- [ ] **kowosòl** — `static/audio/kowosol.opus` _(corossol)_
|
||||
- [ ] **lorié-jòn** — `static/audio/lorye-jonn.opus` _(laurier jaune)_
|
||||
- [ ] **mansiniyé** — `static/audio/mansiniye.opus` _(mancenillier)_
|
||||
- [ ] **medsinyé** — `static/audio/medisinye.opus` _(médicinier)_
|
||||
- [ ] **pòm-dlo** — `static/audio/pom-dlo.opus` _(pomme d'eau)_
|
||||
- [ ] **pòm-kajou** — `static/audio/pom-kajou.opus` _(pomme-cajou)_
|
||||
- [ ] **pòm-kannèl** — `static/audio/pom-kannel.opus` _(pomme-cannelle)_
|
||||
- [ ] **pòm-sitè** — `static/audio/pom-site.opus` _(prune de Cythère)_
|
||||
- [ ] **zikak** — `static/audio/zikak.opus` _(icaque)_
|
||||
@@ -0,0 +1,235 @@
|
||||
# Audit des sources — KI FWI SA YÉ ?
|
||||
|
||||
> Session 0. Chaque fiche répond à quatre questions : **ce qu'on y prend**, **sous quelle
|
||||
> licence**, **avec quelle contrainte**, **comment on l'interroge**. Les endpoints listés
|
||||
> ont été **appelés réellement** pendant l'audit, pas recopiés d'une documentation.
|
||||
>
|
||||
> Date de l'audit : 2026-07-27.
|
||||
|
||||
---
|
||||
|
||||
## Tableau de synthèse
|
||||
|
||||
| Source | Ce qu'on y prend | Régime | Verdict |
|
||||
|---|---|---|---|
|
||||
| **Wikidata** | Q-id, taxonomie | CC0 | ✅ Utilisée, sans réserve |
|
||||
| **GBIF** | nom accepté, clé d'usage, famille | données ouvertes | ✅ Utilisée, sans réserve |
|
||||
| **Wikimedia Commons** | photographies, planches | CC0 / PD / CC BY / CC BY-SA | ✅ Utilisée, attribution obligatoire, **pas de compositing** |
|
||||
| **iNaturalist** | photographies de complément | ~93 % CC BY-NC (mesuré) | ⚠️ Autorisée mais engage le non-commercial (ADR 0001) |
|
||||
| **TRAMIL** | vérification factuelle citée | **tous droits réservés** | ⛔ **Aucun fichier.** Demande écrite requise |
|
||||
| **CIRAD / Agritrop** | vérification, publications | mixte, majoritairement © | ⛔ Demande écrite avant tout usage |
|
||||
| **INRAE** | vérification | mixte | ⛔ Demande écrite avant tout usage |
|
||||
| **Photos du porteur** | tout | choisi par le porteur | ✅ La meilleure source disponible |
|
||||
|
||||
---
|
||||
|
||||
## 1. Wikidata — la colonne vertébrale des identifiants
|
||||
|
||||
**Ce qu'on y prend.** L'identifiant Q de chaque taxon, et la famille botanique remontée par
|
||||
la chaîne de taxons parents.
|
||||
|
||||
**Licence.** CC0 pour les données. Aucune contrainte d'attribution, mais le projet cite la
|
||||
source par honnêteté et pour la traçabilité.
|
||||
|
||||
**Contrainte.** Wikidata est un wiki : une valeur peut être fausse ou obsolète. C'est
|
||||
pourquoi le projet croise **systématiquement** avec GBIF et exige les deux dans le schéma
|
||||
(`verifie_contre` doit contenir `wikidata` **et** `gbif` — un seul ne suffit pas).
|
||||
|
||||
**Comment on l'interroge.** Une seule requête SPARQL pour les 13 taxons :
|
||||
|
||||
```sparql
|
||||
SELECT ?taxon ?name ?fam WHERE {
|
||||
VALUES ?name { "Annona muricata" … }
|
||||
?taxon wdt:P225 ?name .
|
||||
OPTIONAL { ?taxon wdt:P171+ ?f . ?f wdt:P105 wd:Q35409 ; wdt:P225 ?fam . }
|
||||
}
|
||||
```
|
||||
|
||||
`P225` = nom du taxon · `P171` = taxon supérieur · `P105` = rang · `Q35409` = famille.
|
||||
Endpoint `https://query.wikidata.org/sparql`, en-tête `User-Agent` identifiant le projet
|
||||
(exigé par l'infrastructure Wikimedia). Implémenté dans `tools/data/verify-taxa.mjs`.
|
||||
|
||||
**Résultat de l'audit.** 13/13 taxons trouvés par correspondance exacte sur `P225`.
|
||||
|
||||
---
|
||||
|
||||
## 2. GBIF — le nom scientifique accepté
|
||||
|
||||
**Ce qu'on y prend.** La clé d'usage (`usageKey`), le nom scientifique **accepté**, le
|
||||
statut (`ACCEPTED` / `SYNONYM`) et la famille.
|
||||
|
||||
**Licence.** Données ouvertes. GBIF demande la citation du jeu de données ; le projet cite
|
||||
GBIF globalement dans `CREDITS.md` et lie chaque entrée à sa fiche.
|
||||
|
||||
**Contrainte.** C'est ici que se détectent les **synonymes**, piège central d'un dataset
|
||||
botanique. Le laurier-jaune est le cas d'école : il circule largement sous
|
||||
*Thevetia peruviana*, alors que le nom accepté est *Cascabela thevetia*. Un dataset qui
|
||||
fige un synonyme se désynchronise silencieusement des référentiels.
|
||||
|
||||
**Comment on l'interroge.**
|
||||
|
||||
```
|
||||
GET https://api.gbif.org/v1/species/match?name=<nom>&strict=false
|
||||
GET https://api.gbif.org/v1/species/<usageKey> # si status ≠ ACCEPTED
|
||||
```
|
||||
|
||||
**Résultat de l'audit.** 13/13 en `matchType: EXACT` et `status: ACCEPTED`. **Aucune
|
||||
divergence** avec les familles annoncées dans `fruits.seed.json`. La graine était bonne sur
|
||||
ce point — c'est vérifié, plus supposé. Rapport : `docs/verification-taxons.md`.
|
||||
|
||||
---
|
||||
|
||||
## 3. Wikimedia Commons — le fonds photographique principal
|
||||
|
||||
**Ce qu'on y prend.** Des photographies pour la filière A (vérité), et des planches
|
||||
botaniques anciennes pour les fiches encyclopédiques.
|
||||
|
||||
**Licence.** Commons n'héberge que du libre, mais « libre » recouvre plusieurs régimes très
|
||||
différents. Sur les 130 candidats remontés pendant l'audit : domaine public, CC0, CC BY 2.0
|
||||
à 4.0, CC BY-SA 2.0 à 4.0.
|
||||
|
||||
**Contraintes, dans l'ordre de gravité.**
|
||||
|
||||
1. **Le partage à l'identique contamine les dérivés.** Une photo CC BY-SA compositée dans
|
||||
un sprite rend le sprite CC BY-SA. D'où l'interdiction absolue de compositing posée par
|
||||
l'ADR 0001 et vérifiée par `npm run validate:data`.
|
||||
2. **L'attribution est nominative.** Il faut l'auteur, la licence, l'URL du fichier et
|
||||
l'URL de la page de description. Le script les récupère et refuse tout fichier à
|
||||
attribution dont l'auteur est absent des métadonnées.
|
||||
3. **Le titre ne garantit rien.** Une recherche sur *Melicoccus bijugatus* remonte en
|
||||
deuxième position une photographie de **singe capucin** mangeant le fruit. Le moteur de
|
||||
recherche n'est pas un botaniste. Rien ne sort de l'ingestion autrement qu'en
|
||||
`valide: false`.
|
||||
4. **Toutes les licences ne sont pas acceptables.** L'audit a écarté automatiquement
|
||||
4 fichiers : deux sous GFDL 1.2 ou « Attribution » simple (régimes non retenus), deux
|
||||
sous licence à attribution dont l'auteur était introuvable dans les métadonnées.
|
||||
|
||||
**Comment on l'interroge.**
|
||||
|
||||
```
|
||||
GET https://commons.wikimedia.org/w/api.php
|
||||
?action=query&generator=search&gsrnamespace=6
|
||||
&gsrsearch="<nom scientifique>" filetype:bitmap
|
||||
&prop=imageinfo&iiprop=url|size|mime|extmetadata
|
||||
&iiextmetadatafilter=LicenseShortName|LicenseUrl|Artist|Credit|ImageDescription|DateTimeOriginal
|
||||
```
|
||||
|
||||
Implémenté dans `tools/data/ingest-commons.mjs`. **Aucun fichier n'est téléchargé** en
|
||||
session 0 : on ne collecte que des métadonnées et des URLs.
|
||||
|
||||
**Résultat de l'audit.** 130 candidats sous licence libre sur 13 taxons, soit au moins 10
|
||||
par taxon. Aucun taxon sous le seuil de deux candidats.
|
||||
|
||||
---
|
||||
|
||||
## 4. iNaturalist — complément, au prix d'un engagement
|
||||
|
||||
**Ce qu'on y prend.** Des photographies pour les espèces mal couvertes par Commons, et des
|
||||
observations géolocalisées aux Antilles (utile pour la saisonnalité par île, mode Sézon).
|
||||
|
||||
**Licence — mesurée, pas supposée.** Échantillon relevé pendant l'audit sur
|
||||
*Chrysobalanus icaco* (zikak), 305 photographies de qualité recherche :
|
||||
|
||||
| licence | photos | part |
|
||||
|---|---|---|
|
||||
| CC BY-NC | 280 | 92 % |
|
||||
| CC0 | 12 | 4 % |
|
||||
| CC BY | 8 | 3 % |
|
||||
| CC BY-NC-SA | 5 | 2 % |
|
||||
|
||||
**94 % du fonds est donc sous clause non commerciale.** Se limiter au non-NC réduirait
|
||||
iNaturalist à un appoint marginal.
|
||||
|
||||
**Contrainte.** Retenir une seule photo NC engage le projet à ne jamais être distribué
|
||||
commercialement (ADR 0001, décision du porteur). Le champ `usage_non_commercial` marque ces
|
||||
médias dans les données, et `CREDITS.md` les isole dans une section dédiée pour rendre un
|
||||
retrait ultérieur possible.
|
||||
|
||||
**Comment on l'interroge.**
|
||||
|
||||
```
|
||||
GET https://api.inaturalist.org/v1/observations
|
||||
?taxon_name=<nom>&quality_grade=research
|
||||
&photo_license=cc0,cc-by,cc-by-sa,cc-by-nc,cc-by-nc-sa
|
||||
&place_id=<Guadeloupe|Martinique> # pour la saisonnalité locale
|
||||
```
|
||||
|
||||
**État à ce jour.** Aucune photo iNaturalist n'est encore embarquée. L'engagement non
|
||||
commercial n'est donc **pas encore consommé**.
|
||||
|
||||
---
|
||||
|
||||
## 5. TRAMIL — ressource majeure, inutilisable sans autorisation
|
||||
|
||||
**Ce qu'on y prend.** Rien, en fichiers. TRAMIL sert de **source de vérification factuelle
|
||||
citée en référence** — usages traditionnels, toxicité, parties de plante concernées — dans
|
||||
le champ `sources_factuelles` de chaque entrée.
|
||||
|
||||
**Licence — vérifiée directement pendant l'audit.**
|
||||
|
||||
- Le pied de page de `tramil.net` affiche : **« © Copyright 2017 TRAMIL all rights
|
||||
reserved. »**
|
||||
- Le lien « Legal notice » du site renvoie une **erreur 404** (`/content/mentions-legales`,
|
||||
vérifié le 2026-07-27).
|
||||
|
||||
Autrement dit : non seulement aucune licence n'est accordée, mais **les conditions ne sont
|
||||
pas même consultables**. Par défaut : tous droits réservés.
|
||||
|
||||
**Contrainte.** La TRAMILothèque (photographies, planches d'herbier, coupes microscopiques,
|
||||
scans) est exactement ce dont ce projet aurait besoin, et est **inutilisable sans
|
||||
autorisation écrite**. Aucun fichier TRAMIL ne peut entrer dans le dépôt tant que cette
|
||||
autorisation n'existe pas.
|
||||
|
||||
**Ce qu'il faut faire — et qui ne se délègue pas.** TRAMIL est hébergé par le SCD de
|
||||
l'Université des Antilles à Schœlcher. Le porteur est à quinze minutes. Un partenariat
|
||||
TRAMIL × OKI sur un jeu scolaire martiniquais a toutes les chances d'aboutir, et
|
||||
transformerait le projet : accès à des images d'herbier vouchées, et une caution
|
||||
scientifique sur le module « Pa touché ».
|
||||
|
||||
Lettre-type prête : `docs/courriers/tramil.md`.
|
||||
|
||||
---
|
||||
|
||||
## 6. CIRAD / Agritrop et INRAE
|
||||
|
||||
**Ce qu'on y prend.** De la vérification factuelle : saisonnalité réelle sous climat
|
||||
antillais, variétés cultivées localement, données agronomiques. Agritrop, le dépôt ouvert
|
||||
du CIRAD, contient de l'open access exploitable en citation.
|
||||
|
||||
**Licence.** Régimes mixtes, majoritairement propriétaires, avec des cas d'usage pédagogique
|
||||
négociables. **À demander, jamais à présumer** — y compris sur un dépôt « ouvert », où
|
||||
l'ouverture porte souvent sur la lecture, pas sur la réutilisation.
|
||||
|
||||
**Comment on l'interroge.** Consultation manuelle d'Agritrop (`agritrop.cirad.fr`), avec
|
||||
enregistrement de la référence dans `sources_factuelles`. Aucune ingestion automatisée : le
|
||||
volume ne le justifie pas et le régime de licence l'interdirait.
|
||||
|
||||
Lettre-type prête : `docs/courriers/cirad.md`.
|
||||
|
||||
---
|
||||
|
||||
## 7. Photographies du porteur — la meilleure source
|
||||
|
||||
Une photographie prise au marché de Fort-de-France vaut mieux que n'importe quelle
|
||||
génération, et mieux que la plupart des photos de Commons : elle montre la variété locale,
|
||||
au bon stade de maturité, dans le contexte où l'enfant la rencontrera.
|
||||
|
||||
**Licence.** Choisie par le porteur. `OKI-CC-BY-SA-4.0` dans le schéma, alignée sur
|
||||
`LICENSE-CONTENT`. Aucune contrainte externe, aucun risque, et aucun compositing interdit
|
||||
puisque le projet en détient les droits.
|
||||
|
||||
**Ce qui manquera nécessairement.** Les vues d'indice — écorce, feuille isolée, coupe nette
|
||||
— sont rares sur Commons pour les espèces antillaises. Ce sont précisément celles dont le
|
||||
mode Kaché a besoin. Une après-midi de terrain avec un appareil comblera plus de trous que
|
||||
n'importe quelle recherche automatisée.
|
||||
|
||||
---
|
||||
|
||||
## Ce que cet audit ne couvre pas
|
||||
|
||||
- La **validité botanique** de chaque photographie : aucune machine ne peut la trancher.
|
||||
- Les **droits voisins des locuteurs** pour les enregistrements audio : autorisation écrite
|
||||
à obtenir avant embarquement, crédit nominatif dans `CREDITS.md`.
|
||||
- La **licence des poids** du modèle utilisé par `rembg` dans le pipeline de filière B
|
||||
(session 3) : les poids ne suivent pas toujours la licence du paquet, à vérifier avant
|
||||
toute utilisation.
|
||||
@@ -0,0 +1,69 @@
|
||||
# Lettre-type — demande d'autorisation CIRAD / INRAE
|
||||
|
||||
> **À adapter et envoyer par le porteur.** Champs à compléter entre crochets.
|
||||
> Le CIRAD dispose d'une implantation en Martinique et en Guadeloupe : privilégier
|
||||
> l'antenne locale plutôt que le siège de Montpellier.
|
||||
>
|
||||
> Régime : mixte, majoritairement propriétaire, avec des usages pédagogiques négociables.
|
||||
> Agritrop (`agritrop.cirad.fr`) est un dépôt ouvert — mais l'ouverture y porte sur la
|
||||
> lecture, pas nécessairement sur la réutilisation. Vérifier la licence pièce par pièce
|
||||
> avant d'en présumer quoi que ce soit. Voir `docs/audit-sources.md` §6.
|
||||
|
||||
---
|
||||
|
||||
**Objet : demande d'usage pédagogique — jeu éducatif libre sur les fruits des Antilles**
|
||||
|
||||
[Lieu], le [date]
|
||||
|
||||
À l'attention de [nom / service communication ou direction régionale Antilles-Guyane],
|
||||
|
||||
Madame, Monsieur,
|
||||
|
||||
ORGANISATION KA INTERNATIONALE, structure établie en [Martinique / Guadeloupe], développe
|
||||
**« KI FWI SA YÉ ? »**, un jeu éducatif gratuit et libre destiné aux enfants de 7 à 12 ans
|
||||
des Antilles, de la Guyane et de La Réunion. Son objet : leur réapprendre à reconnaître et
|
||||
à nommer les fruits et les arbres de leurs îles, en kréyòl d'abord.
|
||||
|
||||
Le projet est non commercial et sans publicité : code sous AGPL-3.0, contenu sous
|
||||
CC BY-SA 4.0, aucun compte, aucun traceur, aucune collecte de données sur les enfants.
|
||||
|
||||
**Notre demande porte sur trois points, par ordre d'importance décroissante.**
|
||||
|
||||
**1. Les données de saisonnalité.** Le jeu comporte un mode « Sézon » où l'enfant place les
|
||||
fruits sur le calendrier de l'année. C'est une connaissance en voie de disparition, et nos
|
||||
données actuelles reposent sur des sources générales, non spécifiques aux Antilles
|
||||
françaises. Vos travaux agronomiques régionaux permettraient de les fonder correctement.
|
||||
Nous sollicitons l'autorisation de citer et d'exploiter ces données pour [liste des espèces],
|
||||
avec citation de la référence complète dans le jeu.
|
||||
|
||||
**2. L'iconographie.** Si votre fonds comporte des photographies exploitables pour ces
|
||||
espèces — en particulier les vues d'écorce, de feuille isolée et de coupe, rares dans les
|
||||
fonds libres — nous serions intéressés par une autorisation d'usage limitée à ce jeu, avec
|
||||
crédit nominatif, sans modification et sans redistribution hors du jeu.
|
||||
|
||||
**3. Une relecture.** Si un de vos chercheurs de l'antenne Antilles acceptait de relire les
|
||||
fiches botaniques (indices de reconnaissance : feuille, écorce, port, coupe), cette
|
||||
relecture serait créditée.
|
||||
|
||||
Nous restons naturellement ouverts à une forme de partenariat qui vous conviendrait mieux,
|
||||
y compris une mention institutionnelle sur la page de crédits du projet.
|
||||
|
||||
Je vous prie d'agréer, Madame, Monsieur, l'expression de ma considération distinguée.
|
||||
|
||||
[Nom]
|
||||
[Fonction] — ORGANISATION KA INTERNATIONALE
|
||||
[courriel] · [téléphone]
|
||||
o-k-i.net
|
||||
|
||||
---
|
||||
|
||||
## Suivi de la demande
|
||||
|
||||
| Date | Action | Interlocuteur | Résultat |
|
||||
|---|---|---|---|
|
||||
| | envoi | | |
|
||||
| | relance | | |
|
||||
| | réponse | | |
|
||||
|
||||
**Tant que la colonne « résultat » est vide, aucun fichier CIRAD ou INRAE n'entre dans le
|
||||
dépôt, et aucune donnée n'est reprise sans citation explicite de sa source.**
|
||||
@@ -0,0 +1,78 @@
|
||||
# Lettre-type — demande d'autorisation TRAMIL
|
||||
|
||||
> **À adapter et envoyer par le porteur.** Champs à compléter entre crochets.
|
||||
> TRAMIL est hébergé par le SCD de l'Université des Antilles, campus de Schœlcher.
|
||||
> Une visite sur place vaut mieux qu'un courriel : le projet est local, l'interlocuteur
|
||||
> aussi, et une demande présentée de vive voix obtient une réponse.
|
||||
>
|
||||
> Contexte juridique de la démarche : `docs/audit-sources.md` §5. Le pied de page de
|
||||
> tramil.net indique « © Copyright 2017 TRAMIL all rights reserved » et la page de mentions
|
||||
> légales du site est inaccessible (404, vérifié le 2026-07-27) — aucune licence n'est donc
|
||||
> accordée, même implicitement.
|
||||
|
||||
---
|
||||
|
||||
**Objet : demande d'autorisation d'usage pédagogique — jeu éducatif libre sur les fruits et plantes des Antilles**
|
||||
|
||||
[Lieu], le [date]
|
||||
|
||||
À l'attention de [nom du responsable / de la coordination TRAMIL],
|
||||
|
||||
Madame, Monsieur,
|
||||
|
||||
Je suis [nom], [fonction] au sein d'ORGANISATION KA INTERNATIONALE, structure établie en
|
||||
[Martinique / Guadeloupe] et spécialisée dans le développement de logiciels libres à
|
||||
vocation culturelle et éducative.
|
||||
|
||||
Nous développons **« KI FWI SA YÉ ? »**, un jeu éducatif gratuit destiné aux enfants de 7 à
|
||||
12 ans des Antilles et de la Guyane. Son objet est de leur réapprendre à reconnaître et à
|
||||
nommer les fruits, les arbres et les plantes de leurs îles — en kréyòl d'abord, le français
|
||||
venant en traduction. Le jeu comprend un module de sécurité consacré aux plantes dangereuses
|
||||
du quotidien : mancenillier, akée non mûr, coque de pomme-cajou, médicinier, laurier-jaune.
|
||||
|
||||
Le projet est **entièrement libre et non commercial** : code sous licence AGPL-3.0, contenu
|
||||
sous CC BY-SA 4.0, aucune publicité, aucun compte utilisateur, aucun traceur, aucune
|
||||
collecte de données sur les enfants. Il est destiné à un usage en classe et en famille, et
|
||||
fonctionne hors ligne pour tenir compte des connexions scolaires.
|
||||
|
||||
**Notre demande porte sur deux points.**
|
||||
|
||||
**1. La TRAMILothèque comme source iconographique.** Vos photographies, planches d'herbier
|
||||
et coupes constituent une ressource sans équivalent pour la région, et surtout une ressource
|
||||
*vouchée* — ce qui est décisif pour un jeu dont l'objet même est l'identification correcte.
|
||||
Nous sollicitons l'autorisation d'utiliser [nombre] images relatives aux espèces suivantes :
|
||||
[liste des espèces], dans le seul cadre de ce jeu et de son encyclopédie associée.
|
||||
|
||||
Nous nous engageons à : créditer nominativement TRAMIL et l'auteur de chaque image à
|
||||
l'endroit où elle apparaît et dans un écran de crédits dédié ; ne procéder à aucune
|
||||
modification ni recomposition des images ; ne pas les redistribuer hors du jeu ; et retirer
|
||||
toute image sur simple demande de votre part.
|
||||
|
||||
**2. Une relecture scientifique du module de sécurité.** Ce module traite de plantes qui
|
||||
provoquent chaque année des accidents chez des enfants aux Antilles. Nous ne souhaitons pas
|
||||
le publier sans qu'un regard compétent l'ait relu. Si l'un de vos collaborateurs acceptait
|
||||
d'en relire le contenu — cinq fiches, une page chacune — cette relecture serait créditée
|
||||
comme telle.
|
||||
|
||||
Nous serions heureux de vous présenter le projet de vive voix, à Schœlcher ou en visio, à
|
||||
votre convenance. Une démonstration de l'état d'avancement prend une vingtaine de minutes.
|
||||
|
||||
Je reste à votre disposition pour toute précision et vous prie d'agréer, Madame, Monsieur,
|
||||
l'expression de ma considération distinguée.
|
||||
|
||||
[Nom]
|
||||
[Fonction] — ORGANISATION KA INTERNATIONALE
|
||||
[courriel] · [téléphone]
|
||||
o-k-i.net
|
||||
|
||||
---
|
||||
|
||||
## Suivi de la demande
|
||||
|
||||
| Date | Action | Interlocuteur | Résultat |
|
||||
|---|---|---|---|
|
||||
| | envoi / visite | | |
|
||||
| | relance | | |
|
||||
| | réponse | | |
|
||||
|
||||
**Tant que la colonne « résultat » est vide, aucun fichier TRAMIL n'entre dans le dépôt.**
|
||||
@@ -0,0 +1,110 @@
|
||||
# Kréyòl à relire
|
||||
|
||||
> **Rien dans ce fichier n'a été tranché par un agent de code.** L'ADR 0005 le pose comme
|
||||
> règle : l'orthographe kréyòl n'est pas du ressort de l'outillage. Ce document **signale**,
|
||||
> il ne corrige pas.
|
||||
>
|
||||
> Norme retenue pour le projet : **gwadloupéyenne** (ADR 0005). Une seule norme, jamais de
|
||||
> mélange. Le schéma n'accepte pas d'autre valeur que `"gwadloupeyen"` dans
|
||||
> `orthographe.norme` — changer d'avis suppose de modifier le schéma, donc de revoir la
|
||||
> décision explicitement.
|
||||
|
||||
## Statut
|
||||
|
||||
**13 entrées sur 13 sont en `statut: "a_relire"`.** Aucune n'est publiable tant qu'un
|
||||
locuteur nommé n'a pas tranché : `npm run validate:data` refuse toute entrée déclarée
|
||||
valide dont l'orthographe n'est pas relue, et toute entrée relue sans nom de relecteur.
|
||||
|
||||
Relecteur désigné : **aucun à ce jour.**
|
||||
|
||||
## 1. Incohérences internes relevées dans la graine
|
||||
|
||||
Les identifiants techniques sont en ASCII sans diacritique — c'est voulu, ils servent de
|
||||
nom de fichier et de segment d'URL, et ne sont jamais affichés. Mais trois d'entre eux
|
||||
diffèrent du nom kréyòl **au-delà des seuls accents**, ce qui suggère une hésitation de
|
||||
graphie, pas une simple translittération :
|
||||
|
||||
| id | `noms.gcf` | Écart constaté |
|
||||
|---|---|---|
|
||||
| `ake` | `aki` | voyelle finale différente : *e* contre *i* |
|
||||
| `medisinye` | `medsinyé` | syllabe supplémentaire : *me-di-* contre *med-* |
|
||||
| `lorye-jonn` | `lorié-jòn` | *lorye* contre *lorié* ; *jonn* contre *jòn* |
|
||||
|
||||
**Question au relecteur :** quelle graphie retenir pour chacun ? Le nom kréyòl
|
||||
(`noms.gcf`) sera corrigé en conséquence. **L'identifiant, lui, ne bougera pas** — il est
|
||||
déjà dans les URLs et dans la progression stockée localement.
|
||||
|
||||
## 2. Graphies à confirmer
|
||||
|
||||
Toutes issues de `fruits.seed.json`, qui déclare lui-même l'ensemble comme non vérifié.
|
||||
Aucune n'est ici présentée comme correcte.
|
||||
|
||||
### Fruits
|
||||
|
||||
| id | graphie de la graine | français |
|
||||
|---|---|---|
|
||||
| `kowosol` | kowosòl | corossol |
|
||||
| `kenet` | kénèt | quenette |
|
||||
| `gouyav` | gouyav | goyave |
|
||||
| `pom-site` | pòm-sitè | prune de Cythère |
|
||||
| `zikak` | zikak | icaque |
|
||||
| `pom-kannel` | pòm-kannèl | pomme-cannelle |
|
||||
| `fwiyapen` | fwiyapen | fruit à pain |
|
||||
| `pom-dlo` | pòm-dlo | pomme d'eau |
|
||||
|
||||
### Plantes du module « Pa touché »
|
||||
|
||||
| id | graphie de la graine | français |
|
||||
|---|---|---|
|
||||
| `mansiniye` | mansiniyé | mancenillier |
|
||||
| `ake` | aki | akée |
|
||||
| `pom-kajou` | pòm-kajou | pomme-cajou |
|
||||
| `medisinye` | medsinyé | médicinier |
|
||||
| `lorye-jonn` | lorié-jòn | laurier jaune |
|
||||
|
||||
**Point d'attention particulier :** la graine a été rédigée sans norme arrêtée, et signale
|
||||
elle-même que les orthographes gwadloupéyenne et matinitjée diffèrent sur plusieurs de ces
|
||||
entrées. Le projet ayant retenu la norme gwadloupéyenne, chaque graphie doit être confirmée
|
||||
dans cette norme — y compris celles qui « paraissent » correctes.
|
||||
|
||||
## 3. Un point qui n'est pas orthographique mais lexical
|
||||
|
||||
`fruits.seed.json` porte cet avertissement sur `pom-dlo`, repris tel quel dans les données :
|
||||
|
||||
> « pòm-dlo », « pòm-malaka » et « pòm-rose » désignent des *Syzygium* **différents** selon
|
||||
> les îles (*S. samarangense*, *S. malaccense*, *S. jambos*).
|
||||
|
||||
C'est un point de confusion classique, et il ne se règle pas par l'orthographe : il faut
|
||||
décider **quel fruit porte quel nom en Guadeloupe**, puis s'y tenir. Un jeu qui enseigne
|
||||
un nom que l'enfant entend appliqué à un autre fruit chez lui produit exactement la
|
||||
confusion qu'il prétend dissiper.
|
||||
|
||||
L'entrée actuelle associe `pòm-dlo` à *Syzygium samarangense*, sur la seule foi de la
|
||||
graine. **Non vérifié.** Trois voies possibles, à trancher par le relecteur : garder,
|
||||
corriger, ou scinder en plusieurs entrées distinctes.
|
||||
|
||||
## 4. Ce qui reste à faire hors relecture
|
||||
|
||||
- **Les enregistrements.** Chaque nom doit être prononcé par une voix humaine locale ; pas
|
||||
de synthèse vocale. La liste de ce qui manque est tenue à jour par
|
||||
`npm run check:audio` → `docs/audio-a-enregistrer.md` (13 noms à enregistrer aujourd'hui).
|
||||
- **La cohérence entre graphie et prononciation.** Le relecteur qui tranche l'orthographe
|
||||
est idéalement celui qui enregistre, ou au moins celui qui écoute les enregistrements.
|
||||
|
||||
## Comment consigner une relecture
|
||||
|
||||
Dans `src/lib/data/fruits/<id>.json` :
|
||||
|
||||
```json
|
||||
"orthographe": {
|
||||
"norme": "gwadloupeyen",
|
||||
"statut": "relu",
|
||||
"relu_par": "Nom du relecteur"
|
||||
}
|
||||
```
|
||||
|
||||
Corriger `noms.gcf` si nécessaire. Ne jamais toucher à `id`. Puis :
|
||||
|
||||
```bash
|
||||
npm run validate:data
|
||||
```
|
||||
+197
@@ -0,0 +1,197 @@
|
||||
# Plan des sessions — KI FWI SA YÉ ?
|
||||
|
||||
> Chaque session se termine par un build vert, un commit et une note de session dans
|
||||
> `docs/sessions/`. **Ne pas enchaîner deux sessions sans relire ce qui a été produit.**
|
||||
>
|
||||
> Une porte de sortie n'est franchie que si elle est **mesurée**, pas estimée. Une porte non
|
||||
> franchie n'autorise pas la session suivante : elle autorise à recommencer celle-ci.
|
||||
|
||||
---
|
||||
|
||||
## Session 0 — Cadre et données ✅ terminée
|
||||
|
||||
**Livré.** Dépôt initialisé, cinq ADR, audit des sept sources, `fruits.schema.json`,
|
||||
validateur exécutable et son test, 13 entrées vérifiées contre Wikidata et GBIF, 39 médias
|
||||
candidats sourcés sur Commons, `CREDITS.md` généré, licences, lettres-types, points à
|
||||
arbitrer.
|
||||
|
||||
**Porte de sortie — franchie.**
|
||||
|
||||
| Critère | Cible | Mesuré |
|
||||
|---|---|---|
|
||||
| Taxons vérifiés contre **deux** référentiels | 13 | 13 ✅ |
|
||||
| Divergences avec la graine | signalées | 0 divergence ✅ |
|
||||
| Médias candidats sous licence libre | ≥ 2 par entrée | 10 par entrée ✅ |
|
||||
| Médias validés | 0 attendu | 0 ✅ |
|
||||
| `npm run validate:data` | vert | vert ✅ |
|
||||
| `npm run test:porte` | 10/10 | 10/10 ✅ |
|
||||
| Code applicatif écrit | aucun | aucun ✅ |
|
||||
|
||||
---
|
||||
|
||||
## Session 1 — Socle
|
||||
|
||||
SvelteKit 2 + Svelte 5 (runes) + TypeScript strict, `adapter-static`, prérendu intégral,
|
||||
`trailingSlash: 'always'`. Tokens OKI (`oki-tokens.css` + `base.css`), thème sombre par
|
||||
défaut et clair en opt-in AA. Polices Archivo et Inter self-hébergées en woff2. PWA légère.
|
||||
i18n par dossiers — `/` en kréyòl, `/fr/`, `/en/`. `/zerbaj/` : une page prérendue par
|
||||
entrée, avec JSON-LD, hreflang et le traitement `PRD_AI_Overview`.
|
||||
|
||||
**Porte de sortie.**
|
||||
|
||||
| Critère | Cible |
|
||||
|---|---|
|
||||
| Fiches en ligne | 13, une page prérendue chacune |
|
||||
| Lighthouse mobile (accueil **et** une fiche) | ≥ 90 / 95 / 95 / 95 |
|
||||
| Contenu lisible avec JavaScript désactivé | intégralement |
|
||||
| JS initial | ≤ 170 Ko gzip |
|
||||
| Requêtes vers un domaine tiers | **0**, vérifié par grep du build |
|
||||
| `npm run check` | 0 erreur, 0 warning |
|
||||
| `svelte-autofixer` sur chaque composant modifié | silencieux |
|
||||
|
||||
**Dépendance humaine :** aucune. La session 1 fonctionne avec 0 média validé — les fiches
|
||||
affichent le texte, la taxonomie et les crédits, pas encore les photos.
|
||||
|
||||
---
|
||||
|
||||
## Session 2 — Moteur pédagogique, en Svelte pur
|
||||
|
||||
Modes **Rekonèt** (photo → 4 propositions, répétition espacée Leitner à 5 boîtes persistée
|
||||
en local), **Kaché** (indices dévoilés un à un : feuille → écorce → coupe → fruit entier,
|
||||
score dégressif) et **Sézon** (calendrier). Album `Lakou`, badges, audio, export de la
|
||||
progression en JSON. Moment de révélation : retournement de la photo, nom kréyòl prononcé,
|
||||
score en count-up (rAF → écriture DOM directe, span `aria-hidden` + valeur finale en
|
||||
`.sr-only` dans une région `aria-live`), fiche ajoutée à l'album.
|
||||
|
||||
**Porte de sortie — la plus importante du projet.**
|
||||
|
||||
| Critère | Cible |
|
||||
|---|---|
|
||||
| **Le jeu est amusant sans Phaser** | jugement humain, sur une partie réelle |
|
||||
| Navigation clavier complète sur les trois modes | vérifiée à la main |
|
||||
| `prefers-reduced-motion` | gate unique au provider, vérifiée à la main |
|
||||
| Progression conservée après rechargement | vérifiée |
|
||||
| Cibles tactiles | ≥ 44 px, testées par `elementFromPoint` en 390 px |
|
||||
| JS initial | toujours ≤ 170 Ko gzip |
|
||||
|
||||
**Si le jeu n'est pas plaisant ici, ne pas passer à la session 3.** Ajouter un moteur de jeu
|
||||
à un problème de game design ajoute du poids au problème. Le mode Sézon reste non publiable
|
||||
tant que le point 3 de `docs/a-arbitrer.md` n'est pas tranché.
|
||||
|
||||
**Dépendance humaine :** au moins deux photos validées par entrée pour que Rekonèt
|
||||
fonctionne sur de vraies données. C'est le premier point de blocage réel du projet.
|
||||
|
||||
---
|
||||
|
||||
## Session 3 — Pipeline d'assets, filière B
|
||||
|
||||
Client ComfyUI dans `tools/assets/`, hors bundle, avec son `requirements.txt`. Seeds
|
||||
déterministes par `zlib.crc32(clé.encode()) & 0xFFFFFFFF` — le `hash()` de Python est
|
||||
randomisé par exécution, les seeds du pack d'origine ne sont donc pas reproductibles malgré
|
||||
ce qu'il annonce. `copy.deepcopy` au lieu de `json.loads(json.dumps(...))`. Sortie AVIF/WebP,
|
||||
atlas de textures par écran, packs par île téléchargeables et mis en cache par le service
|
||||
worker. Licence des **poids** de `rembg` vérifiée, pas seulement celle du paquet.
|
||||
|
||||
**Porte de sortie.**
|
||||
|
||||
| Critère | Cible |
|
||||
|---|---|
|
||||
| Assets non validés dans le build | **0**, refusé par `validate:data` |
|
||||
| Assets de filière B dans une épreuve | **0**, refusé par `validate:data` |
|
||||
| Poids d'entrée du site | ≤ 2 Mo |
|
||||
| Reproductibilité des seeds | deux exécutions → sorties identiques, vérifié par hash |
|
||||
| Appels réseau au runtime | **0** |
|
||||
| Compositing sur un média SA ou NC | **0**, refusé par `validate:data` |
|
||||
|
||||
---
|
||||
|
||||
## Session 4 — Ranmasé (Phaser 4) et Pa touché
|
||||
|
||||
Scène arcade en `phaser@^4`, import dynamique dans `(jeu)/ranmase`, `game.destroy(true)` au
|
||||
démontage, communication par événements. Rendu `AUTO`, DPR ≤ 1,5,
|
||||
`powerPreference: 'low-power'`. Miroir DOM sémantique. Module **Pa touché** : jamais
|
||||
chronométré, jamais scoré, ton sobre et factuel.
|
||||
|
||||
**Porte de sortie.**
|
||||
|
||||
| Critère | Cible |
|
||||
|---|---|
|
||||
| Phaser dans le bundle initial | **absent**, vérifié sur le build |
|
||||
| Shell JS initial, Phaser exclu | ≤ 170 Ko gzip |
|
||||
| Bundle Phaser mesuré et consigné dans l'ADR 0002 | fait |
|
||||
| fps sur Mali-G52 ou équivalent | ≥ 30 stables |
|
||||
| Miroir DOM de la scène | navigable au clavier et au lecteur d'écran |
|
||||
| Écran de chargement designé | présent, en KA |
|
||||
| Module Pa touché | aucun chrono, aucun score, aucune épreuve |
|
||||
|
||||
**Réexamen :** si Phaser dépasse ~450 Ko gzip ou que les 30 fps ne tiennent pas, la scène
|
||||
est réécrite en DOM/CSS (ADR 0002). Les quatre autres modes n'en dépendent pas.
|
||||
|
||||
---
|
||||
|
||||
## Session 5 — Contenu
|
||||
|
||||
Passage de 8 à 24 fruits, 5 plantes dangereuses consolidées. Enregistrement des voix
|
||||
kréyòl. Relecture orthographique. Arbitrage des six points de `docs/a-arbitrer.md`.
|
||||
|
||||
**Porte de sortie.**
|
||||
|
||||
| Critère | Cible |
|
||||
|---|---|
|
||||
| Entrées avec taxonomie vérifiée contre deux référentiels | 29 / 29 |
|
||||
| Entrées en `orthographe.statut: "relu"` avec relecteur nommé | 29 / 29 |
|
||||
| `npm run check:audio` — enregistrements manquants | **0** |
|
||||
| Voix de synthèse | **0** |
|
||||
| Photos validées par entrée, avec validateur nommé | ≥ 2 |
|
||||
| Points de `docs/a-arbitrer.md` tranchés | 6 / 6 |
|
||||
| Module Pa touché relu par un humain compétent | fait, tracé |
|
||||
|
||||
**Cette session est majoritairement du terrain, pas du code.**
|
||||
|
||||
---
|
||||
|
||||
## 🔬 Test en classe — entre la 5 et la 6
|
||||
|
||||
Six enfants, trente minutes, le porteur regarde **sans intervenir**.
|
||||
|
||||
C'est la seule mesure qui compte, et elle invalidera une partie de ce plan. Tant mieux :
|
||||
c'est plus tôt qu'après la livraison. Note d'observation à écrire dans
|
||||
`docs/sessions/test-classe.md` avant la session 6.
|
||||
|
||||
---
|
||||
|
||||
## Session 6 — Finition
|
||||
|
||||
Performance, accessibilité, DoD §8 du playbook, `.htaccess` et `_headers`, déploiement,
|
||||
écran de crédits, tag, push Gitea.
|
||||
|
||||
**Porte de sortie — la DoD intégralement vraie, plus :**
|
||||
|
||||
| Critère | Cible |
|
||||
|---|---|
|
||||
| Requêtes tierces au runtime, sur build de production | **0**, onglet réseau |
|
||||
| Médias sans source, auteur, licence et URL | **0**, vérifié par script |
|
||||
| Épreuves s'appuyant sur un asset généré | **0** |
|
||||
| Jeu entièrement jouable hors ligne après une visite | vérifié en mode avion |
|
||||
| `/zerbaj/` lisible et complet sans JavaScript | vérifié |
|
||||
| Bundle initial | ≤ 170 Ko gzip, Phaser mesuré à part |
|
||||
| Lighthouse mobile, accueil et fiche | ≥ 90 / 95 / 95 / 95 |
|
||||
| Navigation clavier sur les cinq modes | complète |
|
||||
| Écran de crédits dans le jeu | présent, généré depuis les données |
|
||||
|
||||
---
|
||||
|
||||
## Ce qui ne se délègue à aucun agent
|
||||
|
||||
Ces cinq points conditionnent la livraison et ne figurent dans aucune session parce
|
||||
qu'aucune session ne peut les produire :
|
||||
|
||||
1. **Aller voir TRAMIL à Schœlcher.** Lettre prête : `docs/courriers/tramil.md`.
|
||||
2. **Enregistrer les voix kréyòl.** Liste prête : `docs/audio-a-enregistrer.md`.
|
||||
3. **Photographier ce qui manque sur Commons** — il manquera, surtout les vues d'écorce, de
|
||||
feuille isolée et de coupe, celles dont le mode Kaché a besoin.
|
||||
4. **Faire relire l'orthographe kréyòl** par un humain. Points relevés :
|
||||
`docs/kreyol-a-relire.md`.
|
||||
5. **Le test en classe.**
|
||||
|
||||
Le code est la partie facile.
|
||||
@@ -0,0 +1,234 @@
|
||||
# Planche de relecture des médias — filière A
|
||||
|
||||
> Généré par `npm run ingest:commons` le 2026-07-27.
|
||||
> Sortie de script : ne pas éditer à la main, rejouer `npm run ingest:commons`.
|
||||
|
||||
## Ce qui est demandé au porteur
|
||||
|
||||
Pour chaque taxon, ouvrir les pages de description et retenir au moins deux photographies
|
||||
qui montrent réellement l'espèce. Reporter le choix dans `src/lib/data/fruits/<id>.json`,
|
||||
assigner à chaque média sa vue (`fruit_entier`, `coupe`, `feuille`, `ecorce`, `port`),
|
||||
puis passer `valide` à `true` **et seulement alors**.
|
||||
|
||||
Aucune vérification botanique n'a été faite par la machine : l'ordre ci-dessous est celui du
|
||||
moteur de recherche de Commons, rien de plus.
|
||||
|
||||
## `kowosol` — *Annona muricata* (fruit)
|
||||
|
||||
| # | fichier | auteur | licence | dimensions | page de description |
|
||||
|---|---|---|---|---|---|
|
||||
| 1 | Soursop fruit.jpg | USGov | PD | 365×274 | [voir](https://commons.wikimedia.org/wiki/File:Soursop_fruit.jpg) |
|
||||
| 2 | Annona muricata 1.jpg | Damien Boilley from suburbs of Paris, France | CC-BY-2.0 | 960×1280 | [voir](https://commons.wikimedia.org/wiki/File:Annona_muricata_1.jpg) |
|
||||
| 3 | Annona muricata2.jpg | User:Hans_B. | PD | 2592×1944 | [voir](https://commons.wikimedia.org/wiki/File:Annona_muricata2.jpg) |
|
||||
| 4 | Annona muricata Blanco1.196-cropped.jpg | Francisco Manuel Blanco (O.S.A.) | PD | 1300×1620 | [voir](https://commons.wikimedia.org/wiki/File:Annona_muricata_Blanco1.196-cropped.jpg) |
|
||||
| 5 | Kleine zuurzak Maria Sibylla Merian 1705 plate III.png | Maria Sibylla Merian ; engraved by I. Mulder | PD | 1252×1852 | [voir](https://commons.wikimedia.org/wiki/File:Kleine_zuurzak_Maria_Sibylla_Merian_1705_plate_III.png) |
|
||||
| 6 | Guanábana-2.jpg | ViajeroExtraviado | CC0-1.0 | 2446×2444 | [voir](https://commons.wikimedia.org/wiki/File:Guan%C3%A1bana-2.jpg) |
|
||||
| 7 | Aksara Karo Pohon sirsak.jpg | Agus Damanik | CC-BY-SA-4.0 | 3906×5859 | [voir](https://commons.wikimedia.org/wiki/File:Aksara_Karo_Pohon_sirsak.jpg) |
|
||||
| 8 | Un Corossolier 02.jpg | Bérenger504 | CC-BY-SA-4.0 | 6000×4000 | [voir](https://commons.wikimedia.org/wiki/File:Un_Corossolier_02.jpg) |
|
||||
| 9 | Un Corossolier 01.jpg | Bérenger504 | CC-BY-SA-4.0 | 6000×4000 | [voir](https://commons.wikimedia.org/wiki/File:Un_Corossolier_01.jpg) |
|
||||
| 10 | Un Corossolier 03.jpg | Bérenger504 | CC-BY-SA-4.0 | 6000×4000 | [voir](https://commons.wikimedia.org/wiki/File:Un_Corossolier_03.jpg) |
|
||||
|
||||
## `kenet` — *Melicoccus bijugatus* (fruit)
|
||||
|
||||
| # | fichier | auteur | licence | dimensions | page de description |
|
||||
|---|---|---|---|---|---|
|
||||
| 1 | Melicoccus bijugatus.jpg | No machine-readable author provided. Hans B.~commonswiki ass | PD | 2126×1757 | [voir](https://commons.wikimedia.org/wiki/File:Melicoccus_bijugatus.jpg) |
|
||||
| 2 | Cebus capucinus Puntarenas Costa Rica.jpg | kansasphoto | CC-BY-2.0 | 3924×2616 | [voir](https://commons.wikimedia.org/wiki/File:Cebus_capucinus_Puntarenas_Costa_Rica.jpg) |
|
||||
| 3 | Una rama de mamon.jpeg | EEIM | CC-BY-SA-3.0 | 3264×2448 | [voir](https://commons.wikimedia.org/wiki/File:Una_rama_de_mamon.jpeg) |
|
||||
| 4 | Arbol de Huaya (Melicoccus bijugatus).jpg | Acarcano | CC-BY-SA-4.0 | 2336×4160 | [voir](https://commons.wikimedia.org/wiki/File:Arbol_de_Huaya_(Melicoccus_bijugatus).jpg) |
|
||||
| 5 | Melicoccus bijugatus tree.jpg | daveynin | CC-BY-2.0 | 2304×3456 | [voir](https://commons.wikimedia.org/wiki/File:Melicoccus_bijugatus_tree.jpg) |
|
||||
| 6 | Panelera Corozal El Triangulo 07.jpg | Akire gatuna | CC-BY-SA-4.0 | 2160×3840 | [voir](https://commons.wikimedia.org/wiki/File:Panelera_Corozal_El_Triangulo_07.jpg) |
|
||||
| 7 | Starr-091104-9193-Melicoccus bijugatus-plant tag-Kahanu Gardens NTBG K | Forest and Kim Starr | CC-BY-3.0 | 3648×2736 | [voir](https://commons.wikimedia.org/wiki/File:Starr-091104-9193-Melicoccus_bijugatus-plant_tag-Kahanu_Gardens_NTBG_Kaeleku_Hana-Maui_(24361925823).jpg) |
|
||||
| 8 | Starr-091104-9194-Melicoccus bijugatus-trunk and canopy-Kahanu Gardens | Forest and Kim Starr | CC-BY-3.0 | 2736×3648 | [voir](https://commons.wikimedia.org/wiki/File:Starr-091104-9194-Melicoccus_bijugatus-trunk_and_canopy-Kahanu_Gardens_NTBG_Kaeleku_Hana-Maui_(24870791022).jpg) |
|
||||
| 9 | Starr-091104-9196-Melicoccus bijugatus-leaves-Kahanu Gardens NTBG Kael | Forest and Kim Starr | CC-BY-3.0 | 3648×2736 | [voir](https://commons.wikimedia.org/wiki/File:Starr-091104-9196-Melicoccus_bijugatus-leaves-Kahanu_Gardens_NTBG_Kaeleku_Hana-Maui_(24361932503).jpg) |
|
||||
| 10 | Starr-091104-9197-Melicoccus bijugatus-leaves-Kahanu Gardens NTBG Kael | Forest and Kim Starr | CC-BY-3.0 | 2736×3648 | [voir](https://commons.wikimedia.org/wiki/File:Starr-091104-9197-Melicoccus_bijugatus-leaves-Kahanu_Gardens_NTBG_Kaeleku_Hana-Maui_(24870797672).jpg) |
|
||||
|
||||
## `gouyav` — *Psidium guajava* (fruit)
|
||||
|
||||
| # | fichier | auteur | licence | dimensions | page de description |
|
||||
|---|---|---|---|---|---|
|
||||
| 1 | Psidium guajava fruit (2).jpg | Own work | CC-BY-SA-3.0 | 744×768 | [voir](https://commons.wikimedia.org/wiki/File:Psidium_guajava_fruit_(2).jpg) |
|
||||
| 2 | Apple Guava.jpg | Fuadsyazwan ( talk ) | PD | 1632×1224 | [voir](https://commons.wikimedia.org/wiki/File:Apple_Guava.jpg) |
|
||||
| 3 | Starr-111012-8771-Psidium guajava-burnt fruit-Kahana-Maui (24488703784 | Forest and Kim Starr | CC-BY-3.0 | 2592×3456 | [voir](https://commons.wikimedia.org/wiki/File:Starr-111012-8771-Psidium_guajava-burnt_fruit-Kahana-Maui_(24488703784).jpg) |
|
||||
| 4 | Fruta de Goiaba.jpg | Zezinho68 | CC-BY-SA-4.0 | 6016×4000 | [voir](https://commons.wikimedia.org/wiki/File:Fruta_de_Goiaba.jpg) |
|
||||
| 5 | Guava Tree below the sky 01.jpg | Sabina Bajracharya | CC-BY-SA-4.0 | 3456×4608 | [voir](https://commons.wikimedia.org/wiki/File:Guava_Tree_below_the_sky_01.jpg) |
|
||||
| 6 | Guava Tree below the sky 02.jpg | Sabina Bajracharya | CC-BY-SA-4.0 | 3456×4608 | [voir](https://commons.wikimedia.org/wiki/File:Guava_Tree_below_the_sky_02.jpg) |
|
||||
| 7 | Guava Tree 161120.jpg | Sabina Bajracharya | CC-BY-SA-4.0 | 3024×4032 | [voir](https://commons.wikimedia.org/wiki/File:Guava_Tree_161120.jpg) |
|
||||
| 8 | Guava Tree 161116.jpg | Sabina Bajracharya | CC-BY-SA-4.0 | 3024×4032 | [voir](https://commons.wikimedia.org/wiki/File:Guava_Tree_161116.jpg) |
|
||||
| 9 | Guava Leaves.jpg | Arjot | CC-BY-SA-4.0 | 3000×4000 | [voir](https://commons.wikimedia.org/wiki/File:Guava_Leaves.jpg) |
|
||||
| 10 | Common Guava.jpg | Gaurav Dhwaj Khadka | CC-BY-SA-4.0 | 3024×4032 | [voir](https://commons.wikimedia.org/wiki/File:Common_Guava.jpg) |
|
||||
|
||||
## `pom-site` — *Spondias dulcis* (fruit)
|
||||
|
||||
| # | fichier | auteur | licence | dimensions | page de description |
|
||||
|---|---|---|---|---|---|
|
||||
| 1 | Spondia dulcis Blanco1.132.png | Francisco Manuel Blanco (O.S.A.) | PD | 1417×2107 | [voir](https://commons.wikimedia.org/wiki/File:Spondia_dulcis_Blanco1.132.png) |
|
||||
| 2 | Spondia dulcis Blanco1.132-cropped.jpg | Francisco Manuel Blanco (O.S.A.) | PD | 1270×1770 | [voir](https://commons.wikimedia.org/wiki/File:Spondia_dulcis_Blanco1.132-cropped.jpg) |
|
||||
| 3 | Spondia dulcis Blanco1.132.jpg | Francisco Manuel Blanco (O.S.A.) | PD | 1417×2107 | [voir](https://commons.wikimedia.org/wiki/File:Spondia_dulcis_Blanco1.132.jpg) |
|
||||
| 4 | Starr 980529-4218 Spondias dulcis.jpg | Forest & Kim Starr | CC-BY-3.0 | 1800×1200 | [voir](https://commons.wikimedia.org/wiki/File:Starr_980529-4218_Spondias_dulcis.jpg) |
|
||||
| 5 | Owoce Śliwiec słodki.jpg | Agnieszka Kwiecień, Nova | CC-BY-3.0 | 1024×1024 | [voir](https://commons.wikimedia.org/wiki/File:Owoce_%C5%9Aliwiec_s%C5%82odki.jpg) |
|
||||
| 6 | Spondias dulcis seeds.jpg | Tracey Slotta @ USDA-NRCS PLANTS Database | PD | 900×600 | [voir](https://commons.wikimedia.org/wiki/File:Spondias_dulcis_seeds.jpg) |
|
||||
| 7 | 2014-10-11 Spondias dulcis Goldpflaume anagoria.JPG | Anagoria | CC-BY-3.0 | 3750×3168 | [voir](https://commons.wikimedia.org/wiki/File:2014-10-11_Spondias_dulcis_Goldpflaume_anagoria.JPG) |
|
||||
| 8 | Buah kedondong by JJ.jpg | Rombituon | CC-BY-4.0 | 3000×4000 | [voir](https://commons.wikimedia.org/wiki/File:Buah_kedondong_by_JJ.jpg) |
|
||||
| 9 | Spondias dulcis in Tropical Dream Center, Okinawa.jpg | M108t | CC-BY-4.0 | 3000×4000 | [voir](https://commons.wikimedia.org/wiki/File:Spondias_dulcis_in_Tropical_Dream_Center,_Okinawa.jpg) |
|
||||
| 10 | Spondias dulcis leaves in Tropical Dream Center, Okinawa.jpg | M108t | CC-BY-4.0 | 4000×3000 | [voir](https://commons.wikimedia.org/wiki/File:Spondias_dulcis_leaves_in_Tropical_Dream_Center,_Okinawa.jpg) |
|
||||
|
||||
## `zikak` — *Chrysobalanus icaco* (fruit)
|
||||
|
||||
| # | fichier | auteur | licence | dimensions | page de description |
|
||||
|---|---|---|---|---|---|
|
||||
| 1 | Starr 031108-2161 Chrysobalanus icaco.jpg | Forest & Kim Starr | CC-BY-3.0 | 1632×1224 | [voir](https://commons.wikimedia.org/wiki/File:Starr_031108-2161_Chrysobalanus_icaco.jpg) |
|
||||
| 2 | Chrysobalanus icaco (inflorescense).jpg | Hans Hillewaert | CC-BY-SA-3.0 | 2473×3297 | [voir](https://commons.wikimedia.org/wiki/File:Chrysobalanus_icaco_(inflorescense).jpg) |
|
||||
| 3 | Flore médicale des Antilles, ou, Traité des plantes usuelles (Pl. 84) | Descourtilz, J. Theodore.; Descourtilz, M. E.; Pichard. | PD | 1567×2592 | [voir](https://commons.wikimedia.org/wiki/File:Flore_m%C3%A9dicale_des_Antilles,_ou,_Trait%C3%A9_des_plantes_usuelles_(Pl._84)_(8201963925).jpg) |
|
||||
| 4 | Chrysobalanus icaco (Chrysobalanaceae) 01.jpg | Filo gèn' | CC-BY-SA-4.0 | 2112×2304 | [voir](https://commons.wikimedia.org/wiki/File:Chrysobalanus_icaco_(Chrysobalanaceae)_01.jpg) |
|
||||
| 5 | Fruit et feuilles de Chrysobalanus icaco (Chrysobalanaceae).jpg | Filo gèn' | CC-BY-SA-4.0 | 2321×3095 | [voir](https://commons.wikimedia.org/wiki/File:Fruit_et_feuilles_de_Chrysobalanus_icaco_(Chrysobalanaceae).jpg) |
|
||||
| 6 | Icaques.jpg | Filo gèn' | CC-BY-SA-4.0 | 3008×2753 | [voir](https://commons.wikimedia.org/wiki/File:Icaques.jpg) |
|
||||
| 7 | Icaques - fruits.jpg | Filo gèn' | CC-BY-SA-4.0 | 2950×3500 | [voir](https://commons.wikimedia.org/wiki/File:Icaques_-_fruits.jpg) |
|
||||
| 8 | Foliorum compositio - Alterna.jpg | Filo gèn' | CC-BY-SA-4.0 | 620×720 | [voir](https://commons.wikimedia.org/wiki/File:Foliorum_compositio_-_Alterna.jpg) |
|
||||
| 9 | Chrysobalanus icaco - Fruits 01.jpg | Filo gèn' | CC-BY-SA-4.0 | 1534×2048 | [voir](https://commons.wikimedia.org/wiki/File:Chrysobalanus_icaco_-_Fruits_01.jpg) |
|
||||
| 10 | Chrysobalanus icaco - Fruits 02.jpg | Filo gèn' | CC-BY-SA-4.0 | 2261×2528 | [voir](https://commons.wikimedia.org/wiki/File:Chrysobalanus_icaco_-_Fruits_02.jpg) |
|
||||
|
||||
## `pom-kannel` — *Annona squamosa* (fruit)
|
||||
|
||||
| # | fichier | auteur | licence | dimensions | page de description |
|
||||
|---|---|---|---|---|---|
|
||||
| 1 | Annona squamosa (Custurd Apple) plant in Hyderabad, AP W IMG 9354.jpg | J.M.Garg | CC-BY-SA-4.0 | 800×533 | [voir](https://commons.wikimedia.org/wiki/File:Annona_squamosa_(Custurd_Apple)_plant_in_Hyderabad,_AP_W_IMG_9354.jpg) |
|
||||
| 2 | Annona squamosa-fruits-leaves.jpg | Jim Conrad | PD | 650×419 | [voir](https://commons.wikimedia.org/wiki/File:Annona_squamosa-fruits-leaves.jpg) |
|
||||
| 3 | Sharifa.JPG | Miansari66 | CC0-1.0 | 2816×2112 | [voir](https://commons.wikimedia.org/wiki/File:Sharifa.JPG) |
|
||||
| 4 | Annona squamosa leaves at Madhurawada.JPG | Adityamadhav83 | CC-BY-SA-3.0 | 3839×2310 | [voir](https://commons.wikimedia.org/wiki/File:Annona_squamosa_leaves_at_Madhurawada.JPG) |
|
||||
| 5 | Custard apple tree in Hainan - 04.JPG | Anna Frodesiak | CC0-1.0 | 4000×3000 | [voir](https://commons.wikimedia.org/wiki/File:Custard_apple_tree_in_Hainan_-_04.JPG) |
|
||||
| 6 | 1901jfAnnona squamosa Tarlacfvf 01.JPG | Judgefloro | CC-BY-SA-4.0 | 4608×3456 | [voir](https://commons.wikimedia.org/wiki/File:1901jfAnnona_squamosa_Tarlacfvf_01.JPG) |
|
||||
| 7 | Annona squamosa L. (9327977712).jpg | Dinesh Valke from Thane, India | CC-BY-SA-2.0 | 4284×5868 | [voir](https://commons.wikimedia.org/wiki/File:Annona_squamosa_L._(9327977712).jpg) |
|
||||
| 8 | Annona squamosa in Jardin des Plantes de Toulouse 02.jpg | Krzysztof Golik | CC-BY-SA-4.0 | 4000×4722 | [voir](https://commons.wikimedia.org/wiki/File:Annona_squamosa_in_Jardin_des_Plantes_de_Toulouse_02.jpg) |
|
||||
| 9 | 0158jfMalolos Historic Town Center Heritage Bulacanfvf 23.jpg | Judgefloro | CC0-1.0 | 4608×3456 | [voir](https://commons.wikimedia.org/wiki/File:0158jfMalolos_Historic_Town_Center_Heritage_Bulacanfvf_23.jpg) |
|
||||
| 10 | Custard Apple - സീത പഴം 01.jpg | Shijan Kaakkara | CC-BY-SA-4.0 | 3648×2736 | [voir](https://commons.wikimedia.org/wiki/File:Custard_Apple_-_%E0%B4%B8%E0%B5%80%E0%B4%A4_%E0%B4%AA%E0%B4%B4%E0%B4%82_01.jpg) |
|
||||
|
||||
<details><summary>2 fichier(s) écarté(s) automatiquement</summary>
|
||||
|
||||
- File:Mygarden.JPG — licence non reconnue comme libre : Attribution
|
||||
- File:Sugar apple on tree.jpg — licence non reconnue comme libre : GFDL 1.2
|
||||
|
||||
</details>
|
||||
|
||||
## `fwiyapen` — *Artocarpus altilis* (fruit)
|
||||
|
||||
| # | fichier | auteur | licence | dimensions | page de description |
|
||||
|---|---|---|---|---|---|
|
||||
| 1 | Artocarpus incisus Blanco2.267.png | Francisco Manuel Blanco (O.S.A.) | PD | 1379×2020 | [voir](https://commons.wikimedia.org/wiki/File:Artocarpus_incisus_Blanco2.267.png) |
|
||||
| 2 | Starr 031209-0031 Artocarpus altilis.jpg | Forest & Kim Starr | CC-BY-3.0 | 1632×1224 | [voir](https://commons.wikimedia.org/wiki/File:Starr_031209-0031_Artocarpus_altilis.jpg) |
|
||||
| 3 | Artocarpus altilis (fruit).jpg | Hans Hillewaert | CC-BY-SA-3.0 | 2848×3799 | [voir](https://commons.wikimedia.org/wiki/File:Artocarpus_altilis_(fruit).jpg) |
|
||||
| 4 | Artocarpus altilis 439799696.jpg | Bonnie Isaac | CC0-1.0 | 2048×1362 | [voir](https://commons.wikimedia.org/wiki/File:Artocarpus_altilis_439799696.jpg) |
|
||||
| 5 | Artocarpus altilis 399504710.jpg | Marilyne Busque-Dubois | CC-BY-4.0 | 1440×1080 | [voir](https://commons.wikimedia.org/wiki/File:Artocarpus_altilis_399504710.jpg) |
|
||||
| 6 | Artocarpus altilis 376055544.jpg | renjus box | CC-BY-4.0 | 2048×1401 | [voir](https://commons.wikimedia.org/wiki/File:Artocarpus_altilis_376055544.jpg) |
|
||||
| 7 | Artocarpus altilis 366760782.jpg | Akshay | CC0-1.0 | 2048×1536 | [voir](https://commons.wikimedia.org/wiki/File:Artocarpus_altilis_366760782.jpg) |
|
||||
| 8 | Artocarpus altilis 360470185.jpg | Mike Bowie | CC-BY-4.0 | 1536×2048 | [voir](https://commons.wikimedia.org/wiki/File:Artocarpus_altilis_360470185.jpg) |
|
||||
| 9 | Artocarpus altilis 355237308.jpg | monkeyjodey | CC0-1.0 | 1536×2048 | [voir](https://commons.wikimedia.org/wiki/File:Artocarpus_altilis_355237308.jpg) |
|
||||
| 10 | Artocarpus altilis 348826407.jpg | Kiwi Shen | CC-BY-4.0 | 1536×2048 | [voir](https://commons.wikimedia.org/wiki/File:Artocarpus_altilis_348826407.jpg) |
|
||||
|
||||
## `pom-dlo` — *Syzygium samarangense* (fruit)
|
||||
|
||||
| # | fichier | auteur | licence | dimensions | page de description |
|
||||
|---|---|---|---|---|---|
|
||||
| 1 | Champanga flower buds.jpg | Vinayaraj | CC-BY-SA-3.0 | 2073×1590 | [voir](https://commons.wikimedia.org/wiki/File:Champanga_flower_buds.jpg) |
|
||||
| 2 | Lainwu (Wax apple) diamond P00063.JPG | Taiwan7007 | CC-BY-3.0 | 308×330 | [voir](https://commons.wikimedia.org/wiki/File:Lainwu_(Wax_apple)_diamond_P00063.JPG) |
|
||||
| 3 | 9956kfSyzygium samarangense Pampangafvf 05.JPG | Judgefloro | CC-BY-SA-4.0 | 4608×3456 | [voir](https://commons.wikimedia.org/wiki/File:9956kfSyzygium_samarangense_Pampangafvf_05.JPG) |
|
||||
| 4 | Atlas der baumarten von Java (Figur 452) BHL47163274.jpg | Koorders, S. H.; Valeton, Theodoric | PD | 2145×3322 | [voir](https://commons.wikimedia.org/wiki/File:Atlas_der_baumarten_von_Java_(Figur_452)_BHL47163274.jpg) |
|
||||
| 5 | 09564jfSan Rafael Bulacan Maasim River Diliman Paddy Vegetable Fields | Judgefloro | PD | 4608×3456 | [voir](https://commons.wikimedia.org/wiki/File:09564jfSan_Rafael_Bulacan_Maasim_River_Diliman_Paddy_Vegetable_Fields_Roadsfvf_12.JPG) |
|
||||
| 6 | 09592jfSan Rafael Bulacan Syzygium samarangense Diliman Paddy Vegetabl | Judgefloro | PD | 4608×3456 | [voir](https://commons.wikimedia.org/wiki/File:09592jfSan_Rafael_Bulacan_Syzygium_samarangense_Diliman_Paddy_Vegetable_Fields_Roadsfvf_07.JPG) |
|
||||
| 7 | Syzygium samarangense (Rose apple) tree in RDA, Bogra 02.jpg | Afifa Afrin | CC-BY-SA-3.0 | 3456×4608 | [voir](https://commons.wikimedia.org/wiki/File:Syzygium_samarangense_(Rose_apple)_tree_in_RDA,_Bogra_02.jpg) |
|
||||
| 8 | Syzygium samarangense (jamalac ou jambose).jpg | Filo gèn' | CC-BY-SA-4.0 | 4608×3456 | [voir](https://commons.wikimedia.org/wiki/File:Syzygium_samarangense_(jamalac_ou_jambose).jpg) |
|
||||
| 9 | Syzygium samarangense 16zz.jpg | Photo by David J. Stang | CC-BY-SA-4.0 | 2544×1696 | [voir](https://commons.wikimedia.org/wiki/File:Syzygium_samarangense_16zz.jpg) |
|
||||
| 10 | Syzygium samarangense 19zz.jpg | Photo by David J. Stang | CC-BY-SA-4.0 | 2544×1696 | [voir](https://commons.wikimedia.org/wiki/File:Syzygium_samarangense_19zz.jpg) |
|
||||
|
||||
<details><summary>1 fichier(s) écarté(s) automatiquement</summary>
|
||||
|
||||
- File:Wax apple1.jpg — licence à attribution mais auteur introuvable dans les métadonnées
|
||||
|
||||
</details>
|
||||
|
||||
## `mansiniye` — *Hippomane mancinella* (plante_dangereuse)
|
||||
|
||||
| # | fichier | auteur | licence | dimensions | page de description |
|
||||
|---|---|---|---|---|---|
|
||||
| 1 | Hippomane mancinella-Hocquart 1821.jpeg | M. Hocquart | PD | 363×500 | [voir](https://commons.wikimedia.org/wiki/File:Hippomane_mancinella-Hocquart_1821.jpeg) |
|
||||
| 2 | Hyacinthus orientalis and Hippomane mancinella.gif | "The Universal Herbal" by Thomas Green (published 1816–20) | PD | 317×252 | [voir](https://commons.wikimedia.org/wiki/File:Hyacinthus_orientalis_and_Hippomane_mancinella.gif) |
|
||||
| 3 | Hippomane mancinella-Jacquin.jpeg | Nicolás Joseph Jacquin | PD | 500×753 | [voir](https://commons.wikimedia.org/wiki/File:Hippomane_mancinella-Jacquin.jpeg) |
|
||||
| 4 | Galapagos plants II 29.jpg | Klaus Schönitzer | CC-BY-SA-3.0 | 1500×2200 | [voir](https://commons.wikimedia.org/wiki/File:Galapagos_plants_II_29.jpg) |
|
||||
| 5 | Mancenillier1.JPG | Mica | CC-BY-3.0 | 1536×2048 | [voir](https://commons.wikimedia.org/wiki/File:Mancenillier1.JPG) |
|
||||
| 6 | Mancenillier2.JPG | Mica | CC-BY-3.0 | 1536×2048 | [voir](https://commons.wikimedia.org/wiki/File:Mancenillier2.JPG) |
|
||||
| 7 | Hippomane mancinella (fruit).jpg | Hans Hillewaert | CC-BY-SA-3.0 | 3458×2592 | [voir](https://commons.wikimedia.org/wiki/File:Hippomane_mancinella_(fruit).jpg) |
|
||||
| 8 | Hippomane mancenilla port.JPG | Pancrat | CC-BY-SA-3.0 | 1600×1200 | [voir](https://commons.wikimedia.org/wiki/File:Hippomane_mancenilla_port.JPG) |
|
||||
| 9 | T. Green, The universal herbal Wellcome L0025496.jpg | https://wellcomeimages.org/indexplus/obf_images/a5/e8/28f318 | CC-BY-4.0 | 1568×1242 | [voir](https://commons.wikimedia.org/wiki/File:T._Green,_The_universal_herbal_Wellcome_L0025496.jpg) |
|
||||
| 10 | Hippomane mancinella Costa Rica.jpg | Gabriele Kothe-Heinrich | CC-BY-SA-3.0 | 1200×900 | [voir](https://commons.wikimedia.org/wiki/File:Hippomane_mancinella_Costa_Rica.jpg) |
|
||||
|
||||
<details><summary>1 fichier(s) écarté(s) automatiquement</summary>
|
||||
|
||||
- File:The North American sylva, or, A description of the forest trees of the United States, Canada, and Nova Scotia, not described in the work of F. Andrew Michaux (microform) - and containing all the (20632692415).jpg — licence non reconnue comme libre : No restrictions
|
||||
|
||||
</details>
|
||||
|
||||
## `ake` — *Blighia sapida* (plante_dangereuse)
|
||||
|
||||
| # | fichier | auteur | licence | dimensions | page de description |
|
||||
|---|---|---|---|---|---|
|
||||
| 1 | Ackee 001.jpg | Jerome Walker | CC-BY-SA-3.0 | 2848×2136 | [voir](https://commons.wikimedia.org/wiki/File:Ackee_001.jpg) |
|
||||
| 2 | Walter Hood Fitch03.JPG | Walter Hood Fitch | PD | 1194×1732 | [voir](https://commons.wikimedia.org/wiki/File:Walter_Hood_Fitch03.JPG) |
|
||||
| 3 | Owoce Aka.jpg | Agnieszka Kwiecień ( Nova ) | CC-BY-SA-3.0 | 1860×1860 | [voir](https://commons.wikimedia.org/wiki/File:Owoce_Aka.jpg) |
|
||||
| 4 | Flore médicale des Antilles, ou, Traité des plantes usuelles (10559212 | Descourtilz, J. Theodore.; Descourtilz, M. E.; Pichard. | PD | 1557×2889 | [voir](https://commons.wikimedia.org/wiki/File:Flore_m%C3%A9dicale_des_Antilles,_ou,_Trait%C3%A9_des_plantes_usuelles_(10559212793).jpg) |
|
||||
| 5 | Pomological Watercolor POM00007429.jpg | Newton, Amanda Almira, ca. 1860-1943 | PD | 2715×4000 | [voir](https://commons.wikimedia.org/wiki/File:Pomological_Watercolor_POM00007429.jpg) |
|
||||
| 6 | Pommier d’aki à Taneka, Commune de Copargo, département de la Donga au | Saliousoft | CC-BY-SA-4.0 | 9216×6912 | [voir](https://commons.wikimedia.org/wiki/File:Pommier_d%E2%80%99aki_%C3%A0_Taneka,_Commune_de_Copargo,_d%C3%A9partement_de_la_Donga_au_B%C3%A9nin_01.jpg) |
|
||||
| 7 | Blighia sapida3.jpg | DouglasGoldman | CC-BY-SA-4.0 | 1814×2710 | [voir](https://commons.wikimedia.org/wiki/File:Blighia_sapida3.jpg) |
|
||||
| 8 | Blighia sapida5.jpg | DouglasGoldman | CC-BY-SA-4.0 | 1814×2710 | [voir](https://commons.wikimedia.org/wiki/File:Blighia_sapida5.jpg) |
|
||||
| 9 | Blighia sapida8.jpg | DouglasGoldman | CC-BY-SA-4.0 | 2710×1814 | [voir](https://commons.wikimedia.org/wiki/File:Blighia_sapida8.jpg) |
|
||||
| 10 | Blighia sapida10.jpg | DouglasGoldman | CC-BY-SA-4.0 | 2710×1814 | [voir](https://commons.wikimedia.org/wiki/File:Blighia_sapida10.jpg) |
|
||||
|
||||
## `pom-kajou` — *Anacardium occidentale* (plante_dangereuse)
|
||||
|
||||
| # | fichier | auteur | licence | dimensions | page de description |
|
||||
|---|---|---|---|---|---|
|
||||
| 1 | Anacardium occidentale - Köhler–s Medizinal-Pflanzen-010.jpg | Franz Eugen Köhler, Köhler's Medizinal-Pflanzen | PD | 425×589 | [voir](https://commons.wikimedia.org/wiki/File:Anacardium_occidentale_-_K%C3%B6hler%E2%80%93s_Medizinal-Pflanzen-010.jpg) |
|
||||
| 2 | Cashew2-flower.JPG | Aruna at Malayalam Wikipedia | CC-BY-SA-3.0 | 1024×768 | [voir](https://commons.wikimedia.org/wiki/File:Cashew2-flower.JPG) |
|
||||
| 3 | Cashew apples.jpg | Abhishek Jacob | CC-BY-SA-3.0 | 2534×1982 | [voir](https://commons.wikimedia.org/wiki/File:Cashew_apples.jpg) |
|
||||
| 4 | Cashew flower fruit seed.JPG | ସୁରଥ କୁମାର ପାଢ଼ୀ | CC-BY-SA-3.0 | 4000×3000 | [voir](https://commons.wikimedia.org/wiki/File:Cashew_flower_fruit_seed.JPG) |
|
||||
| 5 | Anacardium occidentale Thailand 2013-05-03wb.JPG | Strobilomyces | CC-BY-SA-3.0 | 2816×2112 | [voir](https://commons.wikimedia.org/wiki/File:Anacardium_occidentale_Thailand_2013-05-03wb.JPG) |
|
||||
| 6 | Cashew 4334.JPG | Primejyothi | CC-BY-SA-3.0 | 3888×2592 | [voir](https://commons.wikimedia.org/wiki/File:Cashew_4334.JPG) |
|
||||
| 7 | Cashew 4335.JPG | Primejyothi | CC-BY-SA-3.0 | 2592×3888 | [voir](https://commons.wikimedia.org/wiki/File:Cashew_4335.JPG) |
|
||||
| 8 | Anacardium occidentale 01.JPG | Vinayaraj | CC-BY-SA-3.0 | 2580×3588 | [voir](https://commons.wikimedia.org/wiki/File:Anacardium_occidentale_01.JPG) |
|
||||
| 9 | Anacardium occidentale 08.JPG | Vinayaraj | CC-BY-SA-3.0 | 2532×3648 | [voir](https://commons.wikimedia.org/wiki/File:Anacardium_occidentale_08.JPG) |
|
||||
| 10 | Fleurs et noix de cajou.jpg | Xof | CC-BY-SA-4.0 | 4608×3456 | [voir](https://commons.wikimedia.org/wiki/File:Fleurs_et_noix_de_cajou.jpg) |
|
||||
|
||||
## `medisinye` — *Jatropha curcas* (plante_dangereuse)
|
||||
|
||||
| # | fichier | auteur | licence | dimensions | page de description |
|
||||
|---|---|---|---|---|---|
|
||||
| 1 | Jatropha curcas Blanco2.384.jpg | Francisco Manuel Blanco (O.S.A.) | PD | 1411×2061 | [voir](https://commons.wikimedia.org/wiki/File:Jatropha_curcas_Blanco2.384.jpg) |
|
||||
| 2 | Jatropha curcas Blanco2.384-cropped.jpg | Francisco Manuel Blanco (O.S.A.) | PD | 1300×1870 | [voir](https://commons.wikimedia.org/wiki/File:Jatropha_curcas_Blanco2.384-cropped.jpg) |
|
||||
| 3 | Georg Forster - Purgiernuss.jpeg | Georg Forster | PD | 1836×2658 | [voir](https://commons.wikimedia.org/wiki/File:Georg_Forster_-_Purgiernuss.jpeg) |
|
||||
| 4 | Jatropha curcas 11 (4350031767).jpg | Ton Rulkens from Mozambique | CC-BY-SA-2.0 | 768×1024 | [voir](https://commons.wikimedia.org/wiki/File:Jatropha_curcas_11_(4350031767).jpg) |
|
||||
| 5 | Starr-120620-9733-Jatropha curcas-seedlings in duff-Kula Agriculture P | Forest and Kim Starr | CC-BY-3.0 | 3456×2592 | [voir](https://commons.wikimedia.org/wiki/File:Starr-120620-9733-Jatropha_curcas-seedlings_in_duff-Kula_Agriculture_Park-Maui_(25185489735).jpg) |
|
||||
| 6 | Starr-120620-9735-Jatropha curcas-seedlings in debris near parent plan | Forest and Kim Starr | CC-BY-3.0 | 2592×3456 | [voir](https://commons.wikimedia.org/wiki/File:Starr-120620-9735-Jatropha_curcas-seedlings_in_debris_near_parent_plantings-Kula_Agriculture_Park-Maui_(24558649453).jpg) |
|
||||
| 7 | Starr-120620-9736-Jatropha curcas-seedlings in debris near parent plan | Forest and Kim Starr | CC-BY-3.0 | 3456×2592 | [voir](https://commons.wikimedia.org/wiki/File:Starr-120620-9736-Jatropha_curcas-seedlings_in_debris_near_parent_plantings-Kula_Agriculture_Park-Maui_(25159146496).jpg) |
|
||||
| 8 | Starr-120620-7537-Jatropha curcas-seedling in duff-Kula Agriculture Pa | Forest and Kim Starr | CC-BY-3.0 | 2736×3648 | [voir](https://commons.wikimedia.org/wiki/File:Starr-120620-7537-Jatropha_curcas-seedling_in_duff-Kula_Agriculture_Park-Maui_(24850192310).jpg) |
|
||||
| 9 | Starr-120620-7538-Jatropha curcas-biofuel trial plantings-Kula Agricul | Forest and Kim Starr | CC-BY-3.0 | 3648×2736 | [voir](https://commons.wikimedia.org/wiki/File:Starr-120620-7538-Jatropha_curcas-biofuel_trial_plantings-Kula_Agriculture_Park-Maui_(25119515196).jpg) |
|
||||
| 10 | Starr-120620-7541-Jatropha curcas-seedling-Kula Agriculture Park-Maui | Forest and Kim Starr | CC-BY-3.0 | 2736×3648 | [voir](https://commons.wikimedia.org/wiki/File:Starr-120620-7541-Jatropha_curcas-seedling-Kula_Agriculture_Park-Maui_(24519017633).jpg) |
|
||||
|
||||
<details><summary>1 fichier(s) écarté(s) automatiquement</summary>
|
||||
|
||||
- File:Jatropha curcas1 henning.jpg — licence à attribution mais auteur introuvable dans les métadonnées
|
||||
|
||||
</details>
|
||||
|
||||
## `lorye-jonn` — *Cascabela thevetia* (plante_dangereuse)
|
||||
|
||||
| # | fichier | auteur | licence | dimensions | page de description |
|
||||
|---|---|---|---|---|---|
|
||||
| 1 | Thevetia peruviana1.jpg | No machine-readable author provided. Hans B.~commonswiki ass | PD | 2592×1944 | [voir](https://commons.wikimedia.org/wiki/File:Thevetia_peruviana1.jpg) |
|
||||
| 2 | Yellow Oleander (Thevetia peruviana) leaves & flowers in Kolkata W IMG | J.M.Garg | CC-BY-SA-3.0 | 619×600 | [voir](https://commons.wikimedia.org/wiki/File:Yellow_Oleander_(Thevetia_peruviana)_leaves_%26_flowers_in_Kolkata_W_IMG_8008.jpg) |
|
||||
| 3 | Starr 060916-8881 Thevetia peruviana.jpg | Forest & Kim Starr | CC-BY-3.0 | 2592×1944 | [voir](https://commons.wikimedia.org/wiki/File:Starr_060916-8881_Thevetia_peruviana.jpg) |
|
||||
| 4 | Starr 080609-7918 Thevetia peruviana.jpg | Forest & Kim Starr | CC-BY-3.0 | 2112×2816 | [voir](https://commons.wikimedia.org/wiki/File:Starr_080609-7918_Thevetia_peruviana.jpg) |
|
||||
| 5 | Thevetia peruviana plant.jpg | Vinayaraj | CC-BY-SA-3.0 | 2556×3648 | [voir](https://commons.wikimedia.org/wiki/File:Thevetia_peruviana_plant.jpg) |
|
||||
| 6 | Tarrafal-Thevetia peruviana (2).jpg | Ji-Elle | CC-BY-SA-3.0 | 3648×2736 | [voir](https://commons.wikimedia.org/wiki/File:Tarrafal-Thevetia_peruviana_(2).jpg) |
|
||||
| 7 | Cascabela thevetia 10.JPG | Vinayaraj | CC-BY-SA-3.0 | 3648×2736 | [voir](https://commons.wikimedia.org/wiki/File:Cascabela_thevetia_10.JPG) |
|
||||
| 8 | Thevetia peruviana 'Alba' (338607342).jpg | Dinesh Valke from Thane, India | CC-BY-SA-2.0 | 2816×2112 | [voir](https://commons.wikimedia.org/wiki/File:Thevetia_peruviana_%27Alba%27_(338607342).jpg) |
|
||||
| 9 | Thevetia peruviana 15zz.jpg | Photo by David J. Stang | CC-BY-SA-4.0 | 3504×2336 | [voir](https://commons.wikimedia.org/wiki/File:Thevetia_peruviana_15zz.jpg) |
|
||||
| 10 | Thevetia peruviana 28zz.jpg | Photo by David J. Stang | CC-BY-SA-4.0 | 3504×2336 | [voir](https://commons.wikimedia.org/wiki/File:Thevetia_peruviana_28zz.jpg) |
|
||||
@@ -0,0 +1,171 @@
|
||||
# Session 0 — Cadre et données
|
||||
|
||||
**Date :** 2026-07-27 · **Type de mission :** B (création *ex nihilo*) · **Code applicatif écrit : aucun.**
|
||||
|
||||
---
|
||||
|
||||
## Ce qui a été fait
|
||||
|
||||
**Gouvernance.** `git init` et commit de protection des documents de cadrage **avant toute
|
||||
autre action** (playbook §5b.1 — atlas-fediverse avait été perdu faute de ce réflexe). Le
|
||||
pack de référence `doc2sveltekit-transition/` reste local et non versionné, conformément au
|
||||
playbook §0. Branche `main`.
|
||||
|
||||
**Cadre.** Cinq ADR, `LICENSE` (AGPL-3.0-or-later, texte canonique récupéré depuis gnu.org),
|
||||
`LICENSE-CONTENT`, audit des sept sources, `SOURCES.md`, deux lettres-types.
|
||||
|
||||
**Outillage.** Six scripts dans `tools/data/`, tous hors bundle :
|
||||
|
||||
| Commande | Rôle |
|
||||
|---|---|
|
||||
| `npm run verify:taxa` | vérifie 13 taxons contre Wikidata (SPARQL) et GBIF |
|
||||
| `npm run ingest:commons` | remonte les photos candidates sous licence libre |
|
||||
| `npm run build:dataset` | compose les entrées ; refuse d'écraser sans `--force` |
|
||||
| `npm run validate:data` | **la porte** — schéma + règles métier, sortie non nulle = build refusé |
|
||||
| `npm run test:porte` | prouve que la porte refuse les 9 cas interdits |
|
||||
| `npm run build:credits` | régénère `CREDITS.md` depuis les données |
|
||||
| `npm run check:audio` | liste les enregistrements kréyòl manquants |
|
||||
|
||||
**Données.** 13 entrées dans `src/lib/data/fruits/`, 39 médias candidats, 0 validé.
|
||||
|
||||
---
|
||||
|
||||
## Ce que la vérification a appris
|
||||
|
||||
### La graine était bonne sur la taxonomie
|
||||
|
||||
**13 taxons sur 13** trouvés dans Wikidata par correspondance exacte sur `P225`, et
|
||||
**13 sur 13** acceptés par GBIF en `matchType: EXACT`, `status: ACCEPTED`. **Zéro divergence**
|
||||
sur les familles annoncées dans `fruits.seed.json`.
|
||||
|
||||
Y compris *Cascabela thevetia* pour le laurier-jaune, alors que le synonyme
|
||||
*Thevetia peruviana* circule largement. Le contrôle du statut GBIF était écrit pour attraper
|
||||
exactement ce cas ; il n'a rien trouvé à corriger. C'est le bon résultat, et il est
|
||||
maintenant **vérifié plutôt que supposé** — `docs/verification-taxons.md`.
|
||||
|
||||
### Aucune machine ne peut valider une photo
|
||||
|
||||
La recherche Commons sur *Melicoccus bijugatus* (kénèt) remonte en deuxième position une
|
||||
photographie de **singe capucin** mangeant le fruit. Le moteur de recherche classe par
|
||||
pertinence textuelle, pas par contenu botanique.
|
||||
|
||||
Cette observation a produit une décision de conception : le schéma distingue désormais
|
||||
`photo`, `planche_botanique` et `image_generee`. Les fonds Commons contiennent beaucoup de
|
||||
planches anciennes du domaine public — Blanco, Merian — exactes mais stylisées. Une planche
|
||||
documente une fiche ; elle ne peut pas porter une épreuve de reconnaissance du réel.
|
||||
|
||||
Sur 39 médias candidats retenus : **25 photographies, 14 planches botaniques.**
|
||||
|
||||
### Le mancenillier n'a aucune photographie dans le haut de sa pile
|
||||
|
||||
Trois entrées comptent moins de deux photographies parmi leurs trois premiers candidats :
|
||||
|
||||
| entrée | photos sur 3 candidats | ce que Commons remonte en tête |
|
||||
|---|---|---|
|
||||
| `mansiniye` (mancenillier) | **0** | trois planches gravées — Jacquin 1780, Green 1816-20, Hocquart 1821 |
|
||||
| `pom-site` (pòm-sitè) | **0** | planches, dont deux Blanco |
|
||||
| `medisinye` (medsinyé) | 1 | |
|
||||
|
||||
C'est l'entrée la plus critique du module « Pa touché » qui est la moins bien servie. Un
|
||||
enfant doit reconnaître un mancenillier **sur une plage**, pas sur une gravure de 1780. Il
|
||||
faudra descendre plus bas dans les dix candidats de `docs/planche-relecture-medias.md`, ou
|
||||
photographier l'arbre sur le littoral — il est signalé par une bande de peinture rouge, ce
|
||||
qui rend la séance de terrain praticable et sans risque de confusion.
|
||||
|
||||
Le pré-tri qui produit cette classification a lui-même été corrigé en cours de session : la
|
||||
planche de Jacquin ressortait d'abord en « photo » parce que ni son titre ni son auteur ne
|
||||
disent son siècle. La date de prise de vue est désormais examinée, et toute date antérieure
|
||||
à 1900 classe le média en planche. Ce pré-tri reste **un tri, pas un verdict** : c'est le
|
||||
relecteur humain qui corrige le champ.
|
||||
|
||||
### TRAMIL : la situation est pire que ce que le brief supposait
|
||||
|
||||
Vérification directe le 2026-07-27 : le pied de page de `tramil.net` affiche
|
||||
« © Copyright 2017 TRAMIL all rights reserved », et le lien « Legal notice » du site renvoie
|
||||
une **404**. Les conditions d'usage ne sont donc même pas consultables. La demande écrite
|
||||
n'est pas une précaution, c'est la seule voie.
|
||||
|
||||
### iNaturalist : 93 % de non commercial, mesuré
|
||||
|
||||
Échantillon de 305 photographies de qualité recherche sur *Chrysobalanus icaco* : 280 en
|
||||
CC BY-NC, 12 en CC0, 8 en CC BY, 5 en CC BY-NC-SA. Se limiter au non-NC réduirait
|
||||
iNaturalist à un appoint marginal — ce qui donne son poids réel à la décision du porteur.
|
||||
|
||||
---
|
||||
|
||||
## Écarts constatés et signalés, non corrigés en silence
|
||||
|
||||
Le brief §9 impose de signaler les écarts plutôt que de les corriger discrètement.
|
||||
|
||||
1. **Le champ `danger` de la graine a deux formes.** Les niveaux « vigilance » (kénèt,
|
||||
pòm-kannèl) portent leur texte dans `note`, les niveaux « élevé » et « critique » dans
|
||||
`resume`. Le schéma impose un champ unique : la composition normalise vers `resume`, sans
|
||||
réécrire un mot. C'est la porte de validation qui a levé l'incohérence, pas une relecture.
|
||||
|
||||
2. **Trois identifiants divergent du nom kréyòl au-delà des accents** : `ake`/`aki`,
|
||||
`medisinye`/`medsinyé`, `lorye-jonn`/`lorié-jòn`. Non tranchés — `docs/kreyol-a-relire.md`.
|
||||
|
||||
3. **Deux planches Blanco produisaient le même identifiant de média** une fois tronquées à
|
||||
60 caractères. Désambiguïsées par suffixe plutôt que perdues.
|
||||
|
||||
4. **`comestible: false` sur l'akée et la pomme-cajou** est une sous-estimation assumée :
|
||||
les deux se mangent sous conditions strictes. Le choix prudent était le seul défendable
|
||||
sans arbitrage humain — `docs/a-arbitrer.md` §1.
|
||||
|
||||
5. **Le brief demandait 8 fruits ; 13 entrées ont été produites** (les 5 plantes du module
|
||||
« Pa touché » incluses, sur décision du porteur). La vérification coûtait le même effort
|
||||
et le contenu de sécurité demande le plus long délai de relecture.
|
||||
|
||||
---
|
||||
|
||||
## La porte de validation
|
||||
|
||||
Le brief §2 exigeait que le contrôle soit « un script de build, pas une consigne ».
|
||||
`tools/data/validate.mjs` refuse :
|
||||
|
||||
- une épreuve ou un indice s'appuyant sur un média non validé, non photographique, de
|
||||
filière B, ou dont la vue n'est pas renseignée ;
|
||||
- un média à attribution dont l'auteur est absent ;
|
||||
- un compositing sur un média en partage à l'identique ou sous clause non commerciale ;
|
||||
- une validation sans nom de validateur ;
|
||||
- une épreuve portée par une plante dangereuse ;
|
||||
- une entrée publiée avec moins de deux photos validées, ou dont l'orthographe kréyòl n'est
|
||||
pas relue par un humain nommé.
|
||||
|
||||
`npm run test:porte` fabrique ces neuf cas et vérifie que le refus se produit, plus un cas
|
||||
témoin conforme qui doit passer. **10/10.** Une règle de sécurité qu'on n'a jamais vue
|
||||
refuser quelque chose est une intention, pas une règle.
|
||||
|
||||
---
|
||||
|
||||
## Ce qui bloque la suite
|
||||
|
||||
| Blocage | Bloque | Qui peut le lever |
|
||||
|---|---|---|
|
||||
| 0 média validé | Rekonèt sur données réelles (session 2) | le porteur, `docs/planche-relecture-medias.md` |
|
||||
| Aucun relecteur kréyòl désigné | toute publication | le porteur |
|
||||
| 13 enregistrements manquants | le moment de révélation | une après-midi d'enregistrement |
|
||||
| Saisonnalité non sourcée | publication du mode Sézon | CIRAD, lettre prête |
|
||||
| 6 points non arbitrés | publication | le porteur, `docs/a-arbitrer.md` |
|
||||
|
||||
**Le premier travail non délégable est la planche de relecture des médias.** La session 1 ne
|
||||
l'exige pas — les fiches affichent texte, taxonomie et crédits sans photo. La session 2, si.
|
||||
|
||||
---
|
||||
|
||||
## Vérifications de fin de session
|
||||
|
||||
```
|
||||
npm run verify:taxa → 13 taxons, 0 divergence
|
||||
npm run ingest:commons → 130 candidats, 0 taxon sous le seuil de 2
|
||||
npm run validate:data → 13 entrées, 39 médias, 0 validé, 0 erreur
|
||||
npm run test:porte → 10/10
|
||||
npm run build:credits → 13 entrées, 39 médias, 0 sous clause NC
|
||||
npm run check:audio → 13 enregistrements à réaliser
|
||||
```
|
||||
|
||||
Dépendances installées : `ajv` et `ajv-formats` uniquement, toutes deux importées et
|
||||
utilisées (playbook §2.2 — aucune dépendance installée sans être utilisée).
|
||||
|
||||
**Prochaine session : 1 — Socle.** Ne pas la démarrer sans avoir relu ce document et
|
||||
`docs/plan.md`.
|
||||
@@ -0,0 +1,22 @@
|
||||
# Vérification taxonomique — Wikidata × GBIF
|
||||
|
||||
> Généré par `npm run verify:taxa` le 2026-07-27.
|
||||
> Ne pas éditer à la main : rejouer le script quand la graine change.
|
||||
|
||||
| id | nom de la graine | Wikidata | famille WD | GBIF | statut GBIF | famille GBIF | écarts |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| `kowosol` | *Annona muricata* | Q1709343 | Annonaceae | 5407273 | ACCEPTED | Annonaceae | aucun |
|
||||
| `kenet` | *Melicoccus bijugatus* | Q279728 | Sapindaceae | 3189990 | ACCEPTED | Sapindaceae | aucun |
|
||||
| `gouyav` | *Psidium guajava* | Q166843 | Myrtaceae | 5420380 | ACCEPTED | Myrtaceae | aucun |
|
||||
| `pom-site` | *Spondias dulcis* | Q500383 | Anacardiaceae | 3190595 | ACCEPTED | Anacardiaceae | aucun |
|
||||
| `zikak` | *Chrysobalanus icaco* | Q577669 | Chrysobalanaceae | 2985082 | ACCEPTED | Chrysobalanaceae | aucun |
|
||||
| `pom-kannel` | *Annona squamosa* | Q275620 | Annonaceae | 5407099 | ACCEPTED | Annonaceae | aucun |
|
||||
| `fwiyapen` | *Artocarpus altilis* | Q14677 | Moraceae | 2984573 | ACCEPTED | Moraceae | aucun |
|
||||
| `pom-dlo` | *Syzygium samarangense* | Q11643111 | Myrtaceae | 3183180 | ACCEPTED | Myrtaceae | aucun |
|
||||
| `mansiniye` | *Hippomane mancinella* | Q636480 | Euphorbiaceae | 3063705 | ACCEPTED | Euphorbiaceae | aucun |
|
||||
| `ake` | *Blighia sapida* | Q417145 | Sapindaceae | 3189955 | ACCEPTED | Sapindaceae | aucun |
|
||||
| `pom-kajou` | *Anacardium occidentale* | Q34007 | Anacardiaceae | 5421368 | ACCEPTED | Anacardiaceae | aucun |
|
||||
| `medisinye` | *Jatropha curcas* | Q74644 | Euphorbiaceae | 3072953 | ACCEPTED | Euphorbiaceae | aucun |
|
||||
| `lorye-jonn` | *Cascabela thevetia* | Q10694475 | Apocynaceae | 3169652 | ACCEPTED | Apocynaceae | aucun |
|
||||
|
||||
**0 entrée(s) sur 13 présentent au moins un écart.**
|
||||
Reference in New Issue
Block a user