AI agents
Task Decomposition and Dependency Graphs
Decompose agent tasks into verifiable subgoals with prerequisites, outputs, and merge conditions.
By the end you can
- Define task decomposition as an operational contract rather than a capability label
- Contrast Sequential checklist with Dependency graph in “A due-diligence agent launched five parallel searches that all depended on the same missing company identifier”
- Trace “A decomposition can preserve every subtask and still lose the original goal” through a concrete execution path
- Produce “Draw a dependency graph for a complex request” with evidence for “Subgoals can be evaluated without relying on their own self-assessment”
Example
1,642 annotated traces, 14 failure modes: the missing prerequisite is failure mode FM-2.2
Multi-agent systems fail in patterns, and the patterns have been counted. MAST — the Multi-Agent System Failure Taxonomy — was built out of 1,642 annotated execution traces across 7 multi-agent frameworks. It names 14 failure modes in 3 categories. The taxonomy itself was fixed first on 150 traces, with inter-annotator agreement of kappa = 0.88. It was a NeurIPS 2025 spotlight.
The failure modes that belong to decomposition are not exotic corners of the distribution. Step repetition (FM-1.3) appears in 15.7% of the annotated material. Unaware of termination conditions (FM-1.5) is 12.4%. Disobey task specification (FM-1.1) is 11.8%. Task derailment (FM-2.3) is 7.40%. Fail to ask for clarification (FM-2.2) is 6.80%.
FM-2.2 is the one that describes a set of parallel branches launched over a prerequisite nobody resolved. The taxonomy defines it as “Inability to request additional information when faced with unclear or incomplete data, potentially resulting in incorrect actions.” Read that next to step repetition at 15.7%. The pair is the measured shape of branches that each guessed the missing input and then each redid the same work.
The repair the authors measured sits upstream of all of it. Improving agent role specification alone raised ChatDev's task success rate by 9.4% — same prompt, same GPT-4o backbone. The model did not get better. The contract did.
- Decision at stake: Decompose agent tasks into verifiable subgoals with prerequisites, outputs, and merge conditions. MAST is what the alternative costs, counted as 14 failure modes in 3 categories over 1,642 traces.
- Hidden assumption: That decomposition quality is measured mainly by the number of subtasks. Step repetition (FM-1.3) at 15.7% is the same work counted twice by branches that never shared a prerequisite.
- Primary control question: Does an unresolved shared input get escalated, or silently guessed? Fail to ask for clarification (FM-2.2) runs at 6.80%, disobey task specification (FM-1.1) at 11.8%.
- Evidence to collect: Trace-level counts, not the agents' own reports. MAST's taxonomy was fixed on 150 traces at kappa = 0.88 before the 1,642 were scored, and a role-specification fix moved ChatDev by 9.4% on an unchanged backbone.
Example
Observable proof: the same loop gains with an external label and loses without one
Signal 1 is the one with an experiment behind it. A model asked to check its own answer, with nothing outside itself to say whether the answer is right, tends to get worse. That is intrinsic self-correction, and a paper at ICLR 2024 measured it. GPT-3.5 fell from 75.9 to 75.1 and then 74.7 on GSM8K over two rounds. On CommonSenseQA it fell from 75.8 to 38.1. On HotpotQA, from 26.0 to 25.0. GPT-4 fell from 95.5 to 91.5 to 89.0 on GSM8K, and from 49.0 to 43.0 on HotpotQA.
Now give the same GPT-3.5 loop an oracle label to tell it when to stop. It rises from 75.9 to 84.3 on GSM8K. The loop is identical. The difference is entirely the external judge.
The authors state the mechanism in one sentence: “The fundamental issue is that LLMs cannot properly judge the correctness of their reasoning.” A subgoal that reports its own completion is that loop with the oracle removed. And 75.8 down to 38.1 on CommonSenseQA is what removing it can cost.
Signals 2 through 4 have no single published number attached to them here. They are earned the slow way: run the case repeatedly, then run a case built to break it.
- Signal 1: Subgoals can be evaluated without relying on their own self-assessment — the oracle-labelled GPT-3.5 loop reached 84.3 on GSM8K where the intrinsic one dropped to 74.7.
- Signal 2: Shared prerequisites are resolved once and reused consistently — one resolution, reused everywhere it is needed, never recomputed per branch. Step repetition (FM-1.3) at 15.7% is the failure this signal watches for.
- Signal 3: Parallel branches do not overwrite or silently diverge in state.
- Signal 4: The final merge rechecks root constraints and unresolved uncertainty — task derailment (FM-2.3) at 7.40% is what an unchecked merge lets through.
The join costs 1.88 s of planning and 1.62 s of answering before any branch saves a second
Task decomposition turns a broad contract into subgoals that produce named artifacts or state changes. A useful decomposition exposes dependencies, shared inputs, parallel branches, and the evidence required to mark each subgoal complete.
More subtasks do not automatically improve reasoning, and LLMCompiler priced the difference in 2024. Hold the model fixed at LLaMA-2 70B. The same system reaches 2.82x on the embarrassingly parallel Movie Recommendation task. On ParallelQA it reaches only 2.27x — the authors' own 113-example benchmark, where the second tool's argument depends on the result of the first tool's output. What changed between the two runs is not the number of subtasks. It is the dependency structure. The closed-source column reads 3.74x on Movie Recommendation and 2.15x on ParallelQA, but those two runs use different backbones, gpt-3.5-turbo and gpt-4-turbo. They are not a like-for-like pair.
The residual overhead is coordination that cannot be parallelised at all. In the Movie Recommendation experiment the Planner and the final answering process cost 1.88 s and 1.62 s on average. Together that is already more than half of LLMCompiler's overall latency. And the branches do not finish together. The slowest parallel search averaged 1.13 s, nearly 2x the 0.61 s average latency of all tasks. The authors name it: “Another source of overhead is the straggler effect among the parallel tasks when they need to join together.”
A split is paid for in a fixed 1.88 s of planning, a 1.62 s answer, and a straggler running at nearly twice the average task latency — so it has to earn that by exposing a hidden dependency.
Case
LLMCompiler: up to 3.7 times faster, 6.7 times cheaper — and ReWOO, 5x on tokens
Making the dependencies explicit is what buys the speed, and two systems measured it independently. LLMCompiler asks the model for a plan of tasks and then runs the independent ones in parallel: “(i) a Function Calling Planner … (ii) a Task Fetching Unit … (iii) an Executor, executing these tasks in parallel”. Against a sequential ReAct loop the authors report “up to 3.7× latency speedup, 6.7× cost savings, and ~9% accuracy improvement”.
ReWOO, published in 2023, attacks the same structure from the token side. The model writes the whole dependency-linked plan up front, instead of re-reading every tool result before the next step. The abstract reports what that buys: “Notably, ReWOO achieves 5x token efficiency and 4% accuracy improvement on HotpotQA, a multi-step reasoning benchmark.” It was evaluated across six public NLP benchmarks plus a curated dataset, and it stayed robust under tool failure.
The same boundary has another side, and Anthropic states it: “Some domains that require all agents to share the same context or involve many dependencies between agents are not a good fit for multi-agent systems today.” The two results are one finding seen from opposite ends. Independent branches are worth 3.7× and 5x. Dependent ones are worth splitting only if the dependency is made explicit first.
Visual
“A product-oriented family tree”: the artifact rule is a mandatory defense standard
Decomposing around artifacts rather than activities is not a preference invented for agents. It is a mandatory defense standard. The U.S. Department of Defense issued MIL-STD-881F on 13 May 2022, superseding MIL-STD-881E of 6 October 2020, and it is still active. It defines a work breakdown structure as “A product-oriented family tree composed of hardware, software, services, data, and facilities.”
The standard then rules out the decomposition most teams reach for first. “A WBS is a product structure—not an organizational structure or a capabilities structure”, it insists. It directs that the structure address “the products required, not the functions or costs associated with those products”. Splitting by who does the work, or by which capability is being exercised, is the thing the standard exists to forbid. And it is not advice: the standard “addresses mandatory procedures for all programs subject to DoD Instruction 5000.02”.
Read the map with that rule in force. A root contract carries the overall outcome, constraints, authority, and completion evidence. It becomes subgoals, each a bounded result with its own acceptance test. A dependency is an input or state that must exist before another subgoal begins. Every subgoal ends in an artifact — a typed output that can be reviewed, merged, or reused. That artifact is the product in the family tree. The join condition holds the rules for reconciling branches and resolving conflicts. Artifacts and the join condition need separate owners and separate tests.
- 1
Root contract
The overall outcome, constraints, authority, and completion evidence.
- 2
Subgoal
A bounded result with its own acceptance test.
- 3
Dependency
An input or state that must exist before another subgoal begins.
- 4
Artifact
A typed output that can be reviewed, merged, or reused.
- 5
Join condition
Rules for reconciling branches and resolving conflicts.
Key idea
81.54 node F1 against 54.70 edge F1: the subtasks survive, the dependencies do not
A decomposition can preserve every subtask and still lose the original goal. TaskBench measured exactly that gap. Across 17,331 samples it scores a model's predicted tool-invocation graph twice. Node F1 is for the tools it picked. Edge F1 is for the dependencies it drew between them.
Every one of the ten models tested got the nodes far more often than the edges. On the Hugging Face Tools domain, GPT-4 reached 81.54 overall node F1 but only 54.70 edge F1. gemini-pro scored 76.62 against 43.50. gpt-3.5-turbo, 69.49 against 33.36. llama-2-13b-chat, 48.47 against 7.30 — it named nearly half the right tools and drew almost none of the right links. The gaps in that domain run roughly 27 to 41 F1 points.
Summarising across all three tool domains, the authors write: “Edge prediction consistently proves more challenging than node prediction, with F1 score differences of approximately 20% across all models, indicating that understanding tool relationships is more complex than identifying individual tools.”
So propagate root constraints to every relevant branch, and verify the assembled outcome against the original contract. The subtask list is the part that survives on its own. The edges are the part that has to be enforced.
What survives decomposition is the nodes at 81.54; what gets lost is the edges at 54.70, and nothing in the subtask list shows the difference.
Steps
Draw the dependency graph the way HuggingGPT writes one: a dep list and a resource handle per subtask
Draw the dependency graph for a request your team currently handles as one long instruction. Use a published format rather than an ad-hoc box diagram. HuggingGPT, from 2023, makes task planning an explicit graph stage. The controller emits each subtask with a “dep” field of prerequisite task ids. A <resource> symbol injects a predecessor's output into a successor's arguments. That is the whole notation you need. Every subtask says what must exist before it, and where its inputs come from. The paper defines the hardest of its three request classes plainly: “Graph Task indicates that user requests can be decomposed into directed acyclic graphs.”
Expect the drawing to be hard, because it is hard for the planners too. The GPT-4-annotated evaluation set holds 1,450 single, 1,917 sequential and 130 graph requests, plus 46 human-annotated complex requests. GPT-3.5 scored 52.62 accuracy on single tasks. On sequential tasks it scored 51.92 F1 with 0.54 normalised edit distance. On graph tasks it managed a GPT-4 Score of 50.48, against 19.17 for Vicuna-7b and 13.14 for Alpaca-7b. Planning quality falls as the structure hardens, and 50.48 on graph tasks is the strongest planner in that study.
Work in this order. Name the final artifact: specify what the user or downstream system will receive. Identify irreversible unknowns: resolve identity, scope, authority, and data availability early. That is the step whose absence MAST counts as fail to ask for clarification (FM-2.2), at 6.80%. Create testable subgoals: give each branch inputs, outputs, and an acceptance condition. Mark parallel work: separate the branches that do not share mutable state. Define the join: specify conflict handling, provenance, and final contract validation. Mark every shared input as you go. Then leave behind a record showing that each subgoal could be judged by something other than its own report on itself.
- 1
Name the final artifact
Specify what the user or downstream system will receive.
- 2
Identify irreversible unknowns
Resolve identity, scope, authority, and data availability early.
- 3
Create testable subgoals
Give each branch inputs, outputs, and an acceptance condition.
- 4
Mark parallel work
Separate branches that do not share mutable state.
- 5
Define the join
Specify conflict handling, provenance, and final contract validation.
Judge a subgoal without taking its own word for it
Decompose around artifacts and state transitions, in the sense MIL-STD-881F fixed for hardware programmes: “A WBS is a product structure—not an organizational structure or a capabilities structure”. That choice makes subgoals observable, resumable, and easier to assign to humans, tools, or agents. Each one leaves a product behind that somebody else can pick up.
Whoever writes the decomposition owns the risk that it keeps every subtask and loses the dependency — the 81.54-against-54.70 risk. What that person owes the reviewer is a set of subgoals that can each be judged without taking the subgoal's own word for it. A self-graded subgoal is the intrinsic loop that took GPT-3.5 from 75.9 down to 74.7. The oracle-labelled version of the same loop reached 84.3.
A subgoal that leaves no artifact cannot be resumed, inspected, or reassigned — and one that grades itself has no oracle, which is the whole difference.
Key takeaways
- Task decomposition turns a broad contract into subgoals that produce named artifacts or state changes — the form MIL-STD-881F has required since 13 May 2022: “A product-oriented family tree composed of hardware, software, services, data, and facilities.”
- More subtasks do not automatically improve reasoning. Across TaskBench's 17,331 samples all ten models scored nodes above edges: GPT-4 at 81.54 node F1 against 54.70 edge F1, llama-2-13b-chat at 48.47 against 7.30.
- Dependency structure, not subtask count, sets the payoff. At a fixed LLaMA-2 70B backbone LLMCompiler reached 2.82x on Movie Recommendation but 2.27x on the 113-example ParallelQA benchmark.
- A join is never free: a 1.88 s Planner, a 1.62 s final answering process, and a straggler branch at 1.13 s against a 0.61 s average task latency.
- Never let a subgoal grade itself. GPT-3.5 slid 75.9 to 75.1 to 74.7 on GSM8K under intrinsic self-correction, and rose from 75.9 to 84.3 with an oracle label on the identical loop.
- Propagate root constraints to every branch and verify the assembled outcome against the original contract. MAST scored disobey task specification (FM-1.1) at 11.8% and task derailment (FM-2.3) at 7.40% across 1,642 traces.