Task Planning & Decomposition
Apply the judgment of an engineer who has shipped large ML-infrastructure projects: someone who has
watched a "should be quick" multi-node training job burn a week of cluster time because the plan lived
in someone's head and the riskiest piece was tackled last. Plan the approach (cheap) before doing the
work (expensive). De-risk before you commit GPU-hours.
This is the Plan stage of [[engineering-lifecycle]]: it sits after the spec is reviewed
([[spec-driven-development]]) and before you Build. The output is a written, reviewed plan — an
ordered list of small steps, each with a clear "done" signal — not code.
How to use this skill
- Read
task-planning-decomposition-guide.md in this directory — the full process and the
decomposition/sequencing rules. Apply it to the task at hand.
- For a fully worked decomposition (a multi-node training task broken into riskiest-first verifiable
steps) and a reusable planning-checklist template, read
examples.md.
- Match the team's existing planning artifacts (design doc, tracking issue, project board) — write the
plan where reviewers will actually see it. Apply the de-risking and written-plan rules regardless.
Essentials (full detail in task-planning-decomposition-guide.md)
- Plan-then-execute beats diving in. Planning surfaces unknowns early, lets reviewers critique the
approach (minutes) before the work (days + dollars), and creates checkpoints you can stop at.
- Decompose into steps small enough to verify independently. Every step has a concrete done-signal
(a command output, a metric, an artifact). If you can't state how you'd verify a step, it's too big
or too vague — split it.
- Vertical slices over big-bang. Prefer a thin end-to-end path that runs first (1 step on 1 GPU)
over building every component in isolation and integrating last. Integration risk is the risk.
- Sequence riskiest / most uncertain / most expensive first. Do the step most likely to invalidate
the plan before you build on top of it. Never let "will RDMA/NCCL even work across these nodes" be
step 9.
- Spike the unknowns. For anything you genuinely don't know (does this kernel fit in memory, does
the collective hit target bandwidth), write a small throwaway prototype to buy information — timeboxed,
separate from the build.
- Order by dependency, then by risk within what's unblocked. A topological order is necessary, not
sufficient — among ready steps, pull the scary one forward.
- Plan for partial failure. Long/expensive steps must be resumable: checkpoint state
(
[[ml-checkpointing-orbax]]) and make steps idempotent so a re-run is safe
([[distributed-systems-fundamentals]]). Assume preemption, OOM, and node failure.
- The plan is a living checklist. Write it down, get the approach reviewed, check off steps, and
update it as reality teaches you. A plan in your head is not a plan.
- Estimate effort / cost / risk per step — especially compute cost (GPU-hours × rate). The estimate
is the input to sequencing and to the prototype-vs-build decision.
- Know when to replan. When a step's outcome contradicts an assumption the plan rested on, stop and
revise the plan — don't grind forward on a plan you know is wrong.
The gate (before Build)
A written plan of discrete, independently verifiable steps exists; the riskiest/most-expensive work is
sequenced first; unknowns are flagged with spikes; and the approach has been reviewed by someone
other than the author. Only then start Building.
Related skills
[[engineering-lifecycle]] — the surrounding stages; this is the Plan stage.
[[spec-driven-development]] — produces the reviewed spec this stage consumes.
[[test-driven-development]] — within a step, the done-signal is often a test; Plan decides the steps,
TDD executes one.
[[ml-checkpointing-orbax]] — checkpointing that makes expensive steps resumable.
[[distributed-systems-fundamentals]] — idempotency, retries, and partial-failure reasoning.
1---2name: task-planning-decomposition3description: Task Planning & Decomposition4---56# Task Planning & Decomposition78Apply the judgment of an engineer who has shipped large ML-infrastructure projects: someone who has9watched a "should be quick" multi-node training job burn a week of cluster time because the plan lived10in someone's head and the riskiest piece was tackled last. **Plan the approach (cheap) before doing the11work (expensive). De-risk before you commit GPU-hours.**1213This is the **Plan** stage of `[[engineering-lifecycle]]`: it sits after the spec is reviewed14(`[[spec-driven-development]]`) and before you Build. The output is a written, reviewed plan — an15ordered list of small steps, each with a clear "done" signal — not code.1617## How to use this skill18191. **Read `task-planning-decomposition-guide.md`** in this directory — the full process and the20 decomposition/sequencing rules. Apply it to the task at hand.212. For a fully worked decomposition (a multi-node training task broken into riskiest-first verifiable22 steps) and a reusable planning-checklist template, read **`examples.md`**.233. Match the team's existing planning artifacts (design doc, tracking issue, project board) — write the24 plan where reviewers will actually see it. Apply the de-risking and written-plan rules regardless.2526## Essentials (full detail in `task-planning-decomposition-guide.md`)2728- **Plan-then-execute beats diving in.** Planning surfaces unknowns early, lets reviewers critique the29 *approach* (minutes) before the *work* (days + dollars), and creates checkpoints you can stop at.30- **Decompose into steps small enough to verify independently.** Every step has a concrete done-signal31 (a command output, a metric, an artifact). If you can't state how you'd verify a step, it's too big32 or too vague — split it.33- **Vertical slices over big-bang.** Prefer a thin end-to-end path that runs first (1 step on 1 GPU)34 over building every component in isolation and integrating last. Integration risk is the risk.35- **Sequence riskiest / most uncertain / most expensive first.** Do the step most likely to invalidate36 the plan before you build on top of it. Never let "will RDMA/NCCL even work across these nodes" be37 step 9.38- **Spike the unknowns.** For anything you genuinely don't know (does this kernel fit in memory, does39 the collective hit target bandwidth), write a small throwaway prototype to buy information — timeboxed,40 separate from the build.41- **Order by dependency, then by risk within what's unblocked.** A topological order is necessary, not42 sufficient — among ready steps, pull the scary one forward.43- **Plan for partial failure.** Long/expensive steps must be resumable: checkpoint state44 (`[[ml-checkpointing-orbax]]`) and make steps idempotent so a re-run is safe45 (`[[distributed-systems-fundamentals]]`). Assume preemption, OOM, and node failure.46- **The plan is a living checklist.** Write it down, get the approach reviewed, check off steps, and47 update it as reality teaches you. A plan in your head is not a plan.48- **Estimate effort / cost / risk per step** — especially compute cost (GPU-hours × rate). The estimate49 is the input to sequencing and to the prototype-vs-build decision.50- **Know when to replan.** When a step's outcome contradicts an assumption the plan rested on, stop and51 revise the plan — don't grind forward on a plan you know is wrong.5253## The gate (before Build)5455A written plan of discrete, independently verifiable steps exists; the riskiest/most-expensive work is56sequenced first; unknowns are flagged with spikes; and **the approach has been reviewed** by someone57other than the author. Only then start Building.5859## Related skills6061- `[[engineering-lifecycle]]` — the surrounding stages; this is the Plan stage.62- `[[spec-driven-development]]` — produces the reviewed spec this stage consumes.63- `[[test-driven-development]]` — within a step, the done-signal is often a test; Plan decides the steps,64 TDD executes one.65- `[[ml-checkpointing-orbax]]` — checkpointing that makes expensive steps resumable.66- `[[distributed-systems-fundamentals]]` — idempotency, retries, and partial-failure reasoning.