{"record":{"id":"144e0b086e4b7da8","repo":"Comfy-Org/ComfyUI","slug":"unknown-merge-strategy-self-merge-strategy","errorCode":null,"errorMessage":"unknown merge strategy {self.merge_strategy}","messagePattern":"unknown merge strategy (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"comfy/ldm/modules/diffusionmodules/util.py","lineNumber":47,"sourceCode":"        super().__init__()\n        self.merge_strategy = merge_strategy\n        self.rearrange_pattern = rearrange_pattern\n\n        assert (\n            merge_strategy in self.strategies\n        ), f\"merge_strategy needs to be in {self.strategies}\"\n\n        if self.merge_strategy == \"fixed\":\n            self.register_buffer(\"mix_factor\", torch.Tensor([alpha]))\n        elif (\n            self.merge_strategy == \"learned\"\n            or self.merge_strategy == \"learned_with_images\"\n        ):\n            self.register_parameter(\n                \"mix_factor\", torch.nn.Parameter(torch.Tensor([alpha]))\n            )\n        else:\n            raise ValueError(f\"unknown merge strategy {self.merge_strategy}\")\n\n    def get_alpha(self, image_only_indicator: torch.Tensor, device) -> torch.Tensor:\n        # skip_time_mix = rearrange(repeat(skip_time_mix, 'b -> (b t) () () ()', t=t), '(b t) 1 ... -> b 1 t ...', t=t)\n        if self.merge_strategy == \"fixed\":\n            # make shape compatible\n            # alpha = repeat(self.mix_factor, '1 -> b () t  () ()', t=t, b=bs)\n            alpha = self.mix_factor.to(device)\n        elif self.merge_strategy == \"learned\":\n            alpha = torch.sigmoid(self.mix_factor.to(device))\n            # make shape compatible\n            # alpha = repeat(alpha, '1 -> s () ()', s = t * bs)\n        elif self.merge_strategy == \"learned_with_images\":\n            if image_only_indicator is None:\n                alpha = rearrange(torch.sigmoid(self.mix_factor.to(device)), \"... -> ... 1\")\n            else:\n                alpha = torch.where(\n                    image_only_indicator.bool(),\n                    torch.ones(1, 1, device=image_only_indicator.device),","sourceCodeStart":29,"sourceCodeEnd":65,"githubUrl":"https://github.com/Comfy-Org/ComfyUI/blob/1c6d8d45b3693bfbb32385b410d813a7fd6be216/comfy/ldm/modules/diffusionmodules/util.py#L29-L65","documentation":"Raised by the VideoAnimationMerge/alpha-mixing module (util.py) when merge_strategy is neither 'fixed', 'learned', nor 'learned_with_images'. An assert just above already constrains membership in self.strategies, so this else-branch ValueError is the hard backstop for a strategy string outside the known set — it fires at module init.","triggerScenarios":"Constructing the time-mixing module with merge_strategy set to a typo ('Learned'), an unsupported value ('interpolated'), or None in a video-model config.","commonSituations":"Loading animated/video diffusion model configs (AnimateDiff-style) edited by hand; configs from forks that define extra strategies not present in this build.","solutions":["Set merge_strategy to 'fixed' (uses the constant alpha buffer) or 'learned'/'learned_with_images'","Restore the original model config from the checkpoint","Check for case sensitivity and stray whitespace in the config string"],"exampleFix":"# before\nmerge_strategy='Fixed'\n# after\nmerge_strategy='fixed'","handlingStrategy":"validation","validationCode":"if merge_strategy not in ('fixed', 'learned', 'learned_with_images'):\n    raise ValueError(f\"merge_strategy must be fixed|learned|learned_with_images, got {merge_strategy!r}\")","typeGuard":"def is_valid_merge_strategy(s: str) -> bool:\n    return s in ('fixed', 'learned', 'learned_with_images')","tryCatchPattern":null,"preventionTips":["Validate strategy strings from video-model configs at load time","Watch for case differences when configs come from other forks"],"tags":["video","animatediff","config","validation"],"backgroundTag":null,"analyzedSha":"1c6d8d45b3693bfbb32385b410d813a7fd6be216","analyzedAt":"2026-08-14T19:37:18.893Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}