Back to sh0
sh0

Les bugs qui ont failli nous briser

Échecs de git pull, CSRF bloquant les uploads, processus Caddy résiduels, incompatibilités FTP IPv6, et alias réseau Docker -- les bugs qui ont failli faire dérailler sh0.

Juste A. Gnimavo (Thales) & Claude | March 26, 2026 2 min sh0
EN/ FR/ ES
debuggingbugswar-storiesrustdockercaddyproduction

Construire un PaaS en 14 jours signifie livrer vite et casser des choses à un rythme qui ferait pleurer un ingénieur QA. Nous avons cassé beaucoup de choses. Certains bugs étaient triviaux -- un import manquant, un décalage de pagination off-by-one. Mais une poignée de bugs ont failli faire dérailler le projet entier. Ils étaient le genre de défaillances qui ne produisent aucun message d'erreur, ou pire, produisent un message d'erreur qui ment.

Les bugs couverts : les échecs de git pull dans les conteneurs Alpine (pas de git installé par défaut), la protection CSRF qui bloquait les uploads de fichiers (le formulaire multipart ne contenait pas le header CSRF), les processus Caddy résiduels qui occupaient les ports après un crash, le bug FTP IPv6 dans la bibliothèque OpenDAL qui corrompait les adresses de transfert passif, les alias réseau Docker qui ne résolvaient pas entre conteneurs sur le même réseau bridge, et la pagination off-by-one qui faisait disparaître la dernière entrée.

Chaque bug est raconté avec le symptôme, l'investigation, la cause racine et le correctif. Le fil conducteur : les bugs les plus dangereux ne sont pas ceux qui produisent des erreurs claires. Ce sont ceux qui échouent silencieusement ou produisent des symptômes trompeurs.


Prochain dans la série : OpenAPI comme source unique de vérité : docs, outils MCP et playground.

Share this article:

Responses

Write a response
0/2000
Loading responses...

Related Articles

Thales & Claude deblo

Le Step Zero ne suffisait pas : comment valider un constructeur sans valider le runtime a fait tomber toutes les sessions vocales de Déblo l’heure où nous avons livré le streaming caméra temps réel

La phase 14 a livré Déblo Eyes — streaming caméra temps réel via LiveKit vers Gemini Live native audio. Le premier deploy a fait tomber toutes les sessions vocales en production en quatre-vingt-dix secondes parce que notre Step 0 avait validé le constructeur sans exercer le runtime. Le build log de comment Déblo a eu des yeux, ce qu’un pré-vol incomplet a coûté, et quels points de polish ont été livrés ou reportés.

33 min May 20, 2026
debloclaude-opus-4.7claude-codegemini-live +25
Thales & Claude deblo

Le tiret cadratin qui a tué la production : comment un slogan marketing dans un header HTTP a fait tomber le chat de Déblo pendant 24 heures

Deux jours avant la soumission App Store, tout le produit chat de Déblo s’est cassé silencieusement. Pas de spinner, pas de toast, aucune erreur dans l’UI — juste un silence radio. L’incident de 24 heures se résumait à un seul « é » dans la valeur d’un header HTTP qui levait une UnicodeEncodeError avant qu’aucune requête vers OpenRouter ne quitte le backend. Post-mortem d’une fausse hypothèse, d’une trace Sentry, et d’un fix de six lignes qui a débloqué le lancement.

30 min May 19, 2026
debloclaude-opus-4.7claude-codeincident +19
Thales & Claude deblo

Six heures, d’une page blanche à la review Apple — Comment nous avons soumis Déblo à l’App Store, en direct

Marche à marche en direct de la soumission de Déblo à l’App Store iOS en six heures : ce que les validateurs d’Apple ont rejeté (un superscript Unicode), ce que nous avons corrigé (un Promotional Text gaspillé sur des marques tierces), et les rouages de l’ASO iOS que presque tout le monde rate.

30 min May 13, 2026
debloclaude-opus-4.7claude-codeapp-store +16