Law 46 · Trust & Coordination
The Handoff Is the Hard Part
In multi-agent systems, failures live in the seams.

The principle
Each agent can be flawless in isolation and the system still breaks — because the bug lives between them: what got passed, what got dropped, who owned the state. Sub-agents don't inherit context automatically; anything not explicitly handed over simply doesn't exist on the other side.
Why it happens
In a multi-agent system the failure surface shifts from inside each agent to the boundaries between them, because nothing crosses a boundary unless it is explicitly passed. The empirical study behind the MAST taxonomy analyzed over 200 traces across seven multi-agent frameworks and found that a large share of failures were not single-agent reasoning errors but coordination breakdowns: inter-agent misalignment, dropped or misunderstood information, and missing verification of what was handed over. This mirrors the human-factors finding that handoffs fail when common ground, the shared context both sides assume, is not actually established. A sub-agent has no access to the constraints, sources, or state the orchestrator never serialized into the message, so a constraint like EU market only simply does not exist on the far side. The bug is invisible because each agent, judged alone, did exactly what it was told.
Watch for
- A downstream agent produces output that violates a constraint the upstream agent clearly knew about.
- Nobody can say which agent owns a given piece of state, so it gets dropped or duplicated.
- What crosses a boundary is assumed correct and never validated on the receiving side.
In practice
Your orchestrator spawns a research sub-agent and a writer sub-agent, each flawless in isolation, yet the final report cites a competitor's pricing the user never asked about. The bug lives in the seam: the orchestrator passed the topic but dropped the user's 'EU market only' constraint, and the writer had no way to know it ever existed. Sub-agents do not inherit context by osmosis; anything you do not explicitly pass simply does not exist on the other side. Define the contract at every boundary, hand over the full constraint set and source set deliberately, and validate what crosses instead of trusting it survived the trip.
Apply it
- Define an explicit contract at every boundary listing exactly what must be passed.
- Hand over the full constraint set and source set deliberately rather than assuming context is inherited.
- Validate incoming data on the receiving side instead of trusting it survived the trip.
The takeaway
Design the contract at every boundary. Pass everything the next agent needs explicitly, make state ownership unambiguous, and validate what crosses the seam instead of assuming it survived.