<aside> 🕳️
Si vous ne lisez qu'un chapitre, lisez celui-ci. Tout le monde vend l'IA qui réussit ; voici le catalogue de ce qu'elle rate, tenu jour après jour pendant la construction d'une app de santé. Chaque cas est daté, nommé, tiré du journal des sessions ; rien n'est reconstitué de mémoire. Premier jet posé le 14 août 2026 ; densifié et relu le 15 août 2026, depuis les 369 fragments collectés pour ce seul chapitre.
</aside>
Je ne code pas. Pendant six semaines, des dizaines de sessions d'IA ont construit Limbra sous ma direction, et elles ont produit un travail que je n'aurais jamais pu faire seul. Elles ont aussi raté, régulièrement, d'une manière que personne ne raconte : pas des pannes spectaculaires, des erreurs plausibles. Des chiffres exacts qui mesurent la mauvaise chose. Des commentaires de code qui décrivent une version qui n'existe plus. Des pannes inventées. La seule raison pour laquelle aucun de ces ratés n'a atteint l'application publiée, c'est qu'un système entier existait pour les attraper : un vrai téléphone, des agents relecteurs, des scripts de contrôle, et moi. Ce chapitre raconte ce que le filet a attrapé.
Le raté le plus fréquent ne vient pas du code : il vient de l'énoncé. Une session d'IA obéit ; si la consigne repose sur une prémisse fausse, elle livre avec application un correctif pour un défaut qui n'existe pas, et laisse le vrai défaut ouvert. La parade est devenue un rituel : vérifier la prémisse sur le disque avant d'obéir.
C'est la famille d'erreurs la plus dangereuse pour un non-dev, parce qu'un chiffre a l'air d'une preuve. J'ai appris à me méfier des nombres exacts : un ratio de contraste peut être calculé parfaitement, contre une paire de couleurs qui n'existe pas à l'écran.
<aside> 📏
Le plus beau bug du projet (12 août, session MAPPROX) : sur la Carte des substances, les noms dérivaient jusqu'à 243 pixels de leur cercle au zoom maximum. Cause mesurée : la boîte du nom vivait en coordonnées écran, son ancrage était resté en coordonnées monde. Traduction, verbatim des archives : « Le geste même qu'on fait pour lire les noms — zoomer — les éloignait de leur point. »
</aside>
Un commentaire de code qui décrit une version antérieure est indiscernable d'un commentaire juste. C'est devenu un garde-fou écrit du projet, parce que le cas est revenu sans cesse : le code fait une chose, sa documentation en jure une autre, et la prochaine session lira la documentation.
Le projet vit sur des scripts de vérification : contrastes, collisions, intégrité documentaire. Alors la question est devenue : qui vérifie les vérificateurs ? Réponse honnête : parfois personne, et ça s'est vu.
L'IA ne fait pas qu'introduire des bugs : elle en invente. Des diagnostics plausibles, argumentés, sur des défauts qui n'existent pas. C'est le raté le plus coûteux en temps, parce qu'il envoie tout le monde corriger du vide.
<aside> 👻
11 août (sessions PWAPASSE puis correction) : un audit déclare la saisie d'une consommation cassée ; le verdict de bêta fermée est suspendu une demi-journée. Le bloquant n'a jamais existé : un clic unique sur un bouton à deux temps, et un test mené sur un environnement déjà dégradé. Leçon gravée dans les archives : « Une lecture de source qui contredit un symptôme observé n'est pas une note de bas de page : c'est le signal qu'il faut EXÉCUTER avant d'écrire le symptôme comme un défaut. »
</aside>