2026-07-26 23:47:27 -04:00
|
|
|
# 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 |
|
2026-07-27 10:12:35 -04:00
|
|
|
| `npm run rapport:manques` | mesure les manques, dans le projet et dans les fonds publics |
|
2026-07-26 23:47:27 -04:00
|
|
|
|
|
|
|
|
**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.
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
2026-07-27 10:12:35 -04:00
|
|
|
## Ajout en cours de session — la dimension participative
|
|
|
|
|
|
|
|
|
|
Décision du porteur : les manques ne se masquent pas, ils se publient. ADR 0006, guide
|
|
|
|
|
[`contribuer.md`](../contribuer.md), inventaire mesuré [`manques.md`](../manques.md), et
|
|
|
|
|
appel public à la libération des données TRAMIL en brouillon.
|
|
|
|
|
|
|
|
|
|
### Ce que la mesure a révélé
|
|
|
|
|
|
|
|
|
|
**Le kréyòl est absent des communs numériques.** Wikidata enregistre **124 noms
|
|
|
|
|
vernaculaires** pour les 13 espèces — 33 pour le fruit à pain, 22 pour la pomme d'eau, 12
|
|
|
|
|
pour la goyave, en chinois, anglais, portugais, slovène. **Zéro en kréyòl**, et aucune
|
|
|
|
|
étiquette de langue `gcf` sur aucun des 13 items. C'est la contribution la moins coûteuse du
|
|
|
|
|
projet — cinq minutes par entrée, aucun matériel — et l'une des plus durables. Elle suppose
|
|
|
|
|
en revanche une orthographe relue : à faire après la relecture kréyòl, jamais avant.
|
|
|
|
|
|
|
|
|
|
**L'écorce est la vue qui manque.** Après correction de la mesure, il reste 3 trous sur 65
|
|
|
|
|
dans les fonds libres, et les trois sont des écorces : mansiniyé (0 fichier), aki (0),
|
|
|
|
|
kénèt (1). Trois autres sont tout juste au seuil. C'est cohérent avec la pratique — on
|
|
|
|
|
photographie un fruit, rarement un tronc — et c'est fâcheux, parce que l'écorce est l'indice
|
|
|
|
|
le plus fiable sur le terrain : un tronc est visible toute l'année, un fruit quelques mois.
|
|
|
|
|
|
|
|
|
|
**Pl@ntNet est un meilleur canal de contribution que iNaturalist.** Mesuré sur le zikak en
|
|
|
|
|
Guadeloupe : les images iNaturalist sont à ~93 % en CC BY-NC, celles de Pl@ntNet apparaissent
|
|
|
|
|
en CC BY-SA (jeu de données GBIF sous CC BY 4.0). À effort égal pour le contributeur, la
|
|
|
|
|
seconde voie produit des images pleinement réutilisables. D'où le conseil mis en avant dans
|
|
|
|
|
le guide : régler sa licence par défaut sur iNaturalist une fois pour toutes.
|
|
|
|
|
|
2026-07-27 10:40:23 -04:00
|
|
|
### La langue devient participative — et la communauté existait déjà
|
|
|
|
|
|
|
|
|
|
Second ajout du porteur : demander aux locuteurs, sur l'orthographe comme sur la
|
|
|
|
|
prononciation, plutôt que d'attendre un relecteur unique. ADR 0005 amendé, protocole dans
|
|
|
|
|
[`kreyol-participatif.md`](../kreyol-participatif.md).
|
|
|
|
|
|
|
|
|
|
**Découverte en interrogeant Lingua Libre**, l'atelier d'enregistrement de Wikimedia :
|
|
|
|
|
**456 enregistrements en kréyòl gwadloupéyen** y sont déjà publiés sous licence libre, versés
|
|
|
|
|
pour l'essentiel par un contributeur nommé « Palé Kréyol ». Et **trois de nos treize noms s'y
|
|
|
|
|
trouvaient déjà** — `gouyav`, `kénèt`, `zikak` — en CC BY-SA 4.0, **avec exactement notre
|
|
|
|
|
graphie**.
|
|
|
|
|
|
|
|
|
|
Trois entrées sortent donc du doute par corroboration externe, sans que le projet ait rien
|
|
|
|
|
décidé, et trois enregistrements sont immédiatement utilisables. La leçon dépasse le cas :
|
|
|
|
|
la question n'était pas de savoir qui trancherait, mais d'aller regarder si quelqu'un
|
|
|
|
|
l'avait déjà fait.
|
|
|
|
|
|
|
|
|
|
En regard, le kréyòl reste absent des données structurées : **0 lexème Wikidata** en kréyòl
|
|
|
|
|
gwadloupéyen, 0 étiquette `gcf` sur les treize items.
|
|
|
|
|
|
|
|
|
|
**Ce que le modèle de données gagne.** Trois états d'orthographe au lieu de deux —
|
|
|
|
|
`a_relire`, `en_discussion`, `relu` — avec obligation de poser la question quand un doute est
|
|
|
|
|
signalé ; un champ `variantes_gcf` qui conserve les usages proposés avec leur source et leur
|
|
|
|
|
île, sans en effacer aucun ; un bloc `audio` qui porte source, licence, page d'origine et
|
|
|
|
|
locuteur crédité. Quatre entrées passent en `en_discussion` : `ake`, `medisinye`,
|
|
|
|
|
`lorye-jonn`, `pom-dlo`.
|
|
|
|
|
|
|
|
|
|
**Un pis-aller assumé.** Les quatre questions sont rédigées en français. Demander en français
|
|
|
|
|
à des locuteurs kréyòl de corriger du kréyòl est un contresens — mais les rédiger en kréyòl
|
|
|
|
|
reviendrait à produire du kréyòl non relu au moment même où l'on reconnaît ne pas savoir le
|
|
|
|
|
faire. Leur traduction est la première contribution demandée.
|
|
|
|
|
|
2026-07-27 10:12:35 -04:00
|
|
|
### Une mesure fausse, attrapée avant publication
|
|
|
|
|
|
|
|
|
|
Le premier rapport annonçait **28 vues manquantes sur 65**. C'était faux. Le groupement `OR`
|
|
|
|
|
de la recherche Commons ne se comporte pas comme attendu : sur *Annona muricata*, `section`
|
|
|
|
|
seul remonte 17 fichiers là où `(section OR sliced OR cut OR coupe)` en remonte 0. Le signal
|
|
|
|
|
d'alerte était que `coupe` ressortait à zéro pour les **treize** espèces — Commons contient
|
|
|
|
|
évidemment des photos de corossol coupé.
|
|
|
|
|
|
|
|
|
|
Après correction — un mot, une requête, avec gestion du débit des API —, le chiffre réel est
|
|
|
|
|
**3 sur 65**.
|
|
|
|
|
|
|
|
|
|
Publier les 28 aurait envoyé des bénévoles photographier ce qui existait déjà. La leçon est
|
|
|
|
|
consignée dans l'ADR 0006 : une mesure qui produit un résultat extrême se suspecte avant de
|
|
|
|
|
se publier, et une réponse d'API illisible ne se compte jamais comme un zéro.
|
|
|
|
|
|
2026-07-26 23:47:27 -04:00
|
|
|
## É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
|
2026-07-27 10:12:35 -04:00
|
|
|
npm run rapport:manques → 3 vues manquantes sur 65, 0 nom kréyòl sur Wikidata
|
2026-07-26 23:47:27 -04:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
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`.
|