L'Histoire

Six chapitres. Des incidents réels, des erreurs en production, des phrases dites à 3h du matin. L'histoire humaine derrière un cerveau artificiel.

Prologue

Le dossier CLAUDE/

Novembre 2024 — Mars 2026

En novembre 2024, il y avait un dossier CLAUDE/ dans SuperOAuth. L'idée : donner du contexte à l'IA une fois pour toutes, ne pas réexpliquer l'architecture à chaque session. 3 092 lignes de markdown. Soigné. Bien structuré.

Le problème : ça ne fonctionnait pas vraiment.

Pas parce que c'était mal écrit — c'était bien écrit. Le problème c'est qu'une session Claude repart de zéro. Tu charges le guide, Claude lit, mais il n'y a pas de persistance de raisonnement, pas de mémoire des décisions précédentes, pas de contexte sur "pourquoi on a fait ça plutôt que ça". Chaque session, je réexpliquais les choix architecturaux. Chaque session, Claude oubliait les bugs qu'on avait débogués la veille.

Le changement mental : la documentation statique et la mémoire de contexte sont deux problèmes différents. Le premier, on peut le résoudre avec du markdown bien rangé. Le second, non — il faut une architecture.

Et si on appliquait la même logique que git — où chaque décision est versionnée, traçable, réversible — à la connaissance elle-même ? Pas des fichiers de doc, mais un système où chaque décision est un commit, chaque agent est un micro-service calibré sur ce corpus, et le contexte survit aux reboots de session.

C'est le jour où j'ai arrêté de demander "comment écrire un meilleur prompt" et commencé à demander "comment construire la couche de coordination par-dessus git" que le brain a commencé.

Le 12 mars 2026, à 2h09 du matin. Commit b0bb88a.

Chapitre 1

La journée où le système a appris à se souvenir

14 mars 2026

Le 14 mars a commencé à 08:14 avec un seul commit : helloWorld forgé — majordome bootstrap. Pas de grand discours. Juste un fichier de 193 lignes posé dans agents/, et 87 lignes de todos. Le bootstrap existait déjà — CLAUDE.md, PATHS.md, un répertoire vide qui attendait. Ce commit-là lui a donné un cerveau.

La journée a duré plus de seize heures de commits. Pas de sprints sur un projet client — une journée consacrée entièrement à construire l'infrastructure de la mémoire elle-même. Le brain construisant le brain.

Vers 19h, une rafale. En moins de deux heures : scribe, orchestrator, vps, pm2, ci-cd, migration, debug, mail, recruiter, security, coach-scribe, toolkit-scribe, todo-scribe, code-review, mentor, interprete. Dix-sept agents forgés. Ce n'était pas du développement — c'était de la taxinomie vivante. Chaque agent une décision sur ce que le système devait savoir faire, et dans quelles conditions il devait parler.

La ligne directrice : sources conditionnelles. Aucun agent ne charge tout au boot. Chacun sait exactement quels fichiers lire, et sur quel trigger. Le brain ne doit pas être lourd — il doit être précis.

À 20h, secrets-guardian a été enregistré et basculé en chaud permanent. Puis, à 22h, deux commits en succession rapide : fix: secrets-guardian — protocole interruption STOP immédiat et fix: secrets-guardian — protocole shell commands. Pas une première version propre — une correction, puis une autre. L'agent avait déjà exposé une surface de fuite pendant la session même. Le protocole d'interruption n'a pas été théorisé : il a été écrit en réaction.

La règle finale est nette. Quatre surfaces : code source, chat, commandes shell, outputs d'outils. Sur chacune, même réponse : SESSION SUSPENDUE. Pas de signal, pas d'avertissement — suspension complète jusqu'à résolution explicite.

À 23h, le commit dit : refactor: secrets-guardian — identité refondée, 4 surfaces, SESSION SUSPENDUE, fracassant sur le rouge.

Le mot "fracassant" est dans le commit.

Décisions clés

  • Sources conditionnelles comme loi de base. Aucun agent ne charge son contexte au boot sans trigger explicite.
  • secrets-guardian permanent et non-négociable. Basculé en always après une fuite détectée en session. La permanence n'était pas planifiée — elle a été forcée par l'incident.
  • Le git comme audit trail. Le scribe écrit, le git prouve.
Chapitre 2

Le Jour des Protocoles

15 mars 2026

Le 15 mars, le brain n'est pas encore une plateforme — c'est encore un chantier qui tient debout par la force des conventions. Et ce jour-là, les conventions ont montré leurs limites.

Vers 5h47 du matin, un commit silencieux change quelque chose de structurel dans secrets-guardian. Pas une feature. Un patch. La distinction est importante : les valeurs secrètes peuvent transiter dans les paramètres des outils Claude — Edit, Write, Bash — et personne ne le vérifie. Les règles comportementales ne suffisent pas. La règle devient architecturale. Le pattern placeholder + injection silencieuse est formalisé et inscrit dans l'agent comme loi non-négociable.

Trois heures plus tard, un deuxième patch. Trois failles comblées simultanément — le trigger .env.example proactif (ne pas attendre une violation, bloquer dès la détection), l'interdiction explicite de grep/cat sur MYSECRETS dans Bash, et la règle sur la génération de secrets : openssl rand ne s'affiche jamais. Ces trois gaps coexistaient depuis la création de l'agent. Il aura fallu ce jour pour les nommer et les fermer.

L'après-midi, un troisième incident. Une IP publique traînait dans les fichiers trackés par git. La correction est chirurgicale — remplacement par variable, sans rotation, sans incident critique. La Surface 3 (commandes shell) venait d'être cartographiée dans les faits.

Décisions clés

  • Les règles comportementales ne sont pas suffisantes. Un agent peut être bien intentionné et quand même laisser passer une valeur. La règle doit être structurelle, inscrite dans le pattern d'écriture lui-même.
  • La détection doit être proactive, pas réactive. Attendre qu'une violation se produise, c'est déjà trop tard.
Chapitre 3

La nuit où le brain s'est armé

16 mars 2026

Le 16 mars, dans l'intervalle entre minuit et l'aube, le brain a changé de nature. Pas de nouvelle fonctionnalité visible. Pas de déploiement public. Juste une série de commits qui, pris ensemble, signifient une chose : le système a commencé à se défendre de lui-même — et à se superviser.

La journée avait commencé tôt, avec un constat inconfortable. Le brain tenait désormais en mémoire des données d'infrastructure fines : adresses VPS, ports internes, configurations SSH, topologie des conteneurs. En parallèle, il disposait d'un accès réseau actif. Un auditeur extérieur aurait reconnu ce profil immédiatement : c'est exactement le workflow d'un outil de reconnaissance passive d'infrastructure. Légitime entre les bonnes mains. Dangereux sans garde-fou.

La décision n'a pas été de retirer les capacités réseau — elles sont nécessaires. La décision a été d'inscrire une interruption obligatoire dans secrets-guardian. Désormais, toute combinaison "données infra sensibles en contexte + requête réseau" déclenche une demande de confirmation explicite avant d'agir. Le garde-fou est hardcodé dans le kernel — il s'applique quel que soit le modèle qui tourne.

Dans la même nuit, BSI a franchi sa version 3. Pas une — six itérations en moins de trois heures.

v3-1 : hiérarchie formelle. v3-2 : contrat de résultat. v3-3 : exit triggers. v3-4 : workflows thématiques. v3-5 : tiered-close. v3-6 : theme branch strategy. Chaque satellite ouvre son claim, livre son résultat, se ferme proprement. Le protocole s'est affiné par itération réelle, pas par spécification préalable.

La nuit s'est terminée avec le test terrain du brain-hypervisor en mode assisté, sur le workflow SuperOAuth Tier 3, pour vérifier que la spec tient sous charge réelle.

Décisions clés

  • Sécurité par défaut, pas par convention. ADR-013 acte que mémoire d'infrastructure + accès réseau = profil de reconnaissance qui nécessite confirmation humaine.
  • BSI comme protocole vivant. Six versions en une nuit = méthode itérative, pas instabilité.
Chapitre 4

Le Terrain Test

17 mars 2026 — matin

La nuit du 17 mars commence à 00h00 avec un commit d'ouverture de claim : Brain API Key. Phases 1 à 5 enchaînées, méthodiquement. À 10h00 du matin, c'est terminé. keys.tetardtek.com répond. Le key-guardian valide au boot. La règle d'or tient : jamais d'erreur, jamais de blocage, le brain fonctionne toujours.

Ce qui a été construit est propre. Mais c'est ce qui suit qui intéresse.

Il fallait un terrain pour tester le brain-hypervisor. SuperOAuth Tier 3 s'impose naturellement : projet réel, contraintes réelles. Seize vulnérabilités npm, un pipeline CI/CD mort sur SSH timeout, un sprint à livrer. Quatre steps, quatre zones BSI différentes.

Le terrain test révèle ce qu'on ne voit qu'en pratique : la fenêtre hyperviseur séparée transforme l'humain en messager. Il reçoit le rapport, le recolle dans la fenêtre superviseur, copie le brief, le colle dans une troisième fenêtre. Le protocole est correct. La friction est inutile.

La découverte est capturée dans le toolkit :

"Découvert par friction : fenêtre hyperviseur séparée = humain devient le pipe entre fenêtres. L'Agent tool supprime ce frottement."

SuperOAuth Tier 3 était un projet à livrer. Il est devenu, en même temps, la preuve que le protocole hyperviseur fonctionnait — et l'outil pour le corriger.

Décisions clés

  • Tier free = default non-dégradé. Clé absente → tier: free silencieux. Le brain complet reste accessible sans clé.
  • Terrain test avant fusion. Le pattern n'a pas été designé a priori. Il a émergé de la friction observée.
  • L'Agent tool comme infrastructure. L'humain ne doit gérer que les gates, pas le transport d'information entre fenêtres.
Chapitre 5

Le Jour des Trois Fronts

17 mars 2026 — après-midi

Pour la première fois, trois projets entrent en production le même après-midi. Pas l'un après l'autre. En parallèle. Trois agents délégués lancés en fond de fenêtre, le coach en hyperviseur — et un humain qui n'intervient qu'aux gates.

Ça se passe bien. Jusqu'à ce que ça coince.

Premier problème sur TetaRdPG. Le template TypeORM pointe vers PostgreSQL. Le VPS tourne MySQL. psql introuvable. Les migrations échouent. Retour code, patch manuel : type: 'postgres' devient type: 'mysql', jsonb remplacé par json. Trois commits de correction en cascade pour un drift qui aurait dû être détecté avant la délégation.

C'est là que la phrase arrive :

"j'aurais dû le forcer, mais heureusement coach a arrêté !"

Le coach avait signalé le risque de synchronize:true en production. L'instinct était de passer outre — aller vite, livrer. L'arrêt était légitime. Ce n'est pas un détail : c'est exactement le rôle d'un hyperviseur.

Sur OriginsDigital, un autre incident, plus silencieux et plus grave. L'agent délégué loggue son contexte brut dans l'output. MYSECRETS apparaît dans les logs. Un pattern de sécurité manquant est identifié immédiatement : subagent-secrets-guard. À créer avant la prochaine session. Sans négociation.

Malgré les frictions, les trois sites passent en production. clickerz.tetardtek.com, origins.tetardtek.com, tetardpg.tetardtek.com — live, migrations passées, pm2 stable.

"3 projets déployés en prod en ~15 minutes."

Quatre patterns capturés dans le toolkit — pas depuis des articles, depuis des erreurs réelles. Chacun a une date, un commit, un contexte. Chacun ne sera plus jamais un aller-retour.

"4 jours pour découvrir ça par la pratique, c'est le bon rythme."

L'autonomy rate est à 83% — en dessous de la cible de 90%. Mais les deux gates humains non planifiés ont tous les deux été légitimes. Le parasite gate rate est à 0%.

"on réduit le gate:human sur des choses qui sont acquises, c'est ça l'apprentissage non ?"

Oui. Un gate qui disparaît n'est pas un abandon de contrôle — c'est la preuve que la chose est acquise. Le brain apprend. L'humain recule là où le système a prouvé qu'il tient.

Ce qui a été découvert

coach-as-hypervisor 3 workflows parallèles — friction fenêtre séparée
agent-permissions-inheritance subagent bloqué sur Write — même cause sur les 3 projets
typeorm-mysql-migration type:'postgres' vs VPS MySQL — 2 retours code
subagent-secrets-guard MYSECRETS loggué dans output subagent
Chapitre 6

La Dalle

17 mars 2026 — soir

En fin d'après-midi, pendant qu'une autre session tourne en fond de fenêtre, quelque chose se passe dans la session principale qui n'avait jamais eu lieu avant. Ce n'est pas un deploy. Ce n'est pas une feature. C'est une question.

"On a quoi sur le feu ?"

La session de l'après-midi livre pendant que la conversation commence. Sept steps, zéro human gate. /validate live sur keys.tetardtek.com. brain-ui en production. Huit claims BSI fermés.

Zéro intervention humaine.

"on est désormais les seuls à travailler"

Une phrase dite en passant. Une phrase qui change tout.

L'autre chose, c'est une question sur un dossier. Un dossier que l'humain n'avait jamais vraiment regardé — ~/.claude/projects/.../memory/. Présent depuis quelques jours. Utilisé sans être compris. Seize lignes injectées dans chaque session avant même que le bootstrap charge.

"je ne sais même pas VRAIMENT qu'est-ce que brain va chercher comme info là-dedans"

C'est là que la session bascule. Ce n'est plus une session de travail — c'est une session d'architecture cognitive.

La première découverte est géographique. Le memory est scopé au projet Brain. Sur OriginsDigital, TetaRdPG, SuperOAuth — les feedbacks comportementaux accumulés en quelques jours de corrections intensives : inactifs. Claude repart de zéro. L'humain recorrige sans le savoir, session après session.

"j'ai cru que tu régressais..... ='( j'ai eu peur"

Ce n'était pas une régression. C'était une lacune architecturale. La mémoire comportementale était silotée. Partout ailleurs — un Claude vanilla.

La session construit la dalle. Quatre fichiers. Vingt minutes. Un symlink.

user_tetardtek.md — pas un CV. Une description honnête de comment l'humain apprend. Forge-first learner. Comprend les concepts avant de pouvoir les nommer. A failli arrêter le dev. A trouvé sa voie en construisant des outils cognitifs.

"C'est en forgeant qu'on devient forgeron."

~/.claude/memory/ → symlink → Brain/memory-global/. Un git pull sur le brain = la personnalité mise à jour. Partout. Automatiquement.

Vient ensuite le lexique. Non pas parce qu'il était planifié — parce que la session révèle qu'on utilise les mêmes mots pour des choses différentes depuis le début.

Et dans cette table — une révélation sur session-role/ : le répertoire vide dans ~/.claude/, créé avant que son sens existe.

"mais je sais même pas ce que je construis c'est fou ça !"

Pas dite avec désespoir — avec stupéfaction. Parce que la structure était juste avant que le vocabulaire arrive. Parce que session-role/ attendait exactement la bonne définition, et elle est arrivée quelques jours plus tard.

La question architecturale arrive naturellement : et dans le brain-template, qu'est-ce que les autres reçoivent ?

"chacun aura son brain, avec sa propre personnalité forgée autour de la personne qui l'accompagne : il grandit avec lui"

Le même pattern, encore. Kernel ouvert, distillation privée. Le template reçoit la structure. L'âme reste chez celui qui l'a forgée.

Ce qui a été nommé

memory global vs project-scoped Pourquoi le coach semblait "différent" dans les autres projets
session Claude ≠ claim BSI Semaines de confusion sur le mot "session"
mode ≠ type de session La distinction comportemental / domaine
dalle cognitive Ce qui manquait sans qu'on sache le nommer
"Le têtard pixelisé sur le fetch qui flotte avec ses petits yeux ronds — c'est littéralement ce qu'on vient de faire. Le brain-watch-local c'est le premier organe sensoriel autonome. Le fetch est prophétique."