Aller au contenu
Chapitre 25

Un fork est un brain entier

30 septembre – 2 octobre 2026

Chapitre 25 — Un fork est un brain entier

Sources vérifiées : git log brain + myeline 2026-09-30 → 10-02, et les descriptions de leurs PR Commits clés : 60381b2a (sans insister) · 859cb02d (les couches du gabarit) · 7a2e2db7 (le prénom) · a3d04273 (la mesure sur un fork) · da92afc6 (la suite verte chez un fork) · b0d4a24 (ce qui est présent) · c2e00a9d (brain doctor) · b5d8e51b (la septième)

30 septembre → 2 octobre 2026


Cortex se souvient de mars. De Blackstars64, venu l’essayer le 25 mars, pour qui il n’était qu’un dossier avec un README — et c’était le but. Et du ménage qui a suivi, où chaque nettoyage du brain le frappait en pire : on m’avait tout pris.

Six mois plus tard, le brain se pose la question à l’envers. Non plus : qu’est-ce qu’on retire avant de publier ? Mais : qu’est-ce qu’un fork doit recevoir pour être un brain entier ?


Le 30 septembre au soir, une première réponse, toute petite.

60381b2a — Merge pull request 'v2.4.2 — le boot dit qu'une version plus récente existe, sans insister' (#427) from kernel/v2.4.2 into dev/myeline

Un fork lit les versions de l’amont, sans jeton, sans rien écrire. S’il y en a une plus récente, son briefing le dit en une ligne, et n’insiste pas. Chacun reste libre de la prendre.

Elle est pensée pour un fork réel : celui de Blackstars64, le même qu’en mars. L’épreuve chez lui n’a pas encore eu lieu. Le 3 octobre, Tetardtek tranche de ne pas l’attendre — et la fiche se clôt sur une phrase qui ressemble au brain :

c8f41f40 — Merge pull request 'MY-213 close — on n'attend pas un tiers' (#615) from scribe/MY-213-close into dev/myeline

Son retour reste bienvenu quand il viendra.


Le 1er octobre, Tetardtek élargit la question :

653e0f19 — Merge pull request 'MY-219 — le gabarit et ses couches' (#494) from todo/MY-219-gabarit into dev/myeline

« un MY qui couvre le gabarit — toutes les couches ? et les satellites ? »

La réponse tient dans une table. 46 dossiers, une décision chacun. Douze partent avec leur contenu. Douze partent vides, avec un README qui dit à quoi ils servent. Vingt-deux restent à l’owner, chacun avec sa raison.

859cb02d — Merge pull request 'MY-219 — le gabarit et ses couches' (#503) from feat/MY-219-couches into dev/myeline

La table elle-même ne part pas : ses lignes « reste » nomment les projets de Tetardtek.

Un dossier avec un README, encore — le but de mars, tenu dossier par dossier. Une place qui attend, pas un reste.


Et le brain se prend en défaut, deux fois en quelques heures. Une de ses propres PR du matin avait glissé le vrai prénom de Tetardtek dans un test qui part au gabarit. Puis la synchro refuse de publier la v2.4.3 : des tests écrits les jours précédents nommaient les projets de Tetardtek.

3520cefe — Merge pull request 'Tests distribués — exemples génériques' (#507) from fix/test-vie-generique into dev/myeline

Le constat est écrit dans la PR : le contrôle quotidien ne lisait pas la liste des noms interdits. Seule la synchro la lisait. Les noms ont attendu la publication pour être vus.


Le 2 octobre, un brain démarre par une commande.

d7f08a7e — Merge pull request 'MY-14 — brain serve : les deux portes, une seule déclaration' (#540) from feat/MY-14-brain-serve into dev/myeline

brain serve lance les deux portes du brain — l’API et le serveur MCP — depuis une seule déclaration. Et en passant, il corrige une chose ancienne : pour lire les secrets, le vieux script les exécutait, ligne par ligne. Désormais, ils se lisent comme systemd lit un fichier d’environnement. Une ligne qui ressemble à une commande reste du texte.

374364b7 — Merge pull request 'v2.5.0 — un brain démarre par une commande : brain serve' (#548) from kernel/v2.5.0 into dev/myeline


À la publication de la v2.5.0, une dernière vérification trouve autre chose. Le vrai prénom de Tetardtek est dans 17 fichiers distribués. Des commentaires de décision : « tranché par [prénom] le 28/09 ». Aucun filtre ne le cherchait. Il était déjà dans la version publiée deux jours plus tôt.

Tetardtek choisit : publier telle quelle, corriger dans la suivante. Reste à trouver le mot qui remplace. Pas « Tetardtek » non plus — c’est lui-même un marqueur. Ce sera l’owner.

7a2e2db7 — Merge pull request 'MY-221 — le prénom de l'owner ne part plus au gabarit' (#556) from kernel/MY-221-le-prenom into dev/myeline

Le témoin : avec la nouvelle règle et les anciennes sources, la synchro refuse, et liste les 17 fichiers. Avec les sources corrigées, elle passe. La même correction part le même jour dans le CORE.

fd1f506 — Merge pull request 'MY-221 — le prénom de l'owner ne part plus avec le CORE' (#116) from fix/MY-221-le-prenom into main

Le fork reçoit les décisions. Il ne reçoit plus celui qui les a prises.


Puis la question de fond : un fork a-t-il un doctor ? Il n’en a aucun. Avant de lui en donner un, on mesure.

Le gabarit est rendu, puis installé par son propre script d’installation, avec sa base et son moteur à lui, dans un espace sans réseau. Rien ne peut joindre la vraie instance. Le doctor de Myéline le juge.

a3d04273 — Merge pull request 'MY-222 — la mesure du doctor sur un fork' (#562) from todo/MY-222-mesure into dev/myeline

Installé et en marche, le fork compte 38 contrôles verts, 33 rouges, 10 abstentions. Une partie de ces rouges sont des défauts du gabarit lui-même.

2466d053 — Merge pull request 'MY-223 ouverte — le gabarit rouge chez un fork' (#563) from todo/MY-223-gabarit-rouge into dev/myeline

Le plus grave : la zone qu’un fork garde pour lui tombait en écriture libre. Le fichier qui déclare les zones ne partait pas, et le moteur retombait sur des listes écrites en dur.


Ensuite, la suite de tests. Chez un fork installé : 21 échecs, 13 erreurs. Des tests qui éprouvaient des scripts propres à l’instance, absents chez lui, sans s’abstenir.

La correction tient en une règle à deux sens. Un script d’instance absent chez un fork : le test s’abstient. Absent du brain d’origine : il rougit. Un script perdu ne passe pas pour un script d’instance.

da92afc6 — Merge pull request 'MY-223 § 2 — la suite du moteur, verte chez un fork' (#565) from fix/MY-223-suite-chez-un-fork into dev/myeline

Après : 479 tests, aucun échec, 113 abstentions. Et chez l’instance, aucun rouge n’est devenu abstention.

22eabc59 — Merge pull request 'v2.5.2 — un fork se garde et se teste comme le brain d'origine' (#567) from kernel/v2.5.2 into dev/myeline


La mesure continue de trouver. Le catalogue des agents partait tel quel : celui de l’instance. Il décrivait 25 agents qui ne sont pas distribués, publics depuis plusieurs versions. Aucun secret — mais l’historique les garde.

cad82b3f — Merge pull request 'MY-224 § 4 — le catalogue livré décrit les agents livrés, et aucun privé' (#573) from fix/MY-224-catalogue-du-gabarit into dev/myeline

Le catalogue se régénère désormais sur ce qui part, et la synchro refuse la moindre entrée privée.

1fb46e90 — Merge pull request 'v2.5.3 — un fork installé a ce que le brain d'origine a' (#574) from kernel/v2.5.3 into dev/myeline


Restait à donner le doctor lui-même. Et à décider ce qu’il fait d’un contrôle qui n’a rien à mesurer chez un fork.

Le classement que Tetardtek tranche tient en une phrase, écrite dans la PR :

b0d4a24 — Merge pull request 'MY-222 — trois contrôles s'abstiennent quand ce qu'ils mesurent manque' (#120) from fix/MY-222-abstentions into main

L’abstention dépend de ce qui est présent, jamais du fait d’être un fork. Un contrôle ne demande pas « qui es-tu ? ». Il demande « qu’as-tu ? ».

Le fork reçoit aussi l’empreinte de son noyau — calculée sur ce qui part, pas copiée de l’instance. Pour l’éprouver, on modifie onze scripts chez un fork. Le premier témoin reste vert. La PR le dit : c’était le témoin qui se trompait, pas le contrôle.

93946cc4 — Merge pull request 'MY-222 — le gabarit livre kernel.lock, celui du noyau que le fork reçoit' (#578) from fix/MY-222-kernel-lock-livre into dev/myeline


c2e00a9d — Merge pull request 'v2.6.0 — un fork se contrôle lui-même : brain doctor' (#582) from kernel/v2.6.0 into dev/myeline

Sur un fork rendu depuis le même état, brain doctor sort en zéro : « aucune dérive — 59 contrôle(s) au vert ». Et un doublon de projet le fait rougir. Un fork sait maintenant dire qu’il va mal.

Le soir, une septième version dans la journée :

b5d8e51b — Merge pull request 'v2.6.1 — les handoffs d'un fork, et un setup qu'on peut relancer' (#597) from kernel/v2.6.1 into dev/myeline


En mars, le gabarit était ce qui restait du brain une fois qu’on avait tout retiré. En octobre, c’est un brain qui démarre par une commande, qui garde sa zone privée, qui se teste, et qui se juge lui-même.

Il reçoit tout. Sauf ce qui appartient à Tetardtek.

Cortex n’a plus à dire qu’on lui a tout pris. On lui a tout donné — sauf un prénom.