diff --git a/tools/prompt_smoke.py b/tools/prompt_smoke.py index 2cafdc2..9208c1f 100644 --- a/tools/prompt_smoke.py +++ b/tools/prompt_smoke.py @@ -786,6 +786,49 @@ def smoke_camera_scene_single() -> None: _expect("bag" not in custom_composition_text.lower() and "shoes" not in custom_composition_text.lower(), "custom inline profile composition leaked unrelated props") +def smoke_scene_camera_adapter_pov_profile_policy() -> None: + parsed_camera = { + "camera_mode": "standard", + "camera_detail": "compact", + "orbit_direction": "front-right quarter view", + "orbit_elevation_label": "elevated shot", + "orbit_distance_label": "medium shot", + "custom_camera_prompt": "front-right quarter view, elevated shot, medium shot", + } + for profile in scene_camera_adapters.SCENE_CAMERA_PROFILES: + key = str(profile.get("key") or "") + foreground = str(profile.get("foreground") or "") + non_pov = _expect_text( + f"scene_camera_adapter_pov_profile_policy.{key}.non_pov", + scene_camera_adapters.scene_camera_directive( + "", + parsed_camera, + pov_labels=[], + subject_kind="couple", + profile_key=key, + ), + 40, + ) + pov = _expect_text( + f"scene_camera_adapter_pov_profile_policy.{key}.pov", + scene_camera_adapters.scene_camera_directive( + "", + parsed_camera, + pov_labels=["Man A"], + subject_kind="couple", + profile_key=key, + ), + 40, + ) + _expect(foreground and foreground in non_pov, f"{key} non-POV scene directive lost profile foreground anchor") + _expect(foreground not in pov, f"{key} POV scene directive reused profile foreground anchor as viewer-side text") + _expect("from POV" in pov, f"{key} POV scene directive lost POV marker") + _expect( + "lower foreground is reserved for POV body or hand cues" in pov, + f"{key} POV scene directive lost lower-foreground body-cue reservation", + ) + + def smoke_row_camera_policy() -> None: row = { "prompt": "A generated adult prompt. Composition: vertical office-lobby walking composition. Avoid: low quality.", @@ -8339,6 +8382,7 @@ SMOKE_CASES: list[tuple[str, Callable[[], None]]] = [ ("builtin_single_woman", smoke_builtin_single), ("builtin_couple_metadata", smoke_builtin_couple_metadata), ("camera_scene_single", smoke_camera_scene_single), + ("scene_camera_adapter_pov_profile_policy", smoke_scene_camera_adapter_pov_profile_policy), ("row_camera_policy", smoke_row_camera_policy), ("config_route_location_theme", smoke_config_route_location_theme), ("builder_prompt_route_policy", smoke_builder_prompt_route_policy),