{"record":{"id":"c9bd1d040f1d94d3","repo":"invoke-ai/InvokeAI","slug":"denoising-start-self-denoising-start-must-be-l","errorCode":null,"errorMessage":"denoising_start ({self.denoising_start}) must be less than denoising_end ({self.denoising_end}).","messagePattern":"denoising_start \\((.+?)\\) must be less than denoising_end \\((.+?)\\)\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"invokeai/app/invocations/anima_denoise.py","lineNumber":544,"sourceCode":"            context_embeds_list.append(context_2d)\n            context_ranges.append(Range(start=cur_len, end=cur_len + context_2d.shape[0]))\n            image_masks.append(tc.mask)\n            cur_len += context_2d.shape[0]\n\n        concatenated_context = torch.cat(context_embeds_list, dim=0)\n\n        return AnimaRegionalTextConditioning(\n            context_embeds=concatenated_context,\n            image_masks=image_masks,\n            context_ranges=context_ranges,\n        )\n\n    def _run_diffusion(self, context: InvocationContext) -> torch.Tensor:\n        device = TorchDevice.choose_torch_device()\n        inference_dtype = TorchDevice.choose_anima_inference_dtype(device)\n\n        if self.denoising_start >= self.denoising_end:\n            raise ValueError(\n                f\"denoising_start ({self.denoising_start}) must be less than denoising_end ({self.denoising_end}).\"\n            )\n\n        lllite_fields = self._normalize_control_lllite(self.control_lllite)\n\n        transformer_info = context.models.load(self.transformer.transformer)\n\n        # Compute image token grid dimensions for regional prompting\n        img_token_height, img_token_width = self._compute_img_token_grid(self.height, self.width)\n        img_seq_len = img_token_height * img_token_width\n\n        # Load positive conditioning with optional regional masks\n        pos_text_conditionings = self._load_text_conditionings(\n            context=context,\n            cond_field=self.positive_conditioning,\n            img_token_height=img_token_height,\n            img_token_width=img_token_width,\n            dtype=inference_dtype,","sourceCodeStart":526,"sourceCodeEnd":562,"githubUrl":"https://github.com/invoke-ai/InvokeAI/blob/0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06/invokeai/app/invocations/anima_denoise.py#L526-L562","documentation":"This ValueError guards the denoising window in the Anima denoise invocation: denoising_start must be strictly less than denoising_end. InvokeAI throws it before running diffusion because a zero-width or inverted schedule range is meaningless and would produce invalid sigma timesteps.","triggerScenarios":"Calling the Anima denoise invocation with denoising_start >= denoising_end, e.g. start=0.8/end=0.5 (inverted) or start=0.6/end=0.6 (equal, zero-width window).","commonSituations":"Mistakenly swapping start/end fields in a workflow node; computing a denoise fraction range programmatically where start and end both clamp to the same value; migrating from UI slider defaults where both sliders coincide.","solutions":["Check the invocation's denoising_start and denoising_end values and ensure start < end (e.g. start=0.3, end=0.8).","If building the range programmatically, clamp/sort so start is the minimum of the two fractions.","For a full denoise, set denoising_start to 0.0 and denoising_end to 1.0."],"exampleFix":"// before\nnode.denoising_start = 0.8\nnode.denoising_end = 0.5\n// after\nnode.denoising_start = 0.5\nnode.denoising_end = 0.8","handlingStrategy":"validation","validationCode":"if not (0.0 <= start < end <= 1.0):\n    raise ValueError(f\"Invalid denoise window: start={start}, end={end}\")\ndenoise.denoising_start, denoise.denoising_end = start, end","typeGuard":null,"tryCatchPattern":"try:\n    output = invoker.invoke(denoise_invocation)\nexcept ValueError as e:\n    if \"denoising_start\" in str(e):\n        denoise.denoising_start, denoise.denoising_end = sorted([denoise.denoising_start, denoise.denoising_end])\n        output = invoker.invoke(denoise_invocation)\n    else:\n        raise","preventionTips":["Validate start < end at workflow-build time","Clamp both fractions into [0,1] and sort before assignment","Never expose equal slider stops for start/end in custom UIs"],"tags":["validation","denoising","invokeai"],"backgroundTag":"invalid-parameter-range","analyzedSha":"0b6a024f2ff6a86bfb953dcdb9cc504ef7397a06","analyzedAt":"2026-08-29T04:46:49.967Z","schemaVersion":2},"datasetVersion":"2026-08-29T07:17:48.351Z"}