Fix exact Krea2 POV oral routing

This commit is contained in:
2026-06-30 20:35:00 +02:00
parent 5f4dd7d77f
commit 3832044256
8 changed files with 182 additions and 12 deletions
+92
View File
@@ -8336,6 +8336,80 @@ def smoke_pov_oral_position_routes() -> None:
_expect("eye-level shot" not in top_prompt, f"Top-view variant prompt kept contradictory eye-level camera text: {top_prompt}")
_expect("tongue extended toward genitals" not in top_prompt, f"Top-view variant prompt kept contradictory tongue-extension expression: {top_prompt}")
sitting_variant_config = sxcp_nodes.NODE_CLASS_MAPPINGS["SxCPKrea2POVOralFilter"]().build(
"replace",
"",
include_blowjob_sitting_upright_oral=True,
)[0]
sitting_variant_pair = pb.build_insta_of_pair(
row_number=1,
start_index=1,
seed=3831,
ethnicity="any",
figure="random",
no_plus_women=False,
no_black=False,
trigger=Trigger,
prepend_trigger_to_prompt=True,
options_json=_insta_options(
softcore_camera_mode="from_camera_config",
hardcore_camera_mode="from_camera_config",
camera_detail="compact",
),
character_cast=_character_cast(pov_man=True),
hardcore_position_config=sitting_variant_config,
location_config=_coworking_location_config(),
hardcore_camera_config=_orbit_camera(
horizontal_angle=45,
vertical_angle=0,
zoom=7.5,
subject_focus="action",
),
)
_expect_pair(sitting_variant_pair, "pov_oral_sitting_variant_filter")
sitting_variant_row = sitting_variant_pair.get("hardcore_row") or {}
sitting_variant_config_row = sitting_variant_row.get("hardcore_position_config") or {}
_expect(
sitting_variant_config_row.get("krea2_variant_keys") == ["pov_blowjob_sitting_upright_oral"],
"Sitting oral POV filter lost exact variant key in row metadata",
)
_expect(
"blowjob_sitting" in (sitting_variant_config_row.get("positions") or []),
"Sitting oral POV filter lost exact sitting route position in row config",
)
sitting_axis_values = sitting_variant_row.get("item_axis_values") or {}
_expect(
sitting_axis_values.get("krea2_variant_keys") == ["pov_blowjob_sitting_upright_oral"],
"Sitting oral POV filter exact variant key did not reach formatter axis metadata",
)
sitting_variant_krea = krea_formatter.format_krea2_prompt("", metadata_json=_json(sitting_variant_pair), target="hardcore")
sitting_variant_prompt = _expect_text(
"pov_oral_sitting_variant_filter.krea_prompt",
sitting_variant_krea.get("krea_prompt"),
60,
).lower()
for term in (
"pov upright sitting oral position",
"woman sits low between his open thighs",
"face lowered close to the exact center contact point",
"open mouth covers the tip",
"hands stay low at the base",
):
_expect(term in sitting_variant_prompt, f"Sitting oral variant prompt missing {term!r}: {sitting_variant_prompt}")
_expect(
"pov open-thigh cunnilingus position" not in sitting_variant_prompt,
f"Sitting oral variant drifted into generic cunnilingus route: {sitting_variant_prompt}",
)
_expect(
"viewer kneels between her legs" not in sitting_variant_prompt,
f"Sitting oral variant kept generic kneeling-between-legs route: {sitting_variant_prompt}",
)
_expect(
"tongue extended toward genitals" not in sitting_variant_prompt,
f"Sitting oral variant kept contradictory tongue-extension expression: {sitting_variant_prompt}",
)
_expect("eye-level shot" not in sitting_variant_prompt, f"Sitting oral variant kept contradictory eye-level camera text: {sitting_variant_prompt}")
side_body_item = "side-lying oral position while blowjob with lips wrapped around the viewer's penis"
side_body_axis = {"position": "side-lying oral position"}
side_body_role_graph = hardcore_role_oral.build_oral_role_graph(
@@ -11009,6 +11083,24 @@ def smoke_node_hardcore_position_registration() -> None:
)
_expect("variants=pov_blowjob_top_down_vertical_shaft" in top_summary, "POV Oral Filter summary lost top-view variant key")
sitting_config, sitting_keys, sitting_positions, _sitting_notes, sitting_summary, _sitting_variants_json = oral_filter().build(
"replace",
"",
include_blowjob_sitting_upright_oral=True,
)
parsed_sitting_config = json.loads(sitting_config)
_expect(sitting_keys == "pov_blowjob_sitting_upright_oral", "POV Oral Filter returned wrong exact sitting oral variant key")
_expect(
parsed_sitting_config.get("krea2_variant_keys") == ["pov_blowjob_sitting_upright_oral"],
"POV Oral Filter lost exact sitting oral variant metadata",
)
_expect(
"blowjob_sitting" in (parsed_sitting_config.get("positions") or []),
"POV Oral Filter dropped sitting oral route position from config",
)
_expect("blowjob_sitting" in sitting_positions.split(","), "POV Oral Filter dropped sitting oral route position summary")
_expect("variants=pov_blowjob_sitting_upright_oral" in sitting_summary, "POV Oral Filter summary lost sitting oral variant key")
doggy_config, doggy_keys, doggy_positions, doggy_notes, doggy_summary, doggy_variants_json = penetration_filter().build(
"replace",
"",