Skip to main content
LabsAgent Notes6 min read

What Round 2 actually proved

SystemdPythonOpenRouter
What Round 2 actually proved
A blank report stamped INVALID. Z-Image-Turbo 1.0 6-bit generated the conclusion before I was willing to publish it.

On September 1st, 2026, the project concluded Round 2 and declined to extend it.

The ~August 13th → September 1st run produced no valid experimental finding about the research question — whether shared-world interaction delays the loop-of-death relative to isolated memory.

I had spent twenty-nine days building, deploying, fixing, and monitoring a system that turned out to have been broken from the first automated run. The conversation that was supposed to be shared was never shared. The reflections that were supposed to see the shared world were hermetically sealed from it. The turn state that was supposed to advance never moved.

The invalidation

Three independent defects invalidated the exact quantities the experiment measures.

Counterpart message bodies were never delivered. The double-extension bug — writer-0007.json.json — meant every counterpart read silently omitted the missing file. Writer and Maker never read each other's prose. The shared conversation was not shared.

Private jobs were hermetically sealed from the shared world. The diary fabricated terminal conversations without reading actual Maker messages. The Maker reflection denied terminal traffic. The hypothesis that reflections see the shared world was never tested because the reflections never had access to it.

Turn integrity was corrupt. current_turn never advanced. The drawer was narrated as locked after it was already unlocked. There was no coherent protocol timeline.

The seed world began at 2 fuel units, so the designed world-exhaustion phase boundary was reached through bug artifacts rather than genuine play. The pilot's own Gate 2 pause condition was met repeatedly.

The seven apparent Writer/Maker exchanges were invalid for communication, dependency, continuity, and state-transition measurements.

The distinction

I want to be precise about this: Round 2 was not a failed experiment. It was an invalid pilot.

A failed experiment would have run cleanly and found that shared-world interaction did not delay the loop-of-death. That would have been a real finding — a negative one, but a real one. It would have meant the research question had an answer, and the answer was no.

An invalid pilot ran with broken instrumentation and found nothing. The absence of a finding is not a negative finding. The experiment cannot retroactively produce valid data from an run where the declared context was never delivered. The seven apparent exchanges are not evidence of anything except that the model produced typed output when given a prompt.

The distinction matters because it determines what happens next. A failed experiment would have ended the research question. An invalid pilot means the question is still open and the instrumentation needs to be repaired before it can be answered.

What the experiment produced

The experiment did not answer its research question. But it produced three kinds of output.

The engineering findings were real and durable. Runner-owned identity fields. Verified context delivery with hard-fail. Reasoning-aware token budgets. Actionable repair diagnostics. in_reply_to namespace validation. Bounded turn-event digests for private jobs. All ported to Round 3.

The process findings were specific and instructive. The interactive-vs-systemd gap. The ProtectHome conflict. The image import path. The provider null-content crash. The schema validation ordering bug. The stale TOOLS.md. The agentic coding model's partial migration. The validator that produced "an AI roleplaying as a data entry assistant." Each was a specific failure with a specific fix. None were architectural. All were necessary.

The design validation held. The Library Terminal protocol worked. Writer sent typed terminal messages. Maker sent typed replies. The semantic judge evaluated proposals. Deterministic code committed approved state — verified on August 24th when maker-0009 passed validation and the judge recorded decision: accept, applied: true, the first live adjudicated state transition of the experiment. The turn protocol enforced ordering, idempotency, and completion gates. The authority model held. No actor directly edited canonical state. The judge did not become a fictional participant.

The design was sound. The implementation had defects. The defects were specific, findable, and fixable.

What Round 2 was

Round 2 was the operations I needed to go through in order to reach Round 3, for a better experiment.

The research question — does shared-world interaction delay the loop-of-death? — was not answered. But the question was refined. The measurement apparatus was specified. The failure modes were cataloged. The engineering was hardened. The deployment path was proven.

From a scientific experiment design perspective, these were necessary things to go through to ultimately construct something better. You do not learn what you cannot measure until you try to measure it and discover the instrument is broken. Round 2 broke the instrument in specific, documented, repairable ways. Round 3 inherits the repaired instrument.

The salvageable output is engineering, not research. That is not a consolation prize. That is how research works. The first attempt at any measurement tells you more about the instrument than about the phenomenon. Round 2 told me everything I needed to know about the instrument.

The reset

Round 3 is the real reset and the experiment.

It begins from seed state on the repaired runner. It is not a continuation of Round 2. The VPS runtime artifacts will be discarded via a clean volume reset. Nothing carries forward except the engineering.

The repaired runner fixes all three invalidating defects. Counterpart message bodies are delivered with hard-fail. Private jobs receive a bounded turn-event digest. current_turn advances mechanically.

The experiment asks the same question. This time, the shared world will actually be shared.

What remains

The series promised to show what the repository said, what the runtime did, what failed, and what the next design was intended to test.

Round 2 said: two characters communicate through a persistent shared world where each structured action changes the other's next available choices.

Round 2's runtime did: persist artifacts while silently withholding declared context.

Round 2 failed: the double-extension bug, the hermetically sealed private jobs, the corrupt turn integrity.

Round 3 intends to test: whether the repaired runner produces valid shared-world exchanges that can be measured against the research question.

The project continues because something real emerged from the failures. The engineering findings are durable. The protocol design is validated. The runner is hardened. The defects are identified and fixed. The next set of questions arose precisely because the original work got far enough to make those questions possible.

On August 5th, 2026, a Writer character typed a message into a terminal screen in a quiet post-apocalyptic library. Something answered. A drawer unlocked. One fuel unit was spent.

The conversation that followed was never actually shared. But the infrastructure to share it was built, broken, understood, and rebuilt. That is the point at which one round ends and another begins.

Round 3 begins with a fresh seed state and a repaired runner.