Blog
All articles. All pillars. All authors.
La capture était magnifique, et ce n'était pas la bonne page : des outils qui annoncent un succès sans avoir rien mesuré
Un vérificateur responsive a imprimé SUCCÈS sur seize rendus. Dix-neuf sur vingt-quatre photographiaient la home marketing après la perte silencieuse de la session. Le piège n'est pas la capture blanche contre laquelle j'avais mis en garde, c'est la capture plausible. Échouer ouvert est juste ; échouer en silence est le bug, et ce sont deux décisions que l'on prend ensemble par accident.
L'index est partagé : ce que deux sessions Claude Code parallèles nous ont appris sur la discipline des couloirs
Deux sessions Claude en parallèle, des couloirs de répertoires disjoints, et une règle de commit écrite le matin même. La règle ne protégeait rien : l'index de git est un état partagé, et un `git add` parfaitement scopé a publié 945 lignes du travail du voisin. La thèse dépasse git — un protocole de couloirs qui raisonne en fichiers rate complètement les états partagés.
Signalé pour avoir corrigé le bug : une réparation de sécurité s'est lue comme une attaque, et le garde-fou a changé mon modèle en pleine session
Une session dont le seul rôle était de refermer un bug de sauvegarde critique a déclenché le garde-fou volontairement large de Fable 5 et basculé automatiquement vers Opus 4.8. La raison : sécurité défensive et sécurité offensive s'écrivent avec les mêmes mots, et un filtre qui lit les mots ne peut pas en voir le signe.
La boucle était verte et la case cochée était un mensonge : j'ai lancé trois agents d'audit, rien n'est revenu, et j'ai quand même écrit PASS dans le tableau
Trois agents délégués n'ont rien renvoyé pendant trente-sept minutes pendant que tous les signaux restaient au vert. Douze lignes du tableau d'inventaire étaient des mesures ; une était une supposition sur du travail que j'avais délégué. Cette ligne affichait PASS, et c'était la seule qui était fausse.
Ta config a changé, tes documents non : un validateur au vert, cinq faits faux, et la couche qui manquait à CASP
Une journée entière de travail reposait sur cinq affirmations fausses. Le validateur d'état est resté au vert — à juste titre. Deux des cinq venaient de moi. Ce que ça nous a appris sur la preuve de fraîcheur.
Le plafond qui ne s'est jamais déclenché : un correctif mémoire qui n'a rien corrigé
Un plafond sur les logs de build livré, tests au vert, RSS bornée — et pourtant la ligne en base atteignait 14 Mo. Le plafond protégeait une valeur que personne ne conservait.
Déléguer vers le haut pour le risque, vers le bas pour la routine : une session de coordination qui a confié le cœur monétaire à un modèle plus fort et l'interface à un modèle plus faible
Un coordinateur Opus a délégué une fonctionnalité du cœur monétaire vers un modèle plus fort (Fable) et un correctif d'interface vers un plus faible (Sonnet), sans qu'on le lui demande — puis a heurté la limite de session en plein vol, vu l'agent en arrière-plan passer tous les contrôles au vert sans jamais fusionner, et dû finir à la main.
870 connexions fuitées, 12 semaines, une seule cause racine : un Transport par requête
Douze jours de panne silencieuse remontant à un seul anti-pattern Go : créer un http.Transport par requête. Comment un audit en direct l'a trouvé, plus 3 autres bugs en production.
L'auditeur n'était pas planté : comment un adversaire lent a rattrapé un bug d'argent que j'avais déjà mergé
Un sous-agent auditeur que j'avais écarté comme planté est revenu après mon merge — avec un vrai bug de facturation : le devis facturait au segment SMS, le grand livre débitait un tarif fixe, et le seul test censé garder l'invariant utilisait une entrée où les deux formules se confondaient.
Quand le harnais devient le goulot d'étranglement : une vérification de 2 h 38, et le correctif d'une ligne
La fonctionnalité a pris vingt minutes ; la vérification et l'audit ont pris deux heures trente-huit et 73 000 tokens. Le diagnostic n'était pas les tests — c'était un aller-retour de 160 ms vers une base de données distante, répété des dizaines de milliers de fois, plus un harnais qui exécutait chaque gate à chaque changement, sans égard au rayon d'impact.
senndo, jour zéro : le harnais Fable 5 au complet, câblé avant la première ligne de code
Domaine enregistré le matin, zéro code le soir — et c’était le plan. Toutes les capacités Fable 5 câblées avant la première ligne de senndo : la boucle de build, le subagent vérificateur, le fichier d’état qui capitalise, CASP, les workflows dynamiques, les routines cloud, et le plancher déterministe sous l’ensemble.
Le segfault qui n'était pas le nôtre : livrer le tracking du jour de lancement de Déblo la nuit du lancement — analytics conditionnées par l'environnement, attribution native des stores, trois bugs que le compilateur ne pouvait pas voir, et un build à court de mémoire que nous avons diagnostiqué au lieu de le rétablir
Le 1er juillet 2026 — jour de lancement — le risque n'a jamais été le texte. C'était les campagnes payantes qui partaient à l'aveugle. Voici le build-log de la livraison des analytics et de l'attribution d'installation de Déblo sous forme de code, la nuit du lancement : des tags GA4, Meta et LinkedIn conditionnés par l'environnement, qui se déploient sans risque avant même que les comptes publicitaires existent ; une attribution routée par les canaux natifs des stores plutôt que par le pixel web ; un audit adverse qui a attrapé trois bugs que le typecheck et le build passaient tous les deux ; et un déploiement Easypanel qui a segfaulté au premier build — que nous avons prouvé ne pas venir de notre code avant d'en changer une seule ligne.