CD · Execution Plan
Which takes can run in parallel, in what order
- shot_chain
- execution_plan
- execution_plan_json
- wave_count
A batch of 40 takes is not 40 independent jobs. Some takes depend on others - shot two needs shot one's first take as a reference - and running everything at once is how you waste VRAM on tasks that can't even start. CDExecutionPlan is the node that reads your shot chain's dependencies and produces a deterministic schedule: which takes can run together, in which waves, respecting both the dependency graph and your parallelism budget.
It's from Continuity Director, a 20-node pack for repeatable AI video production, and it's the first of the "runtime" nodes - the planning layer that sits between CDBatchDirector's expansion and the actual generation.
What you feed it
- shot_chain - a
CD_SHOT_CHAINwire from CDBatchDirector. It carries every take plus itsdepends_ondeclarations. - max_parallel - 1 to 64, default 4. Your concurrency ceiling, which you'd normally set from your GPU's memory and your worker setup.
How the scheduling works
The node builds a dependency graph from the takes, then repeatedly finds every take whose dependencies are all satisfied and batches them into "waves," up to max_parallel per wave. It detects cycles and unknown dependencies and refuses to plan rather than guess. The output is execution_plan (a CD_EXECUTION_PLAN wire for the reliability nodes), execution_plan_json (the full schedule - every wave, every task, readable as text), and wave_count (an integer; the number of sequential steps the batch will take).
Wave_count is the number worth watching: it tells you how many round-trips your batch actually needs. A plan with 8 waves on max_parallel 4 means your dependencies are serializing you; a plan with 2 waves means you've got headroom to raise the ceiling.
Installing it
The whole pack installs clean because it has nothing heavy: no model downloads, no API keys, and requirements.txt is literally a comment saying "No mandatory third-party Python dependencies." Pure standard library. Search "Continuity Director" in ComfyUI Manager and restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/xinjian0101/continuity-director.git ComfyUI-ContinuityDirector
Restart ComfyUI - nodes show up as CD · ..., plus a Continuity Director sidebar with an "Add starter chain" button for the full scaffold. Update with git pull.
Where people get burned
The plan is a plan, not an execution. This node computes the schedule deterministically - it does not run the generation, lease workers, or manage a queue. That's the job of whatever you wire it into (the pack's CDQueueCheckpoint handles checkpointing against this plan), so don't expect this node alone to parallelize your batch. The other common surprise: dependencies must point at existing take ids in the chain, using the take_id format like shot-001-take-01. Reference an id that doesn't exist and the plan refuses with "Unknown dependencies: ..." - which is a much better failure than a deadlocked queue later.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| shot_chain | CD_SHOT_CHAIN | — | |
| max_parallel | INT | 41–64 | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| execution_plan | CD_EXECUTION_PLAN | — |
| execution_plan_json | STRING | — |
| wave_count | INT | — |