8.7 KiB
8.7 KiB
Mission : JWE â Audit post-exĂ©cution, vĂ©rifications obligatoires & recommandations
à exécuter par chaque agent à la fin de sa tùche, avant de la marquer « terminée »
La refonte JWE a été produite à partir du prompt de mission v2 (Svelte 5 + SvelteKit 2, MapLibre, SQLite, 4 régions : Guadeloupe, Martinique, Guyane, La Réunion). Cet audit est la seconde passe. Aucune tùche n'est terminée sans son rapport de vérification (format §6). Un FAIL non résolu bloque la livraison. Si le correctif dépasse le scope de l'agent, l'agent produit une RECOMMANDATION argumentée au lieu de coder.
0. Faits Ă©tablis (Ă lire avant tout â ils corrigent le prompt v2)
- Le QID d'exemple du prompt v2 était faux : Fort DelgrÚs =
Q3077840(vĂ©rifiĂ©), pasQ2216838. Ses coordonnĂ©es officielles sont 15°59âČ19âłN, 61°43âČ23âłO (â 15.9886, -61.7231), pas (16.0036, -61.7319). Si le seed ou l'exemple a Ă©tĂ© copiĂ© tel quel, corriger. - Principe absolu : fetch, pas recall. Tout QID, toute coordonnĂ©e, toute URL photo, toute licence doit ĂȘtre vĂ©rifiĂ© par une requĂȘte rĂ©elle, jamais depuis la mĂ©moire du modĂšle.
- Les communes de Guyane sont immenses (Maripasoula â 18 000 kmÂČ, Saint-Laurent-du-Maroni â 4 800 kmÂČ). Un radius de score fixe par difficultĂ© y est injuste.
- La Réunion est à ~12 000 km des Antilles : un
maxBoundsglobal couvrant les 4 régions rend une carte inutilisable (95 % d'océan), et un zoom automatique sur la région du lieu au début du round révÚle la réponse. - Un lieu sans page Wikipedia a rarement une photo sur Wikimedia Commons : le piÚge « 2-3 lieux sans article frwiki avec photo libre » exige des photos propres (collectif OKI) ou Panoramax.
1. Agent Contenu â vĂ©rifications donnĂ©es
- C1 â QID valides (bloquant). Pour CHAQUE lieu avec
wikidata_idnon null :Le sitelinkcurl "https://www.wikidata.org/w/api.php?action=wbgetentities&ids=<QID>&props=sitelinks|labels&languages=fr&format=json" -H "User-Agent: JWE-OKI/1.0"frwikidoit exister et correspondre au lieu (comparer le label). Preuve : tableaulieu â QID â sitelink frwiki â OK/KOdans le rapport. - C2 â Les « null » sont de vrais null (bloquant). Pour chaque lieu Ă
wikidata_id: nullintentionnel, prouver par une recherche API (action=query&list=searchsur frwiki) qu'aucun article frwiki n'existe. Sinon le lieu ne teste pas le Cas B. - C3 â CoordonnĂ©es prĂ©cises. Ăcart < 500 m avec la source officielle (Wikidata
P625, IGN, geo.api.gouv.fr). Corriger le seed Fort DelgrĂšs (voir §0.1). - C4 â Photos sans fuite. (a) Noms de fichiers opaques (
uuid.webp, jamaisfort-delgres.webpâ le nom ne doit pas rĂ©vĂ©ler la rĂ©ponse dans les devtools). (b) EXIF strippĂ©s : preuveexiftool <fichier>sans GPS ni appareil. (c) Licence vĂ©rifiable : page de description Commons atteignable, crĂ©dit et licence exacts dans le JSON. - C5 â Photos des lieux « null ». Source documentĂ©e : photo propre OKI (crĂ©dit collectif) ou Panoramax (instance + ID + licence). Si introuvable : remplacer le lieu, ne jamais garder une photo sans licence claire.
2. Agent Architecte â vĂ©rifications dĂ©cisions
- A1 â Score juste en Guyane (bloquant). VĂ©rifier que la formule utilise un radius effectif :
radius_eff = max(radius_difficultĂ©, rayon_commune)avecrayon_commune â sqrt(aire_commune / Ï). L'aire peut ĂȘtre prĂ©calculĂ©e dans le JSON du lieu (champaire_commune_km2) ou dĂ©rivĂ©e du contour geo.api.gouv.fr. Test Ă produire : un guess Ă 40 km du chef-lieu de Maripasoula ne doit pas ĂȘtre quasi-nul. - A2 â Pas de fuite de rĂ©gion (bloquant). Au dĂ©but d'un round, la camĂ©ra ne doit rĂ©vĂ©ler ni la rĂ©gion ni la commune du lieu. Si la solution retenue est la devinette en deux temps (choix de la rĂ©gion via 4 boutons â zoom â placement du marqueur), vĂ©rifier que le scoring combine les deux Ă©tapes et que c'est documentĂ© dans l'ADR. Si une autre solution a Ă©tĂ© codĂ©e, vĂ©rifier l'absence de fuite et l'usage mobile.
- A3 â ChaĂźne Wikipedia exacte.
wbgetentities(props=sitelinks)â titre frwiki âfr.wikipedia.org/api/rest_v1/page/summary/{titre}. Cache â„ 24 h (pas de « temps rĂ©el »). User-Agent explicite cĂŽtĂ© proxy. Fallback de langue documentĂ© : fr â en. Cas intermĂ©diaire tranchĂ© et documentĂ© : QID existant mais pas d'article frwiki â recommandĂ© : afficher le Cas B variante « pas encore d'article en français â et si tu le traduisais/crĂ©ais ? ». - A4 â DĂ©cision Strapi vs SvelteKit. L'ADR doit appliquer le critĂšre du prompt (contributeurs non-devs ?). En l'absence de contributeurs non-devs aujourd'hui, la cohĂ©rence doctrine OKI = SvelteKit seul + JSON versionnĂ© + script de validation au commit. Si Strapi a Ă©tĂ© retenu, l'ADR doit justifier par des contributeurs rĂ©els identifiĂ©s.
- A5 â Hors scope respectĂ©. Pas de comptes utilisateurs, pas de leaderboard serveur, pas de multijoueur. Scores en
localStorage. Tout écart = FAIL ou RECOMMANDATION de suppression.
3. Agent Back-end â vĂ©rifications (si applicable)
- B1 â Endpoint lieu alĂ©atoire sans fuite (bloquant). Preuve
curl: la rĂ©ponse ne contient nicoordonnees, nicommune, ni indice de rĂ©gion ; URL photo opaque. - B2 â Score calculĂ© cĂŽtĂ© serveur (bloquant). Le client envoie
{lieu_id, lat, lon, rĂ©gion_choisie?, indices_utilisĂ©s, temps}; le serveur calcule (formule A1) et renvoie score + distance + coordonnĂ©es rĂ©elles. Le client ne calcule rien. - B3 â Proxy Wikipedia. Cache effectif (headers ou store, TTL â„ 24 h), User-Agent conforme, aucun texte d'article stockĂ© en base (contrainte §2.3 du prompt v2).
- B4 â Pas de dĂ©pendance propriĂ©taire. Audit
package.json: zéro clé API payante, zéro Google/Mapbox, télémétrie désactivée.
4. Agent Front-end â vĂ©rifications
- F1 â Carte. Bounds effectifs, aucune fuite de rĂ©gion (voir A2), MapLibre lazy-loadĂ© (vĂ©rifier le chunk rĂ©seau : pas de JS MapLibre sur l'accueil), boutons zoom visibles, navigation clavier.
- F2 â Cas A / Cas B (bloquant). Les deux Ă©crans de rĂ©sultat sont visuellement distincts (couleur, icĂŽne), le message de lacune est prĂ©sent en FR et en crĂ©ole, et le CTA « KontribyĂ© sou WikipĂ©dia » ouvre bien l'Ă©diteur/recherche prĂ©-remplie ou le guide OKI. Captures Ă l'appui.
- F3 â Cas intermĂ©diaire gĂ©rĂ©. QID prĂ©sent mais pas d'article frwiki : pas d'Ă©cran vide ni d'erreur console ; comportement conforme Ă la dĂ©cision A3.
- F4 â Ăcran rĂ©sultat enrichi. Si le contour de commune est intĂ©grĂ© (geo.api.gouv.fr, gratuit sans clĂ© :
https://geo.api.gouv.fr/communes?code=<insee>&fields=nom,contour&format=json&geometry=contour), vĂ©rifier l'affichage du polygone et le respect deprefers-reduced-motionsur l'animation du marqueur. - F5 â Doctrine OKI. Une seule action primaire par Ă©cran ; bouton Valider en zone du pouce sur mobile ; timer non anxiogĂšne ; micro-interactions en crĂ©ole ; style carte non-Google.
- F6 â Performance 4G caribĂ©en. Premier Ă©cran < 3 s en throttling 4G ; photos WebP/AVIF avec
srcsetet lazy loading ; poids d'un round (hors tiles) mesuré et indiqué dans le rapport.
5. Agent QA â passe finale
- Q1 â Rejouer les bloquants. C1, C2, A1, A2, B1, B2, F2 au minimum, avec preuves.
- Q2 â Partie complĂšte dans chaque mode (KonnĂšt moniman, Kote mwen ye ?, DĂ©fi 5 rounds, Aprann), mobile et desktop, dont au moins un round tombant sur un lieu Cas B et un lieu guyanais.
- Q3 â Checklist OKI du prompt v2 §4 (Agent IntĂ©gration & QA) intĂ©gralement passĂ©e.
- Q4 â Scope creep. Signaler toute feature absente du prompt v2 (auth, comptes, partage rĂ©seau social, analyticsâŠ).
- Q5 â Core Web Vitals mobile 4G mesurĂ©s (LCP, INP, CLS) et consignĂ©s.
6. Format du rapport de vérification (obligatoire, un par agent)
| ID | VĂ©rification | MĂ©thode / Preuve (commande, requĂȘte, capture) | PASS/FAIL | Correctif appliquĂ© |
|----|--------------|-----------------------------------------------|-----------|--------------------|
Suivi d'une section Recommandations pour tout ce qui dépasse le scope, triée : bloquant / important / confort, avec pour chacune : problÚme, solution proposée, effort estimé (S/M/L), fichier(s) concerné(s).
Commits atomiques préfixés : verify: (preuves), fix: (correctifs), docs: (ADR, rapport).
7. Interdits pendant l'audit
- Aucune nouvelle feature (l'audit corrige et recommande, il n'étend pas).
- Aucun refactor hors correctif de FAIL.
- Aucun PASS sans preuve exécutable ou capture.
- Ne pas « rĂ©parer » une donnĂ©e (QID, coordonnĂ©e, licence) depuis la mĂ©moire : requĂȘte rĂ©elle ou suppression du lieu.