Filter incompatible SDXL route tags

This commit is contained in:
2026-06-27 18:41:17 +02:00
parent 5ca5f1b858
commit cac4fe47cd
4 changed files with 123 additions and 5 deletions
+45
View File
@@ -4604,7 +4604,30 @@ def smoke_sdxl_tag_policy() -> None:
_expect(deps.axis_value_tags is sdxl_tag_policy.axis_value_tags, "SDXL route deps lost axis-value tag policy")
_expect(deps.camera_tags is sdxl_tag_policy.camera_tags, "SDXL route deps lost camera tag policy")
_expect(deps.explicit_tags is sdxl_tag_policy.explicit_tags, "SDXL route deps lost explicit tag policy")
_expect(
deps.filter_incompatible_route_tags is sdxl_tag_policy.filter_incompatible_route_tags,
"SDXL route deps lost route-family tag filter",
)
_expect(deps.softcore_pair_tags is sdxl_tag_policy.softcore_pair_tags, "SDXL route deps lost softcore pair tag policy")
mouth_nearby_tags = sdxl_tag_policy.explicit_tags(
"missionary penetration with mouth close to the ear",
1.29,
)
_expect("penetration" in mouth_nearby_tags, "SDXL explicit tags lost penetration signal")
_expect("oral sex" not in mouth_nearby_tags, "SDXL explicit tags should not treat nearby mouth wording as oral")
outercourse_filtered_tags = sdxl_tag_policy.filter_incompatible_route_tags(
["outercourse", "penis licking", "oral sex", "penetration"],
_fixture_hardcore_row(
action_family="outercourse",
position_family="outercourse",
position_key="penis_licking",
position_keys=["penis_licking"],
),
)
_expect("outercourse" in outercourse_filtered_tags, "SDXL route filter removed matching outercourse tag")
_expect("penis licking" in outercourse_filtered_tags, "SDXL route filter removed specific outercourse key")
_expect("oral sex" not in outercourse_filtered_tags, "SDXL route filter kept incompatible oral tag")
_expect("penetration" not in outercourse_filtered_tags, "SDXL route filter kept incompatible penetration tag")
stale_character_row = {
"prompt": "Characters: 99-year-old adult man, stale body, stale skin, stale hair, stale eyes.",
@@ -4731,6 +4754,28 @@ def smoke_sdxl_tag_routes() -> None:
).as_text()
for required in ("(naked:1.29)", "pussy", "penis", "penetration"):
_expect(required in metadata_tags, f"SDXL row tags lost structured explicit metadata tag: {required}")
outercourse_noise_row = _fixture_hardcore_row(
item="penis-licking outercourse position with tongue along the penis shaft",
pose="configured outercourse pose",
role_graph="Woman A bends low while her tongue runs along Man A's penis shaft.",
source_role_graph="Woman A bends low while her tongue runs along Man A's penis shaft.",
item_axis_values={
"position": "penis-licking outercourse position",
"outer_act": "tongue along the penis shaft",
},
action_family="outercourse",
position_family="outercourse",
position_key="penis_licking",
position_keys=["penis_licking"],
)
outercourse_noise_tags = sdxl_tag_routes.row_core_tags_result(
sdxl_tag_routes.SDXLRowTagRequest(outercourse_noise_row, 1.29),
deps,
).as_text()
_expect("outercourse" in outercourse_noise_tags, "SDXL outercourse row lost matching family tag")
_expect("penis licking" in outercourse_noise_tags, "SDXL outercourse row lost specific position key")
_expect("oral sex" not in outercourse_noise_tags, "SDXL outercourse row kept incompatible oral tag")
_expect("penetration" not in outercourse_noise_tags, "SDXL outercourse row kept incompatible penetration tag")
pair = pb.build_insta_of_pair(
row_number=1,