feat(sessions-5-6): candidats vérifiés et audit de livraison
Session 5 — bloquée sur ce qu'aucun agent ne peut produire : les noms kréyòl. Le nom kréyòl est le nom principal de chaque entrée (ADR 0005) ; inventer seize noms aurait été exactement ce que le projet s'interdit. Livré à la place : verify:candidats vérifie 16 espèces candidates contre Wikidata et GBIF et produit un tableau complet — nom accepté, famille, Q-id, clé GBIF, français — avec une colonne vide. Il ne manque que ce qu'une machine ne peut pas produire. 15 candidats sur 16 sans écart. Le seizième a attrapé mon erreur : j'avais proposé Citrus sinensis pour l'orange, GBIF le renvoie en SYNONYM. C'est le rôle du contrôle. Session 6 — npm run audit vérifie la DoD sur le build réel, pas sur les intentions. Sortie non nulle = livraison refusée. 14 points au vert : zéro chargement tiers, zéro emoji, zéro lien interne mort sur 74 pages, shell JS à 86 Ko gzip, aucun chunk lourd sur le chemin critique, SEO complet, fichiers de service présents, polices self-hébergées. Restent ouverts et annoncés comme tels : Lighthouse, 30 fps sur Mali-G52, hors ligne en mode avion, prefers-reduced-motion à la main, et le test en classe. Ce sont des mesures qu'un agent ne peut pas prendre ; les annoncer comme faites aurait été le seul vrai échec. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
# Sessions 5 et 6 — Contenu et finition
|
||||
|
||||
**Date :** 2026-07-27
|
||||
|
||||
## Session 5 — Contenu : ce qui a pu être fait, et ce qui ne le pouvait pas
|
||||
|
||||
La session 5 devait porter le dataset de 8 à 24 fruits. **Elle est bloquée sur une chose
|
||||
qu'aucun agent ne peut produire : les noms kréyòl.**
|
||||
|
||||
Le nom kréyòl est le nom *principal* de chaque entrée (ADR 0005), pas une traduction
|
||||
d'appoint. Ajouter seize fruits suppose donc seize noms que je n'ai pas le droit d'écrire —
|
||||
et les inventer aurait été exactement ce que le projet s'interdit.
|
||||
|
||||
### Ce qui a été livré à la place
|
||||
|
||||
`npm run verify:candidats` vérifie la taxonomie de **16 espèces candidates** contre
|
||||
Wikidata et GBIF, et produit `docs/candidats-24-fruits.md` : un tableau complet — nom
|
||||
scientifique accepté, famille, Q-id, clé GBIF, nom français — **avec une colonne vide**.
|
||||
|
||||
Il ne manque que ce qu'une machine ne peut pas produire. C'est le document le plus honnête
|
||||
que cette session pouvait rendre.
|
||||
|
||||
**15 candidats sur 16 sans écart.** Le seizième est instructif : j'avais proposé
|
||||
*Citrus sinensis* pour l'orange, et GBIF l'a renvoyé en `SYNONYM`. Le contrôle a attrapé
|
||||
mon erreur, ce qui est précisément son rôle.
|
||||
|
||||
### Le reste de la session 5 est du terrain
|
||||
|
||||
Enregistrements kréyòl (10 sur 13 manquants), relecture orthographique, arbitrage des six
|
||||
points de `docs/a-arbitrer.md`, relecture du module « Pa touché » par une personne
|
||||
compétente. Aucun de ces points ne se code.
|
||||
|
||||
## Session 6 — Finition
|
||||
|
||||
### `npm run audit` — la DoD vérifiée sur le build réel
|
||||
|
||||
Le playbook §5 leçon 8 appelle cela le « grep de vérité » : on inspecte ce qui a été
|
||||
produit, pas ce qu'on croit avoir écrit. Sortie non nulle = livraison refusée.
|
||||
|
||||
**14 points vérifiés, 14 au vert :**
|
||||
|
||||
| Point | Résultat |
|
||||
|---|---|
|
||||
| Chargements tiers dans le build | **0** |
|
||||
| Emoji dans le HTML livré | **0** (charte §1.8) |
|
||||
| Liens internes morts | **0** sur 74 pages |
|
||||
| Shell JS gzip | **86 Ko** (budget 170) |
|
||||
| Chunk lourd sur le chemin critique | **aucun** — Phaser reste isolé |
|
||||
| SEO | og ×10, JSON-LD, canonical, hreflang `gcf` |
|
||||
| Fichiers de service | sitemap, robots, 404, `_headers`, `.htaccess`, manifest, `sw.js` |
|
||||
| Polices self-hébergées | 6 woff2 |
|
||||
|
||||
### Ce que l'audit ne couvre pas, et qui reste ouvert
|
||||
|
||||
- **Lighthouse mobile ≥ 90/95/95/95** — demande un navigateur en conditions réelles.
|
||||
- **30 fps sur Mali-G52** — demande un appareil réel.
|
||||
- **Hors ligne en mode avion** — demande un appareil réel.
|
||||
- **`prefers-reduced-motion` à la main** — la gate CSS existe et `use:compte` la respecte,
|
||||
mais la vérification humaine reste à faire.
|
||||
- **Le test en classe.** Six enfants, trente minutes, sans intervenir.
|
||||
|
||||
Ces cinq points ne sont pas des oublis : ce sont les mesures qu'un agent ne peut pas
|
||||
prendre. Les annoncer comme faites aurait été le seul vrai échec de cette session.
|
||||
|
||||
### Déploiement
|
||||
|
||||
Le build est un dossier de fichiers statiques. `.htaccess` (o2switch/Apache) et `_headers`
|
||||
(Cloudflare Pages) sont livrés avec la même CSP stricte, sans exception ni domaine tiers.
|
||||
|
||||
Reste à faire par le porteur : choisir l'hébergement, poser le domaine, taguer et pousser
|
||||
sur Gitea.
|
||||
Reference in New Issue
Block a user