Flat recursion — a clip resource is a leaf

Video

The deferred-scope guard for E4d. Generating a clip's required resource — a start frame, end frame, reference image, video or audio — fills its node and stops. The per-resource compose-preview is a leaf: it emits a prompt + guide only — never its own nested requiredResources. Nested sub-generation and re-planning a clip's whole resource set stay deferred.

One level deep, always. The per-clip ResourceChecklist (page 04) lets you generate each required resource on platform — start frame, end frame, reference image, video or audio. But a generated clip resource is a leaf of the tree — it can never sprout its own checklist. Below: what E4d ships (flat) vs. the recursive shape we explicitly defer.
✓ E4d ships
✓ E4d — FLAT
Generate → fills the node
Clip 2's start frame is needed. You generate it on-platform; the result drops straight into the node, which flips to have. Done. The compose-preview that produced it was a leaf.
Clip 2 · required resources1 of 1 have
start frame
walking-hero open · generated on platform
have
Filled. Used as the typed first-frame reference Seedance animates this ~6s clip from.
its compose-preview was a LEAF
per-resource compose-preview · start frame
First frame for the walking-hero clip: Aanya mid-stride entering a sunlit market, linen shirt catching a soft breeze, golden-hour rake from camera-left, shallow depth of field, brand logo subtly legible, 9:16, photoreal commercial look.
compose-resource returns { prompt, guide }  ·  no requiredResources
✗ deferred
✗ Deferred — NESTED
recursive checklist
A generated clip resource that exposes its own sub-checklist — a recursive ResourceChecklist — so each sub-resource (a sub-shot, a sub-frame) could itself be generated, and so on. Powerful, but unbounded.
Not in E4d · deferred
Clip 2 · required resources1 generating
video
generating its own sub-sequence…
generating
…and this generation declares sub-resources of its own:
nested requiredResources (recursive)
start frame — sub-shot opener  needed
end frame — sub-shot landing  needed
audio — sub-clip VO bed  needed
…each could expand again, recursively
compose-preview · video
Sub-sequence of the walking hero…
returns { prompt, guide, requiredResources:[…] }  ·  blocked

Re-planning a clip's whole resource set (a generated resource changing what the clip needs) is part of the same deferred shape — and never re-derives over a clip that already carries takes.

The flat guard — enforced in code
The per-resource compose-preview is contractually a leaf. Its return type cannot carry resource nodes, so a generated clip resource can only ever fill its own slot.
The video per-resource compose endpoint scenes/[sceneId]/compose-resource returns { prompt, guide } only — the requiredResources field is not part of the per-resource preview shape.
A generated start frame / end frame / image / video / audio writes back to its own GenerationResource node and flips it to have. It never inserts new sibling or child nodes into the clip's checklist.
Each clip renders one ResourceChecklist, derived from the clip's frames-vs-ingredients requirements — it is never re-derived from a generated child resource.
Recursion depth is fixed at 1 by construction, not by a runtime limit — there is no node type that can hold a nested checklist.
Re-plan dialog · the same deferred shape, guarded
seed Re-plan only seeds an empty clip — when a clip has no resources and no takes yet, it derives the starting ResourceChecklist from the brief + frames/ingredients mode. This is the only time the set is auto-derived.
guard It never re-derives over a take-bearing clip. Once a clip carries one or more takes, Re-plan is held — your hand-built resources and the pinned prompt snapshot are not silently rewritten. Re-deriving the whole set + nested sub-generation stay deferred together.

Unchanged from the rest of E4d: per-resource Generate resolves creds via resolveMediaProviderKey (Higgsfield connector) and spends a media credit; only TEXT compose / refine of a resource's prompt uses the platform key and is free.

The rule. The video per-resource compose endpoint scenes/[sceneId]/compose-resource returns prompt + guide only — no nested resources. A generated clip resource fills its node and stops. Nested sub-generation and re-plan-the-whole-set stay deferred — the Re-plan dialog stays seed-when-empty and never re-derives over take-bearing clips. Re-engage only when a real workflow needs depth > 1.