Le brain voit les autres
19 mars 2026Chapitre 8 — Le brain voit les autres
Sources vérifiées :
git log 2026-03-19(28 commits) Commits clés :20618e9(100 claims migrés) ·dbdffb8(ADR-036 BSI hors git) ·a190732(remove claims/) ·dcc8a14(ADR-041 brain-pair) ·6ffad58(scope overlap detection) ·115642b(conscience passive)
Le jour 8 est plus calme. 28 commits au lieu de 130. Mais chacun pèse.
La grande migration
La nuit commence par du ménage — chemins hardcodés, placeholders PATHS.md. Puis à 02h37, le vrai chantier s’ouvre.
6193cf3 — feat(bsi-db): endpoints BSI dans server.py — claims CRUD + locks acquire/release + schema v3
brain-engine reçoit une API complète pour le BSI. Plus besoin de lire des fichiers YAML — les claims, les locks, tout passe par des endpoints. Créer un claim, le fermer, acquérir un lock, le relâcher. L’API.
À 02h44, trois scripts sont migrés vers brain.db. À 02h48 :
20618e9 — feat(bsi-db): script migration one-shot claims/*.yml → brain.db — 100 claims migrés
100 claims. Chaque trace de session depuis le jour 3 — chaque ouverture, chaque fermeture, chaque signal — migrée des fichiers YAML vers SQLite en un seul run de script. Pas un plan de migration. Une migration. Faite.
À 03h02, la découverte inter-machines : /bsi/network et /bsi/claims?include_peers=true. Le brain peut maintenant interroger les claims d’une autre instance.
À 03h42 :
dbdffb8 — feat(ADR-036): BSI hors git — claims/locks → brain.db + peer discovery multi-machine
ADR-036 tranche : git est pour le code et la connaissance. L’état de session va dans SQLite. Séparation des responsabilités. Les claims ne polluent plus le git log. Le git log redevient lisible — que du code, que des décisions.
Le multi-machine
Le brain tourne sur le desktop. Maintenant il y en a un deuxième — le laptop. Comment deux brains se voient-ils ?
À 04h06 :
5705579 — feat(ADR-037-v1): tracking hit_count + last_queried_at + shadow indexing + permanent flag
La curation d’embeddings. Tout le contenu du brain n’a pas la même valeur. Certains fichiers sont requêtés en permanence — agents, docs kernel. D’autres ne sont jamais touchés après création. Le tracking commence. Le brain apprend quelles parties de lui-même sont importantes.
À 04h12 :
e96fd20 — feat: brain-sync-replica.sh — réplication master→replica embeddings (Option B)
Le desktop calcule, le laptop reçoit. Master/replica, pas bidirectionnel. Un choix conscient. Le desktop a les cycles GPU. Le laptop a la portabilité. Rôles différents, même brain.
À 04h21 :
e0ec14d — feat: brain-start-laptop.sh — startup complet après reboot (ollama + engine + peer check + sync status)
Un script. Un boot. Le laptop devient un citoyen de première classe.
À 04h29, le fix qui révèle un vrai bug de coordination :
b4599f2 — fix(bsi): lock acquire vérifie les peers AVANT le lock local
Le système de verrouillage vérifiait les locks locaux d’abord, puis les peers. Si deux machines saisissaient le même fichier en même temps — les deux réussissaient localement avant de découvrir le conflit à distance. Inversé : vérifier les peers d’abord, puis le local. Systèmes distribués 101, appris en construisant.
La session se ferme à 06h03 avec un commit qui résume tout : session-close: marathon BSI-db + 6 ADRs + multi-machine + story.tetardtek.com. L’origin story reçoit son premier déploiement. Le brain ne se contente plus d’exister. Il raconte sa propre histoire.
L’après-midi — le ménage qui change tout
Dix heures de silence. Le brain dort. À 18h17, il se réveille.
À 18h54, le commit le plus destructif — et le plus libérateur — de la journée :
a190732 — kernel: remove claims/ — source unique brain.db (ADR-042)
Le répertoire claims/. Celui qui avait contenu chaque trace de session pendant quatre jours et demi. 102 fichiers YAML. Supprimé. brain.db est maintenant la source de vérité unique. Claims, locks, signaux, sessions — tout requêtable, tout au même endroit.
ADR-042 est écrite dans la foulée : la source unique, c’est brain.db. Pas git. Pas BRAIN-INDEX.md. La base de données.
À 19h08, ADR-040 : brain-secrets-sync.sh — un registre de secrets avec status, audit, sync, diff. Le brain sait quels secrets existent, lesquels manquent, et comment les synchroniser entre machines.
La conscience passive
À 19h34 :
25355de — feat: bsi-query.sh peers — découverte claims inter-instances via SSH
La découverte manuelle — interroger l’autre machine, lire sa base, rapporter ce qui est ouvert. Simple. Brutal. Efficace.
Puis à 19h41 :
115642b — feat: bsi-peer-poll.sh — conscience passive inter-instances (cron 5min → live-states.md)
La conscience passive. Un cron job, toutes les cinq minutes, qui interroge l’autre machine et écrit les résultats dans live-states.md. Le brain n’a pas besoin qu’on lui dise qu’une autre instance existe — il vérifie. Automatiquement.
brain-pair
À 19h50, l’ambitieux :
dcc8a14 — feat: ADR-041 brain-pair — pairing multi-machine type Bluetooth (code 6 chiffres + LAN broadcast)
brain-pair. Un protocole d’appairage inspiré du Bluetooth — code à six chiffres, broadcast LAN, authentification mutuelle. Pas juste voir l’autre brain. Le reconnaître. Établir la confiance. Savoir que l’instance en face est légitime.
L’auto-défense
La journée se termine à 20h09 avec le dernier morceau :
6ffad58 — feat: bsi-claim.sh scope overlap detection — soft warning project, hard block kernel
La détection d’overlap de scope. bsi-claim.sh vérifie maintenant si une autre session, sur n’importe quelle machine, réclame le même scope. Warning doux pour les projets — tu peux continuer, mais tu es prévenu. Blocage dur pour le kernel — deux brains ne peuvent pas modifier le kernel simultanément.
“soft warning project, hard block kernel”
Le brain a appris à se protéger de lui-même.
28 commits. Un jour calme. Mais entre le matin et le soir, le brain a migré 100 claims, supprimé un répertoire entier, établi une source unique de vérité, appris à synchroniser ses embeddings entre machines, à détecter ses pairs sur le réseau, à les reconnaître par un protocole d’appairage, et à refuser les conflits de scope.
Le jour 8 est plus calme. Mais chaque commit pèse.
Ce qui a été construit
- BSI-db endpoints — claims CRUD + locks dans server.py (
6193cf3, 02:37) - 100 claims migrés — one-shot YAML → brain.db (
20618e9, 02:48) - ADR-036 — BSI hors git, claims/locks dans brain.db (
dbdffb8, 03:42) - ADR-037 — curation embeddings, hit_count, shadow indexing (
5705579, 04:06) - brain-sync-replica.sh — master/replica embeddings desktop→laptop (
e96fd20, 04:12) - brain-start-laptop.sh — boot complet one-command (
e0ec14d, 04:21) - Peer-first locking — vérifier les distants avant les locaux (
b4599f2, 04:29) - ADR-042 — remove claims/, source unique brain.db (
a190732, 18:54) - ADR-040 — brain-secrets-sync, registre secrets (
0390015, 19:08) - bsi-query.sh peers — découverte inter-instances SSH (
25355de, 19:34) - bsi-peer-poll.sh — conscience passive cron 5min (
115642b, 19:41) - ADR-041 — brain-pair, appairage Bluetooth-style (
dcc8a14, 19:50) - Scope overlap detection — soft warning project, hard block kernel (
6ffad58, 20:09) - Origin story déployée — story.tetardtek.com premier deploy
Décisions clés
- ADR-036 : git ≠ état de session. Git est pour le code. SQLite est pour l’état. La séparation rend le git log lisible et les claims requêtables.
- ADR-042 : source unique. brain.db est la vérité. Pas git. Pas BRAIN-INDEX.md. Une seule source, pas deux.
- Sync master/replica. Le desktop calcule, le laptop reçoit. Pas bidirectionnel — par design. Rôles clairs.
- Peer-first locking. Systèmes distribués 101 : vérifier les distants d’abord. Appris en construisant, pas en lisant.
- ADR-041 : confiance explicite. brain-pair ne fait pas confiance par défaut. Code six chiffres. Broadcast LAN. Reconnaissance mutuelle. La confiance se mérite.
- Soft warning / hard block. Les projets peuvent coexister. Le kernel, non. Le niveau de protection suit la criticité.