Normalize external pair metadata shape

This commit is contained in:
2026-06-27 14:31:21 +02:00
parent d724e4518a
commit 95dc8939b6
2 changed files with 62 additions and 19 deletions
+47
View File
@@ -2436,6 +2436,53 @@ def smoke_row_normalization_policy() -> None:
_expect_no_duplicate_comma_items("row_normalization.pair.soft_negative", pair.get("softcore_negative_prompt"))
_expect_no_duplicate_comma_items("row_normalization.pair.hard_row_negative", pair["hardcore_row"].get("negative_prompt"))
reverse_pair = row_normalization.normalize_pair_metadata(
{
"softcore_row": {
"prompt": f"{Trigger}, {Trigger}, embedded-only soft.",
"caption": f"{Trigger}, {Trigger}, embedded-only soft caption.",
"negative_prompt": "bad anatomy, bad anatomy",
"softcore_partner_styling": {"outfits": ["row partner outfit"], "pose": "row partner pose"},
"camera_config": {"camera_mode": "standard"},
"camera_directive": "Camera: row soft front view.",
"camera_scene_directive": "Row soft scene camera layout.",
},
"hardcore_row": {
"prompt": f"{Trigger}, {Trigger}, embedded-only hard.",
"caption": f"{Trigger}, {Trigger}, embedded-only hard caption.",
"negative_prompt": "low quality, low quality",
"hardcore_clothing_state": "row hard clothing state",
"character_hardcore_clothing": ["Woman A row hard clothing"],
"default_man_hardcore_clothing": ["Man A row default hard clothing"],
"hardcore_detail_density": "concise",
"hardcore_position_config": {"family": "outercourse"},
"camera_config": {"camera_mode": "pov"},
"camera_directive": "Camera: row hard side view.",
"camera_scene_directive": "Row hard scene camera layout.",
},
},
active_trigger=Trigger,
)
_expect_trigger_once("row_normalization.reverse.soft_prompt", reverse_pair.get("softcore_prompt"), Trigger)
_expect_trigger_once("row_normalization.reverse.hard_caption", reverse_pair.get("hardcore_caption"), Trigger)
_expect(
reverse_pair.get("softcore_partner_styling") == reverse_pair["softcore_row"].get("softcore_partner_styling"),
"Pair normalization did not lift soft side metadata from embedded row",
)
_expect(
reverse_pair.get("hardcore_clothing_state") == reverse_pair["hardcore_row"].get("hardcore_clothing_state"),
"Pair normalization did not lift hard side metadata from embedded row",
)
_expect(
reverse_pair.get("softcore_camera_config") == reverse_pair["softcore_row"].get("camera_config"),
"Pair normalization did not lift soft camera config from embedded row",
)
_expect(
reverse_pair.get("hardcore_camera_scene_directive") == reverse_pair["hardcore_row"].get("camera_scene_directive"),
"Pair normalization did not lift hard camera scene from embedded row",
)
_expect_no_duplicate_comma_items("row_normalization.reverse.hard_negative", reverse_pair.get("hardcore_negative_prompt"))
def smoke_prompt_hygiene_policy() -> None:
merged = prompt_hygiene.combine_negative_text(