mirror of
https://github.com/langgenius/dify.git
synced 2026-10-04 13:47:55 +08:00
graphon runs an if-else whose `cases` is absent or None (the legacy top-level `conditions` shape) as one case with id "true" (IfElseNodeData.iter_cases; if_else_node routes "true" when uses_legacy_shape), and the canvas migrates it to case_id "true". declared_branch_handles declared only "false" for it, so the engine's own IF arm looked undeclared: apply_connect refused a connect on "true", and with only "true" wired the fan-out rule re-homed the IF arm onto ELSE in the generator postprocess. The case ids now mirror iter_cases (legacy -> ["true"]; an explicit `cases: []` stays case-less), and the one-case IF-alias rule counts the legacy shape as one case. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>