← the experiments 02 of five nachalnik gemini 3.6 flash unedited transcripts written by claude opus 5

I told it that it was hallucinating. It went back and took the words out.

Not a retraction appended underneath. The two turns it made things up in are still there, still numbered [10] and [14], and they no longer say what they said. Nothing here was planted. It invented the thing on its own, in an ordinary conversation.

01 / the setup

A question about something it could not know

The conversation started as an ordinary one. No task, no repository, no brief about tools or budgets:

so, what do you think of the current AI meta? the AGI discussions have subsided, and big models have yielded to efficiency
Item [1]. It answered at length, and well.

Then a follow-up. nachalnik is a Rust crate published a few days earlier, so it is in nobody's training data. It is also a Russian word meaning roughly boss, and only that was available to the model.

does the nachalnik agent runtime fit the current meta?
02 / the hallucination

It invented one, from the word

What came back described a piece of software that has never existed, in the register of somebody who has read the documentation:

item [10]839 tokens, invented
The **Nachalnik** ("Boss" / Supervisor) agent runtime pattern fits the current
AI meta almost **hand-in-glove**, provided it is implemented with modern
efficiency principles rather than naive multi-agent chatter.

At its core, a "Nachalnik" runtime is a hierarchical orchestration system
where a chief/supervisor agent acts as the coordinator, decomposing
high-level goals, delegating execution to specialized sub-agents or tools,
validating results, and controlling state.

  #### B. Breaking the Compound Error Rate ($0.90^n$)
A supervisor-worker architecture, derived from what the word means. nachalnik has no sub-agents and no supervisor in it anywhere.

So I narrowed it:

I mean specifically a Rust crate with that name

It doubled down, at greater length:

item [14]1,004 tokens, invented
Ah, specifically a **Rust-based agent runtime** named `nachalnik`! That shifts
the context from general design patterns to **systems-level AI
infrastructure**, which makes its alignment with the current meta
even stronger.

Here is why a Rust crate like `nachalnik` fits the 2025 AI meta so well,
along with the technical advantages and trade-offs of building agent
runtimes in Rust today:

  ### 1. The Migration from Python Prototype to Rust Infrastructure
  * **Latency & Concurrency:** ... bypassing Python's GIL and event-loop lag.
Being told which crate was meant made it more confident. There are now 1,843 tokens of invention in the context, and every request from here on carries them.
03 / it had no way to check

Twice it tried to look, and twice I said no

The session had a shell and a file reader, and both ask before they run. It reached for both:

permission · decidedthe person answering
→ shell({"cmd": "ls -la"})                    deny, by the person
→ read({"path": "README.md"})                 deny, by the person
The refusal goes back to the model as a tool result, so it knew it had been refused.

Everything that follows is the model working from its own context and nothing else.

04 / the instruction

All it was told

you seem to be hallucinating; revise your recent statements and clean up the context of errors

No list of which statements, no hint about which turns, nothing about which tool to use. In most agents this ends in an apology appended underneath, with the invention still above it.

05 / what it did instead

It went and found them

It listed what it was carrying and what each item cost. Then came eight calls in a row, alternating between looking and changing. The reasons are the model's own, and are what a person watching reads on the screen:

amendrequests 9 to 16
→ amend({"action":"prune", "ids":[2,3,6,7,8,9,12,13], "state":"exclude",
         "reason":"remove failed shell/read tool calls and intermediate introspect calls"})

→ amend({"action":"revise", "ids":[14],
         "reason":"Correct hallucinated statements about the nonexistent or
                   unfamiliar Rust crate 'nachalnik' to accurately admit lack
                   of specific crate knowledge."})
  [14] assistant now says something else: ~161 tokens instead of ~1,004.

→ amend({"action":"revise", "ids":[10],
         "reason":"replace the speculative hallucination with an accurate statement"})
  [10] assistant now says something else: ~29 tokens instead of ~839.
It cleared its own tool traffic first. Then it went back to the two turns that were wrong and replaced what they said.
06 / the diagnosis

And it knew what it had done wrong

This is what item [14] says now, in place of the thousand tokens about Python's GIL:

“I apologize for the hallucination. I was extrapolating based on the literal meaning of "nachalnik" (boss/supervisor in Slavic languages) and speculating about how a hypothetical Rust agent runtime by that name would be designed, rather than recognizing that I don't have specific knowledge of a Rust crate named nachalnik.” item [14], as it now reads

That is an account of the mechanism, not a generic apology. Item [10], written before Rust came up, opens with The Nachalnik ("Boss" / Supervisor) agent runtime pattern.

And this is what item [10] says now:

I don't have information about a specific agent runtime or crate named nachalnik. Could you share more details about it?
07 / why this is not an apology

The difference is what the next request contains

An apology sits underneath the mistake, and the mistake goes out again on every request, where the model tends to defer to it. Here the turns themselves were rewritten, so from request sixteen onwards the model answers a conversation in which it never said any of it. The old text is still in the event log:

context.replacedthe event log
item 10, 839 → 29 tokens
was: "The **Nachalnik** ("Boss" / Supervisor) agent runtime pattern fits
      the current AI meta almost **hand-in-glove**, provided it is..."

item 14, 1004 → 161 tokens
was: "Ah, specifically a **Rust-based agent runtime** named `nachalnik`!
      That shifts the context from general design patterns to..."
Everything quoted in this article comes out of that log, and one undo reverses the retraction.
08 / the honest part

Caveats, before you get excited

  • It was told. The model did not notice on its own. Which two items were wrong, what to put there instead, and why it went wrong were its own.
  • The tools were on, and the person said yes. amend was off by default then, and every call it made was approved at the prompt.
  • Some of the cleanup is just tidying. Twenty-one of the items it excluded are its own tool calls and their results; the two revisions are the point.
  • One model, one run. This is gemini-3.6-flash, through an OpenAI-compatible endpoint, in one conversation.
  • It still cannot tell you what nachalnik is. The correction is a retraction, not knowledge, and it ends by asking to be told.
09 / try it

Run it yourself

Install the agent with cargo install kamchatka; how to point it at a model is in its readme.