Subagents do exactly what they're told.That's the problem

So…

When planning an algorithm for context management — you must first consider theory of mind.

Not the model’s. Yours.

The model can already do it. Ask it to explain something to a beginner and it tracks what the beginner doesn’t know. That capability got built out of behaviour — text encodes internal states probabilistically, so enough observed action recovers the shape of what produced it. What it recovers is the average. The modal human. The most-written version.

Your downstream reader is never the modal human. It’s one agent holding one context state that appears nowhere in the corpus. The capability is present and aimed at the wrong target, and nothing in the run will correct it.

This is why “vibe coding” won’t get you there. The failure is silent. An agent handed an incomplete context doesn’t throw — it fills the gap plausibly and proceeds at full confidence. There is no stack trace for assumed the reader knew. You cannot iterate toward correct on a signal that never fires.

And you can’t feel the gap either. You know what the constraint is for. Knowing is exactly what makes its absence invisible to you. You are the only mind in the system positioned to see the boundary, and you drew it.

To be unaware of what one model can or cannot know is to break the chain of logic.


Levels

Every time you assign an agent you are deciding a hierarchy of context. So decide it.

A level is not a fragment of the parent’s context. It is a section — everything needed to fully comprehend that level, and nothing about what sits above or below it. Blind in both directions. If an agent needs to look up to do its job, the cut was in the wrong place.

The useful way to say it: a level is operationally complete and semantically empty. Everything it needs to act, nothing it needs to mean. Your ear is a perfect ear and hears nothing meaningful. Meaning is assembled elsewhere, out of parts that individually make no sense. All levels together are one mind. Any level alone is nonsense.

A sketch:

L0   what to do
L1   how to do it?
       ← resources requested by 1
L2   how it can't be done
L2.1 how it can be done
       ← resources requested by 2

Two things worth noticing.

Resources are requested upward, not pushed down. The parent cannot anticipate everything its grandchildren will need — it doesn’t perform that decomposition. So don’t make it try. A child names a need without learning who fills it or why anyone wants it. Asking isn’t seeing, so closure survives.

The negative comes first, and it is not bookkeeping. Agents are bad at “not found” — nothing in training rewarded it, negative results are rarely written down, and there is no internal state that could represent I swept and found nothing. So don’t hope it surfaces. Give it a level.

And it earns the level, because a real negative branch doesn’t return the complement of the positive one. Ask “how do I deploy this service” and you get:

  • A: standard service install
  • B: it doesn’t need to be a service

B is not “not A”. B says the word service was an assumption. The negative level tests the assignment — it is the only node with standing to challenge the premise, because every other node takes its brief as given.

Returns

The child returns what was asked. Not how it was acquired.

But not the bare answer either. The discovery is large and the answer is short — not all of what is discovered is required as input, but all of it qualifies the input. What travels is warrant, not search: what the answer satisfies, what it rules out, what it assumed, how much was swept. The search dies at the boundary. The warrant crosses it.

This is load-bearing. Without it the consolidator can’t adjudicate — “can” and “can’t” are undecidable when you can’t see what either side assumed. And an empty negative is unreadable: swept and found nothing and swept nothing arrive looking identical. Emptiness carries no evidence on its own. Extent carries all of it.

Consolidation

A level with two viable answers doesn’t pick. It returns both, and the user intervenes.

Plural returns are a property of your brief, not a failure of the agent. If your criterion had discriminated, one answer would have come back. So the return isn’t “A or B” — it’s A or B, and here is the word in your brief that didn’t decide between them.

Which is the thing I actually find valuable here. The tree isn’t automation. It’s a specification debugger. Every escalation localises an ambiguity in your own thinking, at the exact level where you stopped being precise.

The part I can’t prove

All of this rests on one assumption: that an agent can honestly report the extent of its own sweep.

I don’t know that it can. Reporting extent has the same problem as reporting absence. If extent reports are confabulated, the consolidator is blind and everything above it is decoration.

That’s testable in an afternoon. Give a subagent a criterion and a field, ask for hits plus extent, then check the extent claim against the field yourself.

We are in an age of talking computers. Much is unproven, and little as yet can be proved. But that’s an argument for testing the one assumption you can reach, not for skipping it.