Map Krea2 sixty-nine and refine ready aftermath

This commit is contained in:
2026-06-29 08:34:12 +02:00
parent 03907439a4
commit b8e15289ca
3 changed files with 100 additions and 22 deletions
+32 -7
View File
@@ -6828,6 +6828,7 @@ def smoke_krea2_pose_variant_catalog_policy() -> None:
oral = krea2_pose_variant_catalog.variant_keys(action_family="oral")
_expect(
oral == [
"pov_sixty_nine_close_reversed_oral",
"pov_blowjob_top_down_vertical_shaft",
"pov_blowjob_side_profile_oral",
"pov_blowjob_laying_frontal_oral",
@@ -6864,8 +6865,18 @@ def smoke_krea2_pose_variant_catalog_policy() -> None:
ready = krea2_pose_variant_catalog.get_variant("pov_ejaculation_aftermath_open_thigh_candidate")
_expect(ready.get("status") == "candidate", "Ready aftermath variant should remain a candidate until fixed-seed evidence exists")
_expect(
any("visible aftermath fluid remains at the central contact area" in str(cue) for cue in ready.get("prompt_cues", [])),
"Ready aftermath variant lost central fluid cue",
any("thick semen or fluid is visible around the exposed pussy or anal opening" in str(cue) for cue in ready.get("prompt_cues", [])),
"Ready aftermath variant lost explicit post-ejaculation fluid/opening cue",
)
_expect(
any("generic ready/setup pose before sex" in str(cue) for cue in ready.get("avoid_cues", [])),
"Ready aftermath variant should reject generic ready/setup wording",
)
sixty_nine = krea2_pose_variant_catalog.get_variant("pov_sixty_nine_close_reversed_oral")
_expect(sixty_nine.get("status") == "unstable", "Sixty-nine route should stay unstable until text-only evidence improves")
_expect(
any("visible partner is reversed over the viewer with hips closest" in str(cue) for cue in sixty_nine.get("prompt_cues", [])),
"Sixty-nine variant lost reversed-over-viewer cue",
)
spread = krea2_pose_variant_catalog.get_variant("pov_spread_open_thigh_presentation")
_expect(spread.get("status") == "candidate", "Spread variant should remain a candidate until fixed-seed evidence exists")
@@ -7002,6 +7013,9 @@ def smoke_krea2_tuning_report_policy() -> None:
ready = by_key.get("pov_ejaculation_aftermath_open_thigh_candidate") or {}
_expect(ready.get("coverage_state") == "needs_fixed_seed_tests", "Ready aftermath report should need fixed-seed tests")
_expect(ready.get("accepted_evidence_count") == 0, "Ready aftermath report should not have accepted evidence yet")
sixty_nine = by_key.get("pov_sixty_nine_close_reversed_oral") or {}
_expect(sixty_nine.get("coverage_state") == "needs_stronger_control", "Sixty-nine report should require stronger control")
_expect(sixty_nine.get("accepted_evidence_count") == 0, "Sixty-nine report should not have accepted evidence yet")
spread = by_key.get("pov_spread_open_thigh_presentation") or {}
_expect(spread.get("coverage_state") == "needs_fixed_seed_tests", "Spread report should need fixed-seed tests")
_expect(spread.get("accepted_evidence_count") == 0, "Spread report should not have accepted evidence yet")
@@ -7038,6 +7052,7 @@ def smoke_krea2_tuning_report_policy() -> None:
summary = krea2_tuning_report.coverage_summary()
_expect(summary.get("status_counts", {}).get("proven") == 3, "Krea2 tuning report proven count changed")
_expect(summary.get("status_counts", {}).get("candidate") == 16, "Krea2 tuning report candidate count changed")
_expect(summary.get("status_counts", {}).get("unstable") == 1, "Krea2 tuning report unstable count changed")
_expect(
summary.get("variants_without_accepted_evidence") == [
"pov_ballsucking_low_head",
@@ -7046,6 +7061,7 @@ def smoke_krea2_tuning_report_policy() -> None:
"pov_wand_foreground_tool_contact",
"pov_ejaculation_aftermath_open_thigh_candidate",
"pov_spread_open_thigh_presentation",
"pov_sixty_nine_close_reversed_oral",
"pov_blowjob_top_down_vertical_shaft",
"pov_blowjob_side_profile_oral",
"pov_blowjob_laying_frontal_oral",
@@ -7060,6 +7076,10 @@ def smoke_krea2_tuning_report_policy() -> None:
f"Krea2 tuning report missing-evidence set changed: {summary.get('variants_without_accepted_evidence')}",
)
plans = krea2_tuning_report.next_test_plans()
_expect(
"pov_sixty_nine_close_reversed_oral" not in [plan.get("key") for plan in plans],
"Unstable sixty-nine route should not be queued as a normal fixed-seed candidate",
)
_expect(
[plan.get("key") for plan in plans]
== [
@@ -7125,8 +7145,8 @@ def smoke_krea2_tuning_report_policy() -> None:
)
ready_plan = plan_by_key["pov_ejaculation_aftermath_open_thigh_candidate"]
_expect(
"visible aftermath fluid remains at the central contact area" in " ".join(ready_plan.get("prompt_cues") or []),
"Ready aftermath test plan lost central fluid cue",
"thick semen or fluid is visible around the exposed pussy or anal opening" in " ".join(ready_plan.get("prompt_cues") or []),
"Ready aftermath test plan lost explicit post-ejaculation fluid/opening cue",
)
_expect(
any(str(path).endswith("ready/105_ready_.png") for path in ready_plan.get("reference_paths") or []),
@@ -7233,7 +7253,7 @@ def smoke_krea2_tuning_report_policy() -> None:
)
with tempfile.TemporaryDirectory() as tmpdir:
atlas_root = Path(tmpdir)
for folder in ("doggy", "doggy_control", "custom_pose", "custom_pose_control", "ready", "ready_control", "bg", "woman", "doggy_bg"):
for folder in ("doggy", "doggy_control", "custom_pose", "custom_pose_control", "ready", "ready_control", "69", "69_control", "bg", "woman", "doggy_bg"):
folder_path = atlas_root / folder
folder_path.mkdir()
(folder_path / f"{folder}_sample.png").write_bytes(b"")
@@ -7241,18 +7261,21 @@ def smoke_krea2_tuning_report_policy() -> None:
(atlas_root / "custom_pose_control" / "custom_pose_control_b.png").write_bytes(b"")
(atlas_root / "ready" / "ready_b.png").write_bytes(b"")
(atlas_root / "ready_control" / "ready_control_b.png").write_bytes(b"")
(atlas_root / "69" / "69_b.png").write_bytes(b"")
(atlas_root / "69_control" / "69_control_b.png").write_bytes(b"")
atlas_rows = krea2_tuning_report.atlas_folder_rows(atlas_root=atlas_root)
atlas_by_folder = {row.get("folder"): row for row in atlas_rows}
_expect(atlas_by_folder.get("doggy", {}).get("mapped") is True, "Atlas report should mark catalog folders as mapped")
_expect(atlas_by_folder.get("custom_pose", {}).get("mapped") is False, "Atlas report should expose unmapped pose folders")
_expect(atlas_by_folder.get("ready", {}).get("mapped") is True, "Atlas report should mark ready as mapped once cataloged")
_expect(atlas_by_folder.get("69", {}).get("mapped") is True, "Atlas report should mark sixty-nine as mapped once cataloged")
_expect("doggy_control" not in atlas_by_folder, "Atlas report should exclude control folders")
_expect("doggy_bg" not in atlas_by_folder, "Atlas report should exclude background folders")
_expect("bg" not in atlas_by_folder, "Atlas report should exclude shared bg folder")
_expect("woman" not in atlas_by_folder, "Atlas report should exclude non-pose woman folder")
atlas_summary = krea2_tuning_report.atlas_coverage_summary(atlas_root=atlas_root)
_expect(atlas_summary.get("pose_folder_count") == 3, "Atlas report should count only pose folders")
_expect(atlas_summary.get("mapped_folder_count") == 2, "Atlas report should count mapped pose folders")
_expect(atlas_summary.get("pose_folder_count") == 4, "Atlas report should count only pose folders")
_expect(atlas_summary.get("mapped_folder_count") == 3, "Atlas report should count mapped pose folders")
_expect(atlas_summary.get("unmapped_folders") == ["custom_pose"], "Atlas report should identify unmapped pose folders")
gap_plans = krea2_tuning_report.atlas_gap_plans(atlas_root=atlas_root, sample_limit=2)
_expect([plan.get("folder") for plan in gap_plans] == ["custom_pose"], "Atlas gap plans should follow unmapped folders")
@@ -7275,6 +7298,8 @@ def smoke_krea2_tuning_report_policy() -> None:
_expect("pov_fingering_reclined_open_thighs" in markdown, "Krea2 tuning report markdown lost fingering candidate variant")
_expect("pov_wand_foreground_tool_contact" in markdown, "Krea2 tuning report markdown lost wand candidate variant")
_expect("pov_ejaculation_aftermath_open_thigh_candidate" in markdown, "Krea2 tuning report markdown lost ready aftermath candidate variant")
_expect("pov_sixty_nine_close_reversed_oral" in markdown, "Krea2 tuning report markdown lost sixty-nine unstable variant")
_expect("needs_stronger_control" in markdown, "Krea2 tuning report markdown lost stronger-control coverage state")
_expect("pov_spread_open_thigh_presentation" in markdown, "Krea2 tuning report markdown lost spread candidate variant")
_expect("pov_blowjob_top_down_vertical_shaft" in markdown, "Krea2 tuning report markdown lost blowjob top-view candidate variant")
_expect("pov_blowjob_side_profile_oral" in markdown, "Krea2 tuning report markdown lost blowjob side candidate variant")