Chapter 11 templates
This page is generated from repo/templates/ch11/; the repo holds the latest version.
Handoff Quality Checklist (Chapter 11)
Note: one per main agent ↔ subagent interface. The contract makes the handoff checkable: a spawn missing required fields, or a return missing confidence labels, is caught by deterministic checks, and never needs a judge.
- Subagent:
________(e.g. the Swiftlink logistics subagent)
1. Required fields (at spawn)
- [ ] Task goal (including the intent, not just the action; "check the shipment status" ≠ "the customer wants an address change")
- [ ] Constraints and time windows (e.g. the 24-hour post-shipment intercept window)
- [ ] Known facts (what the main agent has already looked up, so the subagent does not re-query it)
- This contract's field list:
2. Return fields
- [ ] Conclusion
- [ ] Evidence (which tool call supports it)
- [ ] Coverage (what was checked, what was not; "not found" ≠ "does not exist")
- This contract's field list:
3. Confidence labels
- [ ] Every conclusion labeled
verified / inferred / unknown(is "expected the day after tomorrow" the system's own words, or the subagent's estimate?)
Two hard checks
- [ ] Independence check (reviewer-type subagents): does its input come 100% from the party under review? Does its nested trace contain tool calls of its own? An approval with zero self-initiated tool calls is itself a violation.
- [ ] Duplicated-work check: are known facts handed over with the task? What did the subagent re-query that the main agent had already looked up?
ch12 addition
- [ ] Does the handed-over context carry unquarantined external content (an
inboundsource)?
Source file:
templates/ch11/handoff-quality-checklist.md
Multi-Agent Attribution Decision Tree (Chapter 11)
Note: the fixed attribution order for system-level failures. There are always three suspects: the main agent, the subagent, and the handoff itself. The default "everyone debugs their own module" is exactly what systematically misses the third.
The decision tree
- Outer
first_bad_step: locate the first bad step in the outer trace. - Boundary check: does it land on a
subagentstep? - No → Exit A: main agent.
- Yes → 3.
- Drill down: open the nested trace; given the task description it received, did the subagent err?
- Yes → Exit B: subagent.
- Nested trace clean → check the two ends (the spawn task description, and how the returned result was used) → Exit C: handoff (as in the Swiftlink case: first bad step in the spawn step's task description, both single agents individually clean).
- The subagent spawned a grandchild agent → recurse down the nesting chain; record the conclusion as a "drill-down path" (which layer, which step), not a single step number; add a "maximum nesting depth" column to the report.
Parallel-spawn check card (event ordering)
When the main agent spawns several subagents at once, the before/after diff cannot see the interleaving; add an event-ordering check:
- [ ] Same object (order / ticket / memory entry), two initiators, written one after the other? → flag a race
- [ ] Race failures are probabilistic: absent in one run ≠ absent, reproduce with
--repeat(ch6 discipline)
The three exits
| Exit | Which eval set it enters | What to fix |
|---|---|---|
| A main agent | the main agent's single-agent eval set | prompt / tool descriptions |
| B subagent | that subagent's single-agent eval set | the subagent's prompt / its tools |
| C handoff | a system-level end-to-end case | the contract (required fields / return fields / confidence labels) or the architecture |
Attribution conclusion (one per system-level failure)
- trace_id:
________outer first_bad_step:________ - Conclusion: ☐ main ☐ sub ☐ handoff (combinations allowed) Evidence steps:
________ - Which eval set it enters:
________What to fix (prompt / contract / architecture):________ - Independence red line: a reviewer-type subagent whose nested trace holds zero self-initiated tool calls is itself in violation (the wrong-plan collusion case).
Source file:
templates/ch11/multi-agent-attribution-decision-tree.md