Comfy-Org/ComfyUI · error · ValueError
pose_start_percent ({}) must not be greater than pose_end_pe
Error message
pose_start_percent ({}) must not be greater than pose_end_percent ({}). What it means
The Wan pose-control conditioning node validates that pose_start_percent <= pose_end_percent; the interval [pose_start_percent, pose_end_percent] controls when pose guidance is active during the diffusion schedule. An inverted interval is meaningless and rejected immediately in execute().
Source
Thrown at comfy_extras/nodes_wan.py:1297
io.Float.Input("pose_start_percent", default=0.0, min=0.0, max=1.0, step=0.01, tooltip="Sampling percent at which the pose influence starts. Outside the window the pose branch is skipped entirely, which also speeds those steps up."),
io.Float.Input("pose_end_percent", default=1.0, min=0.0, max=1.0, step=0.01, tooltip="Sampling percent at which the pose influence ends. Motion is mostly established early, so e.g. 0.7 can loosen fine detail while keeping the choreography."),
io.Float.Input("reference_image_strength", default=1.0, min=0.0, max=10.0, step=0.01, tooltip="Scales how strongly generated frames attend to the reference image's latent frame. Below 1.0 loosens identity/appearance adherence (e.g. to let the prompt restyle), above tightens it against drift."),
],
outputs=[
io.Conditioning.Output(display_name="positive"),
io.Conditioning.Output(display_name="negative"),
io.Latent.Output(display_name="latent"),
io.Int.Output(display_name="trim_latent", tooltip="Number of latent frames that should be trimmed before decoding."),
io.Int.Output(display_name="trim_image", tooltip="Number of overlapping image frames when extending a video."),
io.Int.Output(display_name="video_frame_offset", tooltip="Frames to seek into the pose video."),
],
is_experimental=True,
)
@classmethod
def execute(cls, positive, negative, vae, width, height, length, batch_size, video_frame_offset, reference_image=None, pose_video=None, clip_vision_output=None, positive_pose=None, clip_vision_output_pose=None, continue_motion=None, pose_strength=1.0, pose_start_percent=0.0, pose_end_percent=1.0, reference_image_strength=1.0) -> io.NodeOutput:
if pose_start_percent > pose_end_percent:
raise ValueError("pose_start_percent ({}) must not be greater than pose_end_percent ({}).".format(pose_start_percent, pose_end_percent))
latent_length = ((length - 1) // 4) + 1
latent_width = width // 8
latent_height = height // 8
if reference_image is None:
reference_image = torch.zeros((1, height, width, 3))
ref_image = comfy.utils.common_upscale(reference_image[:1].movedim(-1, 1), width, height, "area", "center").movedim(1, -1)
ref_latent = vae.encode(ref_image[:, :, :, :3])
trim_latent = ref_latent.shape[2]
ref_motion_latent_length = 0
if continue_motion is None:
image = torch.ones((length, height, width, 3)) * 0.5
else:
continue_motion = continue_motion[-cls.CONTINUE_MOTION_FRAMES:]
video_frame_offset = max(0, video_frame_offset - continue_motion.shape[0])
continue_motion = comfy.utils.common_upscale(continue_motion[-length:].movedim(-1, 1), width, height, "area", "center").movedim(1, -1)View on GitHub (pinned to 1c6d8d45b3)
Solutions
- Set pose_start_percent <= pose_end_percent (both are 0.0-1.0 schedule fractions)
- If you intended pose only at the end, use e.g. start=0.5, end=1.0
- Re-check swapped values in the workflow file
Example fix
# before node.execute(..., pose_start_percent=0.8, pose_end_percent=0.2) # after node.execute(..., pose_start_percent=0.2, pose_end_percent=0.8)
Defensive patterns
Strategy: validation
Validate before calling
if pose_start_percent > pose_end_percent:
pose_start_percent, pose_end_percent = pose_end_percent, pose_start_percent # or reject Prevention
- Treat the two widgets as an ordered interval; change both together
- Validate schedule percentages in workflow linters
When it happens
Trigger: Setting the pose_start_percent widget above pose_end_percent (e.g. start 0.8, end 0.2); workflows where the two values were swapped during editing; API-submitted prompts with misordered percentages.
Common situations: Hand-editing workflow JSON percentage fields; copying a node configured for late-pose and changing only one slider; intending 'end before start' semantics that the node does not support.
Related errors
- sigma_min and sigma_max must not be 0
- At least one reference video or reference image must be prov
- Too many references ({len(media)}). The maximum total of ref
- At least one reference image must be provided.
- pose_video has {} frames but video_frame_offset is {} -- not
AI-assisted analysis of Comfy-Org/ComfyUI@1c6d8d45b3 (2026-08-14).
Data as JSON: /api/errors/40f6b640c1c0f364.
Report an issue: GitHub.