Add Krea2 reverse cowgirl alt candidate

This commit is contained in:
2026-06-29 07:20:41 +02:00
parent 43a71c2353
commit 05f14cecc7
3 changed files with 75 additions and 1 deletions
+40
View File
@@ -599,6 +599,46 @@
"guide_section": "",
"notes": "Atlas shows repeated reverse cowgirl geometry with the viewer underneath and the woman facing away; needs fixed-seed Krea2 tests before promotion to proven."
}
},
{
"key": "pov_reverse_cowgirl_alt_upright_back_facing_penetration",
"family": "reverse_cowgirl_alt",
"status": "candidate",
"atlas_folders": ["cowgirl_reversere_alt"],
"action_family": "penetration",
"position_keys": ["reverse_cowgirl", "back_facing_straddle", "woman_on_top", "upright_seated"],
"canonical_geometry": "Upright first-person reverse cowgirl alt view: the viewer reclines below while the woman sits upright facing away in a back-facing straddle, her back and ass stay centered above the viewer's pelvis, her knees or thighs frame the viewer's hips, and viewer hands may hold her hips, thighs, wrists, or hands.",
"prompt_cues": [
"POV upright reverse cowgirl back-facing penetration position",
"woman sits upright facing away from the viewer in a back-facing straddle",
"her back stays vertical and readable above her hips",
"her ass is centered above the viewer's pelvis while her knees or thighs frame the viewer's hips",
"viewer reclines underneath with thighs, pelvis, or lower torso anchoring the foreground",
"viewer hands may hold her hips, thighs, wrists, or hands without changing the upright woman-on-top posture"
],
"avoid_cues": [
"close hip-only reverse cowgirl crop without the upright back",
"frontal cowgirl with the woman facing the viewer",
"missionary with the woman lying on her back",
"rear-entry or doggy geometry with the viewer behind her",
"woman on all fours",
"cropping away the vertical back and seated woman-on-top posture"
],
"reference_images": [
"cowgirl_reversere_alt/100_cowgirl_reversere_alt.png",
"cowgirl_reversere_alt/101_cowgirl_reversere_alt.png",
"cowgirl_reversere_alt/102_cowgirl_reversere_alt.png",
"cowgirl_reversere_alt/18_cowgirl_reversere_alt.png"
],
"generator_hook": {
"module": "krea_pov_actions.py",
"route_terms": ["cowgirl_reversere_alt", "reverse cowgirl alt", "upright back-facing straddle", "woman-on-top"]
},
"evidence": {
"fixed_seed_tests": [],
"guide_section": "",
"notes": "Atlas shows repeated upright seated reverse cowgirl geometry; keep separate from the closer reverse cowgirl route until fixed-seed Krea2 tests prove whether one wording can cover both."
}
}
]
}
+12
View File
@@ -210,3 +210,15 @@ one shoulder. Treat `pov_reverse_cowgirl_back_facing_penetration` as a
candidate until it has fixed-seed Krea2 evidence. Keep it separate from doggy:
the viewer is underneath her in a back-facing straddle, not kneeling behind her
while she is on all fours.
### Reverse Cowgirl Alt / Upright Back-Facing Straddle
The `cowgirl_reversere_alt` folder repeats an upright seated reverse-cowgirl
layout. The viewer reclines underneath, while the woman sits upright facing
away in a back-facing straddle; her back remains vertical and readable above
her hips, with viewer hands often holding her hips, thighs, wrists, or hands.
Treat `pov_reverse_cowgirl_alt_upright_back_facing_penetration` as a candidate
until it has fixed-seed Krea2 evidence. Keep it separate from
`pov_reverse_cowgirl_back_facing_penetration`, which can be closer and more
hip-cropped; this alt needs wording that preserves the vertical torso and
seated woman-on-top posture.
+23 -1
View File
@@ -6791,6 +6791,7 @@ def smoke_krea2_pose_variant_catalog_policy() -> None:
"pov_cowgirl_frontal_straddle_penetration",
"pov_cowgirl_alt_low_squat_penetration",
"pov_reverse_cowgirl_back_facing_penetration",
"pov_reverse_cowgirl_alt_upright_back_facing_penetration",
],
f"Krea2 pose-variant penetration filtering changed unexpectedly: {penetration}",
)
@@ -6904,6 +6905,12 @@ def smoke_krea2_pose_variant_catalog_policy() -> None:
any("woman faces away from the viewer in a back-facing straddle" in str(cue) for cue in reverse_cowgirl.get("prompt_cues", [])),
"Reverse cowgirl variant lost back-facing straddle cue",
)
reverse_cowgirl_alt = krea2_pose_variant_catalog.get_variant("pov_reverse_cowgirl_alt_upright_back_facing_penetration")
_expect(reverse_cowgirl_alt.get("status") == "candidate", "Reverse cowgirl alt variant should remain a candidate until fixed-seed evidence exists")
_expect(
any("woman sits upright facing away from the viewer in a back-facing straddle" in str(cue) for cue in reverse_cowgirl_alt.get("prompt_cues", [])),
"Reverse cowgirl alt variant lost upright back-facing cue",
)
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(all("bg" not in str(path).lower() for path in refs), "Reference paths should not include background-only atlas images")
@@ -6997,9 +7004,12 @@ def smoke_krea2_tuning_report_policy() -> None:
reverse_cowgirl = by_key.get("pov_reverse_cowgirl_back_facing_penetration") or {}
_expect(reverse_cowgirl.get("coverage_state") == "needs_fixed_seed_tests", "Reverse cowgirl report should need fixed-seed tests")
_expect(reverse_cowgirl.get("accepted_evidence_count") == 0, "Reverse cowgirl report should not have accepted evidence yet")
reverse_cowgirl_alt = by_key.get("pov_reverse_cowgirl_alt_upright_back_facing_penetration") or {}
_expect(reverse_cowgirl_alt.get("coverage_state") == "needs_fixed_seed_tests", "Reverse cowgirl alt report should need fixed-seed tests")
_expect(reverse_cowgirl_alt.get("accepted_evidence_count") == 0, "Reverse cowgirl alt report should not have accepted evidence yet")
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") == 13, "Krea2 tuning report candidate count changed")
_expect(summary.get("status_counts", {}).get("candidate") == 14, "Krea2 tuning report candidate count changed")
_expect(
summary.get("variants_without_accepted_evidence") == [
"pov_ballsucking_low_head",
@@ -7015,6 +7025,7 @@ def smoke_krea2_tuning_report_policy() -> None:
"pov_cowgirl_frontal_straddle_penetration",
"pov_cowgirl_alt_low_squat_penetration",
"pov_reverse_cowgirl_back_facing_penetration",
"pov_reverse_cowgirl_alt_upright_back_facing_penetration",
],
f"Krea2 tuning report missing-evidence set changed: {summary.get('variants_without_accepted_evidence')}",
)
@@ -7035,6 +7046,7 @@ def smoke_krea2_tuning_report_policy() -> None:
"pov_cowgirl_frontal_straddle_penetration",
"pov_cowgirl_alt_low_squat_penetration",
"pov_reverse_cowgirl_back_facing_penetration",
"pov_reverse_cowgirl_alt_upright_back_facing_penetration",
],
"Krea2 tuning report next plans changed",
)
@@ -7160,6 +7172,15 @@ def smoke_krea2_tuning_report_policy() -> None:
any(str(path).endswith("cowgirl_reverse/101_cowgirl_reverse.png") for path in reverse_cowgirl_plan.get("reference_paths") or []),
"Reverse cowgirl test plan lost atlas reference path",
)
reverse_cowgirl_alt_plan = plan_by_key["pov_reverse_cowgirl_alt_upright_back_facing_penetration"]
_expect(
"woman sits upright facing away from the viewer in a back-facing straddle" in " ".join(reverse_cowgirl_alt_plan.get("prompt_cues") or []),
"Reverse cowgirl alt test plan lost upright back-facing cue",
)
_expect(
any(str(path).endswith("cowgirl_reversere_alt/100_cowgirl_reversere_alt.png") for path in reverse_cowgirl_alt_plan.get("reference_paths") or []),
"Reverse cowgirl alt test plan lost atlas reference path",
)
with tempfile.TemporaryDirectory() as tmpdir:
atlas_root = Path(tmpdir)
for folder in ("doggy", "doggy_control", "custom_pose", "custom_pose_control", "bg", "woman", "doggy_bg"):
@@ -7204,6 +7225,7 @@ def smoke_krea2_tuning_report_policy() -> None:
_expect("pov_cowgirl_frontal_straddle_penetration" in markdown, "Krea2 tuning report markdown lost cowgirl candidate variant")
_expect("pov_cowgirl_alt_low_squat_penetration" in markdown, "Krea2 tuning report markdown lost cowgirl alt candidate variant")
_expect("pov_reverse_cowgirl_back_facing_penetration" in markdown, "Krea2 tuning report markdown lost reverse cowgirl candidate variant")
_expect("pov_reverse_cowgirl_alt_upright_back_facing_penetration" in markdown, "Krea2 tuning report markdown lost reverse cowgirl alt candidate variant")
_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("Avoid cues" in markdown, "Krea2 tuning report markdown lost next-test avoid section")