Guard generated formatter metadata flow

This commit is contained in:
2026-06-27 12:44:21 +02:00
parent 8eb3f6d394
commit 2a5e565ce7
2 changed files with 53 additions and 0 deletions
+1
View File
@@ -34,6 +34,7 @@ def split_tag_text(text: Any) -> list[str]:
text = clean(text) text = clean(text)
if not text: if not text:
return [] return []
text = input_policy.strip_prompt_field_labels(text, field_labels=PROMPT_FIELD_LABELS)
text = re.sub(r"\bWoman [A-Z]'s\b", "woman's", text) text = re.sub(r"\bWoman [A-Z]'s\b", "woman's", text)
text = re.sub(r"\bMan [A-Z]'s\b", "man's", text) text = re.sub(r"\bMan [A-Z]'s\b", "man's", text)
text = re.sub(r"\bWoman [A-Z]\b", "woman", text) text = re.sub(r"\bWoman [A-Z]\b", "woman", text)
+52
View File
@@ -5072,6 +5072,58 @@ def smoke_formatter_metadata_fixtures() -> None:
_expect("krea readable anchor" not in caption_text, "Caption naturalizer leaked Krea formatter hint") _expect("krea readable anchor" not in caption_text, "Caption naturalizer leaked Krea formatter hint")
_expect("sdxl route tag" not in caption_text, "Caption naturalizer leaked SDXL formatter hint") _expect("sdxl route tag" not in caption_text, "Caption naturalizer leaked SDXL formatter hint")
generated = _prompt_row(
name="fixture_generated_formatter_invariants",
category="Casual clothes",
subcategory="Casual clothes / Smart casual",
seed=4101,
men_count=0,
character_cast=_character_cast_subjects(["woman"]),
camera_config=_orbit_camera(horizontal_angle=45, vertical_angle=0, zoom=5.5),
location_config=_coworking_location_config(),
)
_expect_row_base(generated, "fixture_generated_formatter_invariants")
_expect(generated.get("source") == "json_category", "Generated formatter invariant should use category JSON route")
generated_metadata = _json(generated)
generated_item = _expect_text("fixture_generated_formatter_invariants.item", generated.get("item"), 8)
item_anchor = " ".join(generated_item.lower().split()[:3])
krea = krea_formatter.format_krea2_prompt("", metadata_json=generated_metadata, target="single")
krea_prompt = _expect_text("fixture_generated_formatter_invariants.krea_prompt", krea.get("krea_prompt"), 40).lower()
_expect("metadata" in krea.get("method", ""), "Generated Krea invariant did not use metadata")
_expect(item_anchor in krea_prompt, "Generated Krea prompt lost clothing/item metadata")
_expect("coworking lounge" in krea_prompt, "Generated Krea prompt lost scene metadata")
_expect("front-right quarter view" in krea_prompt, "Generated Krea prompt lost camera metadata")
sdxl = sdxl_formatter.format_sdxl_prompt(
"",
metadata_json=generated_metadata,
target="single",
trigger=SdxlTrigger,
prepend_trigger=True,
)
sdxl_prompt = _expect_text("fixture_generated_formatter_invariants.sdxl_prompt", sdxl.get("sdxl_prompt"), 40).lower()
_expect("metadata" in sdxl.get("method", ""), "Generated SDXL invariant did not use metadata")
_expect_trigger_once("fixture_generated_formatter_invariants.sdxl_prompt", sdxl.get("sdxl_prompt"), SdxlTrigger)
_expect(item_anchor in sdxl_prompt, "Generated SDXL prompt lost clothing/item metadata")
_expect("coworking lounge" in sdxl_prompt, "Generated SDXL prompt lost scene metadata")
_expect("front-right quarter view" in sdxl_prompt, "Generated SDXL prompt lost camera metadata")
for leaked_label in ("camera:", "composition:", "scene:", "setting:", "pose:", "clothing:"):
_expect(leaked_label not in sdxl_prompt, f"Generated SDXL prompt leaked raw label {leaked_label!r}")
caption, method = caption_naturalizer.naturalize_caption(
"",
metadata_json=generated_metadata,
trigger=Trigger,
include_trigger=False,
caption_profile="training_dense",
)
caption_text = _expect_text("fixture_generated_formatter_invariants.caption", caption, 40).lower()
_expect("metadata" in method, "Generated caption invariant did not use metadata")
_expect_trigger_once("fixture_generated_formatter_invariants.caption", caption, Trigger)
_expect(item_anchor in caption_text, "Generated training caption lost clothing/item metadata")
_expect("coworking lounge" in caption_text, "Generated training caption lost scene metadata")
def smoke_node_utility_registration() -> None: def smoke_node_utility_registration() -> None:
required_nodes = [ required_nodes = [