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>
8.4 KiB
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.
-
Le champ
dangerde la graine a deux formes. Les niveaux « vigilance » (kénèt, pòm-kannèl) portent leur texte dansnote, les niveaux « élevé » et « critique » dansresume. Le schéma impose un champ unique : la composition normalise versresume, sans réécrire un mot. C'est la porte de validation qui a levé l'incohérence, pas une relecture. -
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. -
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.
-
comestible: falsesur 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. -
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.