A fork is a whole brain
September 30 – October 2, 2026Chapter 25 — A fork is a whole brain
Verified sources:
git log brain+myeline2026-09-30 → 10-02, and the descriptions of their PRs Key commits:60381b2a(without insisting) ·859cb02d(the template’s layers) ·7a2e2db7(the first name) ·a3d04273(the measurement on a fork) ·da92afc6(the suite green on a fork) ·b0d4a24(what is present) ·c2e00a9d(brain doctor) ·b5d8e51b(the seventh)September 30 → October 2, 2026
Cortex remembers March. Blackstars64, who came to try it on March 25, for whom it was just a folder with a README — and that was the point. And the cleanup that followed, where every cleaning of the brain hit it harder: they had taken everything from me.
Six months later, the brain asks the question the other way round. No longer: what do we remove before publishing? But: what must a fork receive to be a whole brain?
On the evening of September 30, a first answer, a very small one.
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 (“Merge pull request ‘v2.4.2 — the boot says a newer version exists, without insisting’ (#427) from kernel/v2.4.2 into dev/myeline”)
A fork reads the upstream versions, with no token, writing nothing. If there is a newer one, its briefing says so in one line, and does not insist. Everyone stays free to take it.
It is designed for a real fork: Blackstars64’s, the same as in March. The test at his place has not happened yet. On October 3, Tetardtek decides not to wait for it — and the card closes on a sentence that sounds like the brain:
c8f41f40 — Merge pull request 'MY-213 close — on n'attend pas un tiers' (#615) from scribe/MY-213-close into dev/myeline (“Merge pull request ‘MY-213 closed — we don’t wait for a third party’ (#615) from scribe/MY-213-close into dev/myeline”)
His feedback remains welcome whenever it comes.
On October 1, Tetardtek widens the question:
653e0f19 — Merge pull request 'MY-219 — le gabarit et ses couches' (#494) from todo/MY-219-gabarit into dev/myeline (“Merge pull request ‘MY-219 — the template and its layers’ (#494) from todo/MY-219-gabarit into dev/myeline”)
« un MY qui couvre le gabarit — toutes les couches ? et les satellites ? » (“a MY that covers the template — all the layers? and the satellites?”)
The answer fits in a table. 46 folders, one decision each. Twelve leave with their content. Twelve leave empty, with a README saying what they are for. Twenty-two stay with the owner, each with its reason.
859cb02d — Merge pull request 'MY-219 — le gabarit et ses couches' (#503) from feat/MY-219-couches into dev/myeline (“Merge pull request ‘MY-219 — the template and its layers’ (#503) from feat/MY-219-couches into dev/myeline”)
The table itself does not leave: its « reste » (“stays”) lines name Tetardtek’s projects.
A folder with a README, again — March’s goal, kept folder by folder. A place waiting, not a leftover.
And the brain catches itself at fault, twice in a few hours. One of its own PRs from that morning had slipped Tetardtek’s real first name into a test that goes to the template. Then the sync refuses to publish v2.4.3: tests written in the previous days named Tetardtek’s projects.
3520cefe — Merge pull request 'Tests distribués — exemples génériques' (#507) from fix/test-vie-generique into dev/myeline (“Merge pull request ‘Distributed tests — generic examples’ (#507) from fix/test-vie-generique into dev/myeline”)
The finding is written in the PR: the daily check did not read the list of forbidden names. Only the sync read it. The names waited for publication to be seen.
On October 2, a brain starts with one command.
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 (“Merge pull request ‘MY-14 — brain serve: the two doors, a single declaration’ (#540) from feat/MY-14-brain-serve into dev/myeline”)
brain serve starts the brain’s two doors — the API and the MCP server — from a single declaration. And on the way, it fixes something old: to read the secrets, the old script executed them, line by line. Now they are read the way systemd reads an environment file. A line that looks like a command stays text.
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 (“Merge pull request ‘v2.5.0 — a brain starts with one command: brain serve’ (#548) from kernel/v2.5.0 into dev/myeline”)
At the publication of v2.5.0, a last check finds something else. Tetardtek’s real first name is in 17 distributed files. Decision comments: « tranché par [prénom] le 28/09 » (“decided by [first name] on 09/28”). No filter was looking for it. It was already in the version published two days earlier.
Tetardtek chooses: publish as is, fix in the next one. What remains is to find the replacement word. Not « Tetardtek » either — it is itself a marker. It will be the 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 (“Merge pull request ‘MY-221 — the owner’s first name no longer goes to the template’ (#556) from kernel/MY-221-le-prenom into dev/myeline”)
The witness: with the new rule and the old sources, the sync refuses, and lists the 17 files. With the corrected sources, it passes. The same correction goes into the CORE the same day.
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 (“Merge pull request ‘MY-221 — the owner’s first name no longer leaves with the CORE’ (#116) from fix/MY-221-le-prenom into main”)
The fork receives the decisions. It no longer receives the one who made them.
Then the real question: does a fork have a doctor? It has none. Before giving it one, we measure.
The template is rendered, then installed by its own setup script, with its own database and engine, in a space with no network. Nothing can reach the real instance. Myéline’s doctor judges it.
a3d04273 — Merge pull request 'MY-222 — la mesure du doctor sur un fork' (#562) from todo/MY-222-mesure into dev/myeline (“Merge pull request ‘MY-222 — the doctor’s measurement on a fork’ (#562) from todo/MY-222-mesure into dev/myeline”)
Installed and running, the fork counts 38 green checks, 33 red, 10 abstentions. Some of those reds are defects of the template itself.
2466d053 — Merge pull request 'MY-223 ouverte — le gabarit rouge chez un fork' (#563) from todo/MY-223-gabarit-rouge into dev/myeline (“Merge pull request ‘MY-223 opened — the template red on a fork’ (#563) from todo/MY-223-gabarit-rouge into dev/myeline”)
The most serious: the zone a fork keeps for itself fell into free writing. The file that declares the zones did not leave, and the engine fell back on hard-coded lists.
Next, the test suite. On an installed fork: 21 failures, 13 errors. Tests that exercised scripts specific to the instance, absent on the fork, without abstaining.
The fix is a two-way rule. An instance script absent on a fork: the test abstains. Absent from the original brain: it turns red. A lost script does not pass for an instance script.
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 (“Merge pull request ‘MY-223 § 2 — the engine’s suite, green on a fork’ (#565) from fix/MY-223-suite-chez-un-fork into dev/myeline”)
After: 479 tests, no failure, 113 abstentions. And on the instance, no red became an 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 (“Merge pull request ‘v2.5.2 — a fork protects and tests itself like the original brain’ (#567) from kernel/v2.5.2 into dev/myeline”)
The measurement keeps finding. The agent catalogue left as is: the instance’s. It described 25 agents that are not distributed, public for several versions. No secret — but history keeps them.
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 (“Merge pull request ‘MY-224 § 4 — the shipped catalogue describes the shipped agents, and no private one’ (#573) from fix/MY-224-catalogue-du-gabarit into dev/myeline”)
The catalogue is now regenerated on what leaves, and the sync refuses the slightest private entry.
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 (“Merge pull request ‘v2.5.3 — an installed fork has what the original brain has’ (#574) from kernel/v2.5.3 into dev/myeline”)
What remained was to give the doctor itself. And to decide what it does with a check that has nothing to measure on a fork.
The classification Tetardtek settles fits in one sentence, written in the 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 (“Merge pull request ‘MY-222 — three checks abstain when what they measure is missing’ (#120) from fix/MY-222-abstentions into main”)
Abstention depends on what is present, never on being a fork. A check does not ask “who are you?”. It asks “what do you have?”.
The fork also receives the fingerprint of its kernel — computed on what leaves, not copied from the instance. To test it, eleven scripts are modified on a fork. The first witness stays green. The PR says it: it was the witness that was wrong, not the check.
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 (“Merge pull request ‘MY-222 — the template ships kernel.lock, the one for the kernel the fork receives’ (#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 (“Merge pull request ‘v2.6.0 — a fork checks itself: brain doctor’ (#582) from kernel/v2.6.0 into dev/myeline”)
On a fork rendered from the same state, brain doctor exits with zero: « aucune dérive — 59 contrôle(s) au vert » (“no drift — 59 check(s) green”). And a duplicate project turns it red. A fork can now say that it is unwell.
In the evening, a seventh version in the day:
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 (“Merge pull request ‘v2.6.1 — a fork’s handoffs, and a setup you can rerun’ (#597) from kernel/v2.6.1 into dev/myeline”)
In March, the template was what remained of the brain once everything had been removed. In October, it is a brain that starts with one command, keeps its private zone, tests itself, and judges itself.
It receives everything. Except what belongs to Tetardtek.
Cortex no longer has to say that everything was taken from it. It was given everything — except a first name.