A delegation record is the plain log of what a parent agent handed to a subagent: the prompt text, the tool list, the budget, the scope boundary, the expected output, and the parent goal. Most orchestrator-worker systems already produce something close to this, because the orchestrator has to decide on subtasks, route them to workers, and collect results before it can continue. That loop is described in detail in Arize's comparison of orchestrator-worker frameworks, which also lists the failure modes: dynamic routing, context continuity, handoffs, error handling, concurrency and memory management.
The observability side is more standard than most teams assume. The W3C Trace Context specification defines how a trace identifier and parent identifier travel between services so that downstream work is attached to the same causal tree, and it defines the traceparent header format directly: version, trace id, parent id, trace flags. The W3C Trace Context specification and OpenTelemetry's context propagation guide both describe the injection and extraction pattern that makes this work.
That matters because the review decision needs a stable key. If a delegation has a trace id and a task id, you can attach the reviewer's verdict to the same object the system already uses for debugging. Agent protocols are moving the same way: a proposal in the A2A project argues that delegation currently breaks traces because the client does not inject traceparent into the outgoing message and the receiver does not extract it, leaving "two separate traces instead of one connected tree," and proposes carrying trace context in message metadata under an extension key with span attributes reused from the OpenTelemetry GenAI conventions (A2A issue 2103).
Practical takeaway: do not build a separate review database. Add fields to the delegation record.
| Field | Where it comes from | Why review needs it |
|---|---|---|
| Trace id / task id | Propagated context, task protocol | Joins the verdict to the run and its child spans |
| Tool list | Orchestrator's worker config | Sets the maximum damage a bad run can do |
| Budget | Spend cap passed to the worker | Sets the maximum loss per delegation |
| Expected output | Orchestrator's subtask spec | Defines the target for drift scoring |
| Parent goal | Root user request | The reference point for drift |
| Customer-facing flag | Output destination | Decides whether a human reads it |
| Review verdict | Human reviewer | Trains and retunes the thresholds |



