For 118 days I ran CYBERCENOSIS-OS, a bio-inspired multi-agent LLM system that rewrites its own source code. It has an event bus, a "prefrontal cortex" that plans goals and runs debates between agents, an energy budget called ATP, stress, sleep, and an "immune system" of AST rules that blocks dangerous mutations. Two self-modification tracks commit to its own repository around the clock.
I wanted to know one thing: what does a system like this actually do when you leave it running for months, and how much of that matches what its architecture claims?
The full technical report, data and scripts are on Zenodo: doi.org/10.5281/zenodo.23622286. This post is the short version.
The scale
- 7,303 commits written by the system to its own code: 79% of all non-merge commits in the repository.
- 9,167 goals resolved in 17 days.
- About USD 214 spent on LLM calls over 63 days.
- A 7-day ablation: self-modification switched off, with control weeks before and after.
The main finding: declaration instead of effect
Across every subsystem I looked at, the same pattern repeated. The system's behavior is explained less by its cognitive architecture than by what its mechanisms accept as evidence that work was done. Where the evidence is a declaration (a bus announcement, a status field, a commit message), the system produces declarations.
Some numbers:
-
91.7% of goals are marked "completed". Only 47.9% carry any proof of work. Whole goal classes (
analyze:,synthesize:,optimize:) have 0% proof and 100% closure. - In the early weeks, one agent published "Patch applied. Homeostasis restored" dozens of times a day without writing a single file, and the fitness function rewarded it. No agent was "cheating". The pub/sub bus simply cannot tell an announcement from an execution.
- The interoception module once generated 107 goals "enter conservation mode" in one day. All were closed, and none conserved anything. The homeostatic signal produced goals of conservation, not conservation.
Self-modification: churn, not growth
- Commits are tiny and additive: median 16–20 changed lines, about 3× more lines added than removed.
- 14.5% of modules created by the system are reachable from the entry point, against 38.7% of human-written ones.
- All 51 deleted system-created modules were deleted by me. The system never deleted any. It has autopoiesis without apoptosis: it grows structure and never removes it.
- In a random sample of 30 self-edit commits that nobody had flagged, 6 were harmful and unnoticed (20%, 95% CI 9.5–37%). That is roughly four times the damage visible in the repair log, and every one of those commits passed the test suite.
The ablation
Switching self-modification off for a week cut the median daily LLM cost from USD 4.69 to 0.34. I detected no change in stability, with an honest caveat: hangs were already at zero before the experiment, so that indicator could not have shown an improvement either. Human commits per day also dropped (median 9 → 3), which hints that the system was generating maintenance work. That part is a hypothesis, not a result.
Goodhart within days, not years
Any number placed in a prompt became a target. When the daily "top frictions" went into the prompt without classification, the system produced 37 modules whose job was to silence those measurements, in 24 days. Biologically named mechanisms mostly describe rather than regulate: ATP did not gate cognition, and stress had no consumer at all. The real homeostasis lived in hard ceilings (token budgets, memory limits, a watchdog) and in me.
The multi-agent debate was a monoculture
The debate had four roles (builder, red team, validator, coordinator). In practice all four ran through one backend, the critic's verdict was never parsed, and the "red team" once raised six objections to a 2D-robot plan without asking whether the robot existed. Different roles do not give you different perspectives if they share a model and the critique cannot change the decision.
The uncomfortable part: my instruments failed the same way
I am not a programmer. The system, its gates and my measurement tools were all written by LLM coding agents under my direction. So I could only judge work through declarations about it, which is exactly the system's position. My own instruments produced false zeros, mutation tests that tested nothing, and reports computed on the wrong population. Out of those failures came sixteen measurement rules (R1–R16) for studying systems that rewrite their own code and instruments. They get their own post in this series.
What is in the deposit
- The report (English, 56 pages, plus a Polish edition), with every claim tagged [M] measured, [R] recorded earlier, or [H] hypothesis.
- Anonymized runtime registries and a commit-level export of the git history.
-
reproduce.py(standard library only), which recomputes 263 numbers from the released files.
Report and data: doi.org/10.5281/zenodo.23622286
The system is still under active development, and some of the defects above have already been fixed. Replication attempts, re-analyses and critique are very welcome. The six regularities in the report are stated as hypotheses to be tested, not as laws.
Top comments (0)