From ab8abc07e644963e1a5f4b6ded226c5d7b4be40c Mon Sep 17 00:00:00 2001 From: Ethanfel Date: Sun, 28 Jun 2026 01:26:37 +0200 Subject: [PATCH] Merge branch seed configs in scene pair output --- node_scene.py | 9 ++++++++- tools/prompt_smoke.py | 8 ++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/node_scene.py b/node_scene.py index a9451a2..28112f2 100644 --- a/node_scene.py +++ b/node_scene.py @@ -475,6 +475,13 @@ def _merge_seed_config(seed_config: Any, axes: tuple[str, ...], seed: int) -> st return _dump(config) +def _combined_seed_config(*seed_configs: Any) -> str: + combined: dict[str, Any] = {} + for seed_config in seed_configs: + combined.update(_json_dict(seed_config)) + return _dump(combined) if combined else "" + + def _apply_layer_seed(scene: dict[str, Any], layer_name: str, seed_options: Any, branch_name: str = "") -> None: items = _seed_option_items(seed_options) if not items: @@ -2284,7 +2291,7 @@ class SxCPScenePairOutput: no_black=False, trigger=str(soft_scene.get("trigger") or "sxcpinup_coloredpencil"), prepend_trigger_to_prompt=bool(soft_scene.get("prepend_trigger_to_prompt", True)), - seed_config=base_configs["seed_config"] or hard_configs["seed_config"], + seed_config=_combined_seed_config(base_configs["seed_config"], hard_configs["seed_config"]), options_json=options_json, filter_config=base_configs["filter_config"] or hard_configs["filter_config"], camera_config=base_configs["camera_config"], diff --git a/tools/prompt_smoke.py b/tools/prompt_smoke.py index 7a9d097..7243781 100644 --- a/tools/prompt_smoke.py +++ b/tools/prompt_smoke.py @@ -9172,6 +9172,14 @@ def smoke_node_scene_chain_registration() -> None: pair.get("scene_chain", {}).get("hardcore", {}).get("seed_trace", {}).get("hardcore.hardcore_branch", {}).get("seed") == 7799, "Scene branch seed options did not write hardcore branch seed trace", ) + hard_seed_config = pair.get("hardcore_row", {}).get("seed_config") if isinstance(pair.get("hardcore_row"), dict) else {} + _expect(hard_seed_config.get("pose_seed") == 7799, "Scene Pair Output did not pass hardcore branch pose seed to generator") + _expect(hard_seed_config.get("role_seed") == 7799, "Scene Pair Output did not pass hardcore branch role seed to generator") + hard_trace_axes = pair.get("hardcore_row", {}).get("generation_trace", {}).get("seed_axes", {}) if isinstance(pair.get("hardcore_row"), dict) else {} + _expect( + hard_trace_axes.get("pose", {}).get("seed") == 7799, + "Scene Pair Output generation trace did not use hardcore branch pose seed", + ) def smoke_node_builder_registration() -> None: