Add Krea2 blowjob sitting candidate
This commit is contained in:
@@ -367,6 +367,44 @@
|
|||||||
"guide_section": "",
|
"guide_section": "",
|
||||||
"notes": "Atlas shows repeated prone, front-facing first-person oral geometry; needs fixed-seed Krea2 tests before promotion to proven."
|
"notes": "Atlas shows repeated prone, front-facing first-person oral geometry; needs fixed-seed Krea2 tests before promotion to proven."
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "pov_blowjob_sitting_upright_oral",
|
||||||
|
"family": "blowjob_sitting",
|
||||||
|
"status": "candidate",
|
||||||
|
"atlas_folders": ["blowjob_sitting"],
|
||||||
|
"action_family": "oral",
|
||||||
|
"position_keys": ["reclining_oral", "penis_licking"],
|
||||||
|
"canonical_geometry": "Upright seated first-person oral view: the viewer reclines with open thighs framing the lower foreground, the woman sits upright between the viewer's open thighs, and her close front-facing mouth aligns to a vertical shaft centered between the viewer's legs.",
|
||||||
|
"prompt_cues": [
|
||||||
|
"POV upright sitting oral position",
|
||||||
|
"viewer reclines with open thighs framing the lower foreground",
|
||||||
|
"woman sits upright between the viewer's open thighs",
|
||||||
|
"her shoulders and face stay vertical and close to the camera",
|
||||||
|
"vertical shaft centered between the viewer's legs",
|
||||||
|
"her mouth aligns to the centered shaft with hands low near the base"
|
||||||
|
],
|
||||||
|
"avoid_cues": [
|
||||||
|
"prone belly-down oral framing",
|
||||||
|
"side-profile oral framing",
|
||||||
|
"top-down oral framing from above the viewer",
|
||||||
|
"woman standing level with the viewer",
|
||||||
|
"cropping away the viewer's open-thigh frame"
|
||||||
|
],
|
||||||
|
"reference_images": [
|
||||||
|
"blowjob_sitting/100_blowjob_sitting.png",
|
||||||
|
"blowjob_sitting/24_blowjob_sitting.png",
|
||||||
|
"blowjob_sitting/58_blowjob_sitting.png"
|
||||||
|
],
|
||||||
|
"generator_hook": {
|
||||||
|
"module": "krea_pov_actions.py",
|
||||||
|
"route_terms": ["blowjob_sitting", "upright sitting oral", "oral"]
|
||||||
|
},
|
||||||
|
"evidence": {
|
||||||
|
"fixed_seed_tests": [],
|
||||||
|
"guide_section": "",
|
||||||
|
"notes": "Atlas contains some top-view outliers, but the named sitting files show repeated upright, front-facing first-person oral geometry; needs fixed-seed Krea2 tests before promotion to proven."
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -151,3 +151,12 @@ lies belly-down between the viewer's thighs, and her front-facing mouth and
|
|||||||
hands align to a shaft rising from the lower center of the frame. Treat
|
hands align to a shaft rising from the lower center of the frame. Treat
|
||||||
`pov_blowjob_laying_frontal_oral` as a candidate until it has fixed-seed Krea2
|
`pov_blowjob_laying_frontal_oral` as a candidate until it has fixed-seed Krea2
|
||||||
evidence.
|
evidence.
|
||||||
|
|
||||||
|
### Blowjob Sitting
|
||||||
|
|
||||||
|
The `blowjob_sitting` folder includes a few top-view outliers, but the named
|
||||||
|
sitting files repeat an upright seated first-person oral layout: the viewer
|
||||||
|
reclines with open thighs framing the lower foreground, the woman sits upright
|
||||||
|
between the viewer's thighs, and her close front-facing mouth aligns to a
|
||||||
|
vertical centered shaft. Treat `pov_blowjob_sitting_upright_oral` as a candidate
|
||||||
|
until it has fixed-seed Krea2 evidence.
|
||||||
|
|||||||
+23
-1
@@ -6808,6 +6808,7 @@ def smoke_krea2_pose_variant_catalog_policy() -> None:
|
|||||||
"pov_blowjob_top_down_vertical_shaft",
|
"pov_blowjob_top_down_vertical_shaft",
|
||||||
"pov_blowjob_side_profile_oral",
|
"pov_blowjob_side_profile_oral",
|
||||||
"pov_blowjob_laying_frontal_oral",
|
"pov_blowjob_laying_frontal_oral",
|
||||||
|
"pov_blowjob_sitting_upright_oral",
|
||||||
],
|
],
|
||||||
f"Krea2 pose-variant oral filtering changed unexpectedly: {oral}",
|
f"Krea2 pose-variant oral filtering changed unexpectedly: {oral}",
|
||||||
)
|
)
|
||||||
@@ -6855,6 +6856,12 @@ def smoke_krea2_pose_variant_catalog_policy() -> None:
|
|||||||
any("woman lies belly-down between the viewer's open thighs" in str(cue) for cue in oral_laying.get("prompt_cues", [])),
|
any("woman lies belly-down between the viewer's open thighs" in str(cue) for cue in oral_laying.get("prompt_cues", [])),
|
||||||
"Blowjob laying variant lost prone frontal cue",
|
"Blowjob laying variant lost prone frontal cue",
|
||||||
)
|
)
|
||||||
|
oral_sitting = krea2_pose_variant_catalog.get_variant("pov_blowjob_sitting_upright_oral")
|
||||||
|
_expect(oral_sitting.get("status") == "candidate", "Blowjob sitting variant should remain a candidate until fixed-seed evidence exists")
|
||||||
|
_expect(
|
||||||
|
any("woman sits upright between the viewer's open thighs" in str(cue) for cue in oral_sitting.get("prompt_cues", [])),
|
||||||
|
"Blowjob sitting variant lost upright sitting cue",
|
||||||
|
)
|
||||||
refs = krea2_pose_variant_catalog.reference_paths("pov_boobjob_upright_cleavage")
|
refs = krea2_pose_variant_catalog.reference_paths("pov_boobjob_upright_cleavage")
|
||||||
_expect(refs and all(path.name.endswith(".png") for path in refs), "Boobjob reference paths are not image paths")
|
_expect(refs and all(path.name.endswith(".png") for path in refs), "Boobjob reference paths are not image paths")
|
||||||
_expect(all("bg" not in str(path).lower() for path in refs), "Reference paths should not include background-only atlas images")
|
_expect(all("bg" not in str(path).lower() for path in refs), "Reference paths should not include background-only atlas images")
|
||||||
@@ -6930,9 +6937,12 @@ def smoke_krea2_tuning_report_policy() -> None:
|
|||||||
oral_laying = by_key.get("pov_blowjob_laying_frontal_oral") or {}
|
oral_laying = by_key.get("pov_blowjob_laying_frontal_oral") or {}
|
||||||
_expect(oral_laying.get("coverage_state") == "needs_fixed_seed_tests", "Blowjob laying report should need fixed-seed tests")
|
_expect(oral_laying.get("coverage_state") == "needs_fixed_seed_tests", "Blowjob laying report should need fixed-seed tests")
|
||||||
_expect(oral_laying.get("accepted_evidence_count") == 0, "Blowjob laying report should not have accepted evidence yet")
|
_expect(oral_laying.get("accepted_evidence_count") == 0, "Blowjob laying report should not have accepted evidence yet")
|
||||||
|
oral_sitting = by_key.get("pov_blowjob_sitting_upright_oral") or {}
|
||||||
|
_expect(oral_sitting.get("coverage_state") == "needs_fixed_seed_tests", "Blowjob sitting report should need fixed-seed tests")
|
||||||
|
_expect(oral_sitting.get("accepted_evidence_count") == 0, "Blowjob sitting report should not have accepted evidence yet")
|
||||||
summary = krea2_tuning_report.coverage_summary()
|
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("proven") == 3, "Krea2 tuning report proven count changed")
|
||||||
_expect(summary.get("status_counts", {}).get("candidate") == 7, "Krea2 tuning report candidate count changed")
|
_expect(summary.get("status_counts", {}).get("candidate") == 8, "Krea2 tuning report candidate count changed")
|
||||||
_expect(
|
_expect(
|
||||||
summary.get("variants_without_accepted_evidence") == [
|
summary.get("variants_without_accepted_evidence") == [
|
||||||
"pov_ballsucking_low_head",
|
"pov_ballsucking_low_head",
|
||||||
@@ -6942,6 +6952,7 @@ def smoke_krea2_tuning_report_policy() -> None:
|
|||||||
"pov_blowjob_top_down_vertical_shaft",
|
"pov_blowjob_top_down_vertical_shaft",
|
||||||
"pov_blowjob_side_profile_oral",
|
"pov_blowjob_side_profile_oral",
|
||||||
"pov_blowjob_laying_frontal_oral",
|
"pov_blowjob_laying_frontal_oral",
|
||||||
|
"pov_blowjob_sitting_upright_oral",
|
||||||
],
|
],
|
||||||
f"Krea2 tuning report missing-evidence set changed: {summary.get('variants_without_accepted_evidence')}",
|
f"Krea2 tuning report missing-evidence set changed: {summary.get('variants_without_accepted_evidence')}",
|
||||||
)
|
)
|
||||||
@@ -6956,6 +6967,7 @@ def smoke_krea2_tuning_report_policy() -> None:
|
|||||||
"pov_blowjob_top_down_vertical_shaft",
|
"pov_blowjob_top_down_vertical_shaft",
|
||||||
"pov_blowjob_side_profile_oral",
|
"pov_blowjob_side_profile_oral",
|
||||||
"pov_blowjob_laying_frontal_oral",
|
"pov_blowjob_laying_frontal_oral",
|
||||||
|
"pov_blowjob_sitting_upright_oral",
|
||||||
],
|
],
|
||||||
"Krea2 tuning report next plans changed",
|
"Krea2 tuning report next plans changed",
|
||||||
)
|
)
|
||||||
@@ -7027,6 +7039,15 @@ def smoke_krea2_tuning_report_policy() -> None:
|
|||||||
any(str(path).endswith("blowjob_laying/101_blowjob_laying.png") for path in oral_laying_plan.get("reference_paths") or []),
|
any(str(path).endswith("blowjob_laying/101_blowjob_laying.png") for path in oral_laying_plan.get("reference_paths") or []),
|
||||||
"Blowjob laying test plan lost atlas reference path",
|
"Blowjob laying test plan lost atlas reference path",
|
||||||
)
|
)
|
||||||
|
oral_sitting_plan = plan_by_key["pov_blowjob_sitting_upright_oral"]
|
||||||
|
_expect(
|
||||||
|
"woman sits upright between the viewer's open thighs" in " ".join(oral_sitting_plan.get("prompt_cues") or []),
|
||||||
|
"Blowjob sitting test plan lost upright sitting cue",
|
||||||
|
)
|
||||||
|
_expect(
|
||||||
|
any(str(path).endswith("blowjob_sitting/100_blowjob_sitting.png") for path in oral_sitting_plan.get("reference_paths") or []),
|
||||||
|
"Blowjob sitting test plan lost atlas reference path",
|
||||||
|
)
|
||||||
with tempfile.TemporaryDirectory() as tmpdir:
|
with tempfile.TemporaryDirectory() as tmpdir:
|
||||||
atlas_root = Path(tmpdir)
|
atlas_root = Path(tmpdir)
|
||||||
for folder in ("doggy", "doggy_control", "custom_pose", "custom_pose_control", "bg", "woman", "doggy_bg"):
|
for folder in ("doggy", "doggy_control", "custom_pose", "custom_pose_control", "bg", "woman", "doggy_bg"):
|
||||||
@@ -7065,6 +7086,7 @@ def smoke_krea2_tuning_report_policy() -> None:
|
|||||||
_expect("pov_blowjob_top_down_vertical_shaft" in markdown, "Krea2 tuning report markdown lost blowjob top-view 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")
|
_expect("pov_blowjob_side_profile_oral" in markdown, "Krea2 tuning report markdown lost blowjob side candidate variant")
|
||||||
_expect("pov_blowjob_laying_frontal_oral" in markdown, "Krea2 tuning report markdown lost blowjob laying candidate variant")
|
_expect("pov_blowjob_laying_frontal_oral" in markdown, "Krea2 tuning report markdown lost blowjob laying candidate variant")
|
||||||
|
_expect("pov_blowjob_sitting_upright_oral" in markdown, "Krea2 tuning report markdown lost blowjob sitting candidate variant")
|
||||||
_expect("needs_fixed_seed_tests" in markdown, "Krea2 tuning report markdown lost coverage state")
|
_expect("needs_fixed_seed_tests" in markdown, "Krea2 tuning report markdown lost coverage state")
|
||||||
_expect("Prompt cues" in markdown, "Krea2 tuning report markdown lost next-test cue section")
|
_expect("Prompt cues" in markdown, "Krea2 tuning report markdown lost next-test cue section")
|
||||||
_expect("Avoid cues" in markdown, "Krea2 tuning report markdown lost next-test avoid section")
|
_expect("Avoid cues" in markdown, "Krea2 tuning report markdown lost next-test avoid section")
|
||||||
|
|||||||
Reference in New Issue
Block a user