From d1af43bad2736f895d80a8ed30aa444b95f8d27e Mon Sep 17 00:00:00 2001 From: Ethanfel Date: Sun, 28 Jun 2026 09:43:32 +0200 Subject: [PATCH] Clean POV prompt wording --- krea_formatter.py | 2 +- scene_camera_adapters.py | 2 +- tools/prompt_smoke.py | 17 +++++++++++------ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/krea_formatter.py b/krea_formatter.py index 6d8b97c..24fc199 100644 --- a/krea_formatter.py +++ b/krea_formatter.py @@ -280,7 +280,7 @@ def _composition_phrase( if position and close_or_aftermath: if detail_density == "compact": return f"{prefix} {composition}, with the {position} still readable" - return f"{prefix} {composition}, keeping the {position} and action geography readable" + return f"{prefix} {composition}, with the {position} still readable and the body contact clear" return f"{prefix} {composition}" diff --git a/scene_camera_adapters.py b/scene_camera_adapters.py index d10664c..5c754c6 100644 --- a/scene_camera_adapters.py +++ b/scene_camera_adapters.py @@ -1046,7 +1046,7 @@ def scene_camera_directive( return ( f"{profile['layout_label']} from POV{geometry_clause}: keep {subject} and the action primary; " f"{profile['place']} context stays beside or behind the bodies, not in the lower foreground; " - f"lower foreground is reserved for POV body or hand cues; use the multiangle camera only as first-person spatial geometry." + f"POV body or hand cues stay in the lower foreground." ) return ( f"{profile['layout_label']}{geometry_clause}: {direction_detail}; " diff --git a/tools/prompt_smoke.py b/tools/prompt_smoke.py index 9555e82..542d688 100644 --- a/tools/prompt_smoke.py +++ b/tools/prompt_smoke.py @@ -838,7 +838,7 @@ def smoke_scene_camera_adapter_pov_profile_policy() -> None: _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, + "POV body or hand cues stay in the lower foreground" in pov, f"{key} POV scene directive lost lower-foreground body-cue reservation", ) plural_directive = scene_camera_adapters.scene_camera_directive( @@ -874,7 +874,8 @@ def smoke_row_camera_policy() -> None: _expect(updated.get("camera_directive") == "", "POV row camera policy should suppress normal camera directive") scene_directive = _expect_text("row_camera_policy.camera_scene_directive", updated.get("camera_scene_directive"), 40) _expect("Coworking camera layout from POV" in scene_directive, "row camera policy missed POV coworking layout") - _expect("first-person spatial geometry" in scene_directive, "row camera policy lost POV geometry instruction") + _expect("POV body or hand cues stay in the lower foreground" in scene_directive, "row camera policy lost POV foreground cue") + _expect("use the multiangle camera" not in scene_directive, "row camera policy leaked internal multiangle instruction") _expect("Camera:" not in updated.get("prompt", ""), "row camera policy should not add normal Camera label") _expect("45-degree front-right quarter view" not in updated.get("caption", ""), "POV row camera policy should not append camera caption") _expect( @@ -1023,7 +1024,7 @@ def smoke_row_camera_policy() -> None: _expect("Hotel corridor camera layout from POV" in semi_public_scene, "row camera semi-public scene did not use hotel corridor profile") _expect("back view" not in semi_public_scene, "POV camera scene should not inject orbit back view as body orientation") _expect("partner's back" not in semi_public_scene, "POV camera scene should not force the visible partner's back") - _expect("first-person spatial geometry" in semi_public_scene, "row camera semi-public POV scene lost first-person geometry") + _expect("POV body or hand cues stay in the lower foreground" in semi_public_scene, "row camera semi-public POV scene lost foreground cue") _expect(updated_semi_public.get("scene_camera_profile_key") == "hotel_corridor", "row camera semi-public scene did not expose text-matched profile key") _expect("hotel corridor" in semi_public_composition.lower(), "row camera semi-public composition did not become location-aware") _expect("bag" not in semi_public_composition.lower() and "shoes" not in semi_public_composition.lower(), "row camera semi-public composition leaked outfit-check props") @@ -6669,14 +6670,16 @@ def smoke_pov_camera_scene() -> None: "POV camera scene should not reuse coworking foreground anchors as viewer-side objects", ) _expect( - "lower foreground is reserved for POV body or hand cues" in scene_directive, - "POV camera scene should reserve the lower foreground for first-person body cues", + "POV body or hand cues stay in the lower foreground" in scene_directive, + "POV camera scene should keep first-person body cues in the lower foreground", ) + _expect("use the multiangle camera" not in scene_directive, "POV camera scene leaked internal multiangle instruction") krea = krea_formatter.format_krea2_prompt("", metadata_json=_json(pair), target="hardcore") prompt = krea.get("krea_prompt") or "" _expect("from POV" in prompt, "Krea POV prompt lost camera-scene directive") _expect("laptop corner" not in prompt, "Krea POV prompt leaked foreground desk anchor into camera scene") - _expect("lower foreground is reserved for POV body or hand cues" in prompt, "Krea POV prompt lost POV foreground reservation") + _expect("POV body or hand cues stay in the lower foreground" in prompt, "Krea POV prompt lost POV foreground cue") + _expect("use the multiangle camera" not in prompt, "Krea POV prompt leaked internal multiangle instruction") _expect("Camera:" not in prompt, "Krea POV prompt should not emit normal third-person camera directive") @@ -6717,6 +6720,8 @@ def smoke_krea_pov_penetration_route() -> None: _expect("viewer" in lower and "first-person" in lower, "POV penetration lost first-person wording") _expect("penetrates" in lower or "penetration" in lower, "POV penetration lost penetration action wording") _expect("woman" in lower and "thigh" in lower, "POV penetration lost body-position anchors") + _expect("action geography" not in lower, "POV penetration leaked abstract action-geography wording") + _expect("use the multiangle camera" not in lower, "POV penetration leaked internal multiangle instruction") _expect("camera:" not in prompt, "POV penetration emitted normal third-person camera directive") _expect("role graph:" not in lower and "sexual scene:" not in lower, "POV penetration leaked raw prompt labels") style_index = lower.find("explicit consensual")