A four-part series on one agent pattern.
- The Caller Knows Nothing
- The Agent Writes the Next Prompt
- “Anthropic Already Does This.” Let’s Check.
- Antifragile by Construction (you are here)
The first three parts of this series described a pattern: a caller that knows nothing, results written for the next step, a transcript you can replay, and a fair check against what Anthropic ships. This last part is about why it matters over time: the mistakes it removes, why it gets better under stress instead of breaking, and why it scales.
The antipatterns it removes
Every one of these is a mistake I’ve made. Each row names the pain first, so you can spot it in your own system.
| Antipattern | What goes wrong | Rule that fixes it |
|---|---|---|
| The smart host: glue code that knows each tool’s insides | Every new tool needs host changes; the coupling only grows | 1. The caller knows nothing |
| The vague description | The tool is called wrong or comes back empty (in my log: count: 0, twice) |
2. The description is the interface |
| The cage: every field turned into a fixed list | The right shape, no surprises, no emergence | 3. Full liberty |
| The overloaded parameter: one field asked to do three jobs | The model blends the jobs or refuses | 2. One parameter, one job |
| The lost result: tool output kept out of the transcript | The model misremembers what it did | 4. Outputs go back into the transcript |
| The leaky transcript: insides, prompts and raw dumps in context | Noise, cost and wrong turns | 4. Outputs only |
| The silent return: raw data with no shape and no next step | Every caller re-formats it, differently each time | 5. The agent writes the next prompt |
| The post-processor: regex or word lists fixing the model’s wording afterwards | Brittle, language-specific, a fight that never ends | 2 and 5. Fix it in the description and the agent’s own checks |
| The full rerun: starting over to fix one step | Slow, expensive, and steps that were fine change too | 6. Replay one turn with more data |
Antifragile, by construction
Nassim Taleb’s word for things that get better from stress, not just survive it, is antifragile. I think this pattern earns the word, and here’s the mechanism rather than the slogan.
In my paper on living holograms, the thing an AI works on is a living object: it changes only by passing through a lens (an agent like the ones above), each pass is recorded so it can be replayed, and what one pass produces is carried into the next. Put that together with the rules here, and every kind of stress turns into an input:
- A failed check goes back into the transcript as one plain sentence, and the next turn corrects for it.
- A surprise in the surroundings (a new file, an odd request, a missing field) is just more transcript, and a caller with full liberty can use it.
- A missing capability becomes a new agent that loads on the next turn.
- A mistake found late is a reason to replay that one turn with what you know now, not a reason to start over.
- A better model reads the same descriptions and does more with them, without a line of host code changing.
No one programs the adaptation. It happens implicitly, turn by turn, because the object only ever moves through steps that can see what just happened.
The honest caveat: the same loop that carries a good result forward can carry a bad one. Antifragility here isn’t magic. It comes from three guards working together: checks that cite the material, results that come back into view, and replay. Remove any one and the pattern is merely flexible.
It scales: the transcript is the only state
There’s a second reason this holds up, and it’s about size rather than stress. The Brainstem’s core is stateless: it keeps no conversation of its own between calls. Everything a turn needs arrives in the transcript, and everything it produces leaves in the transcript. So the transcript file is the only thing a caller ever has to pass.
That means you can stand up any number of Brainstems side by side, one per use case, each with its own agents loaded, and hand the same transcript to all of them, or a different one to each. None of them needs a shared session, a sticky server or a database to stay in sync. Add machines and you add capacity. It’s the same reason the web scaled: HTTP servers that keep no session state can be multiplied freely, because the request carries what matters.
And because that transcript can be written as RAPP/1 frames, content-addressed and hash-linked, it isn’t just portable, it’s verifiable. Any Brainstem, anywhere, can check that the history it was handed is the history that happened before it adds a turn. Statelessness gives you scale; RAPP/1 gives you trust in what you scaled.
The honest edge: agents can still keep their own stores (the memory agent writes to one). The core doesn’t, and the more of that state you carry as transcript, the more freely the whole thing scales.
Distributed AI, and the cost of the other path
Stateless scale is the doorway to distributed AI: many minds, on many machines, owned by different people, working on the same problem. With this pattern, distribution needs nothing new. A transcript is a file. Pass it to a Brainstem on a laptop, one in a browser, one in the cloud, one at a partner’s office. Each adds its turn through its own agents and hands the transcript on. RAPP/1 frames let each one verify what it received. There is no central service to coordinate, because the coordination is the transcript.
Now look at the path the comparison in part three describes. Each property lives in a different mechanism with its own host and its own state: sessions saved by the SDK, subagent transcripts kept apart, checkpoints local to Claude Code, Managed Agents that can’t take a new tool mid-session. Each was a sensible answer to a real need. But distribution is a new need, and on that path a new need tends to arrive as a new feature: a way to share sessions, sync memory, hand work between hosts. Every one adds to the list a builder has to learn, and every one has to fit with all the others.
This is my reading of the trajectory, not something Anthropic has said, and they may well take another road. But history is consistent here. CORBA kept adding services to make distributed objects work and got heavier with each one; the web won with a uniform interface and stateless requests that carried what mattered. Features add up. A shape that doesn’t need them is what scales.
Go deeper: two free companion books, written side by side with the same chapters so you can compare them page for page: The Brainstem Agent Programming Language and The Claude Agent Programming Language. Both are runnable, and the Claude one cites Anthropic’s docs throughout.
