Mark sixty-nine as low-priority control route
This commit is contained in:
@@ -336,6 +336,9 @@
|
|||||||
"key": "pov_sixty_nine_close_reversed_oral",
|
"key": "pov_sixty_nine_close_reversed_oral",
|
||||||
"family": "sixty_nine",
|
"family": "sixty_nine",
|
||||||
"status": "unstable",
|
"status": "unstable",
|
||||||
|
"difficulty": "hardest",
|
||||||
|
"priority": "low",
|
||||||
|
"control_requirement": "pose_or_image_guidance_first",
|
||||||
"atlas_folders": ["69"],
|
"atlas_folders": ["69"],
|
||||||
"action_family": "oral",
|
"action_family": "oral",
|
||||||
"position_keys": ["sixty_nine"],
|
"position_keys": ["sixty_nine"],
|
||||||
@@ -368,7 +371,7 @@
|
|||||||
"evidence": {
|
"evidence": {
|
||||||
"fixed_seed_tests": [],
|
"fixed_seed_tests": [],
|
||||||
"guide_section": "",
|
"guide_section": "",
|
||||||
"notes": "Atlas geometry is consistent but visually fragile for text-only Krea2 prompting; keep this unstable until fixed-seed tests prove a reliable wording or a control-image route is wired."
|
"notes": "Lowest-priority atlas route for now: geometry is consistent but visually fragile for text-only Krea2 prompting. Treat it as a pose/control-image or image-guidance-first case, not a normal prompt-only fixed-seed candidate."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -158,10 +158,11 @@ The `69` folder repeats a close first-person mutual-oral layout rather than a
|
|||||||
wide side-by-side pose: the visible partner is reversed over the viewer, hips
|
wide side-by-side pose: the visible partner is reversed over the viewer, hips
|
||||||
closest to camera, head and torso receding away into the upper frame, and the
|
closest to camera, head and torso receding away into the upper frame, and the
|
||||||
viewer face or mouth anchoring the lower foreground. Treat
|
viewer face or mouth anchoring the lower foreground. Treat
|
||||||
`pov_sixty_nine_close_reversed_oral` as unstable until fixed-seed tests prove a
|
`pov_sixty_nine_close_reversed_oral` as the hardest and lowest-priority route in
|
||||||
reliable wording. When exact geometry matters, prefer a pose/control image or a
|
the atlas for now. Do not queue it as a normal prompt-only fixed-seed candidate.
|
||||||
narrower image-guided route; text alone can collapse this into generic oral
|
When exact geometry matters, prefer a pose/control image or a narrower
|
||||||
contact or lose the reversed-over-viewer body arrangement.
|
image-guided route; text alone can collapse this into generic oral contact or
|
||||||
|
lose the reversed-over-viewer body arrangement.
|
||||||
|
|
||||||
### Blowjob Top View
|
### Blowjob Top View
|
||||||
|
|
||||||
|
|||||||
@@ -229,6 +229,24 @@ Do not over-prompt `viewer torso and thighs outside frame`; seeds `65` and
|
|||||||
that. Prefer framing them as plausible foreground body cues rather than trying
|
that. Prefer framing them as plausible foreground body cues rather than trying
|
||||||
to suppress them.
|
to suppress them.
|
||||||
|
|
||||||
|
## Stronger-Control / Low-Priority Cases
|
||||||
|
|
||||||
|
Some atlas routes are useful to catalog but are not good prompt-only tuning
|
||||||
|
targets yet. Keep these out of the normal fixed-seed prompt queue until easier
|
||||||
|
pose families are covered.
|
||||||
|
|
||||||
|
### Sixty-Nine / Close Reversed POV
|
||||||
|
|
||||||
|
`pov_sixty_nine_close_reversed_oral` is currently the hardest and low-priority
|
||||||
|
atlas route. It should be treated as a pose/control image or image-guided route
|
||||||
|
first, not a normal prompt-only fixed-seed candidate.
|
||||||
|
|
||||||
|
The repeated atlas geometry is close and specific: the visible partner is
|
||||||
|
reversed over the viewer, hips closest to the camera, head and torso receding
|
||||||
|
away into the upper frame, and the viewer face or mouth anchoring the lower
|
||||||
|
foreground. Text-only prompting can collapse this into generic oral contact or
|
||||||
|
lose the reversed-over-viewer body arrangement.
|
||||||
|
|
||||||
## Style
|
## Style
|
||||||
|
|
||||||
Style should describe rendering, not camera mechanics.
|
Style should describe rendering, not camera mechanics.
|
||||||
|
|||||||
@@ -53,6 +53,9 @@ def coverage_rows() -> list[dict[str, Any]]:
|
|||||||
"family": variant.get("family") or "",
|
"family": variant.get("family") or "",
|
||||||
"action_family": variant.get("action_family") or "",
|
"action_family": variant.get("action_family") or "",
|
||||||
"status": status,
|
"status": status,
|
||||||
|
"difficulty": variant.get("difficulty") or "",
|
||||||
|
"priority": variant.get("priority") or "",
|
||||||
|
"control_requirement": variant.get("control_requirement") or "",
|
||||||
"coverage_state": _coverage_state(status, len(accepted)),
|
"coverage_state": _coverage_state(status, len(accepted)),
|
||||||
"accepted_evidence_count": len(accepted),
|
"accepted_evidence_count": len(accepted),
|
||||||
"total_evidence_count": len(evidence),
|
"total_evidence_count": len(evidence),
|
||||||
@@ -83,6 +86,11 @@ def coverage_summary() -> dict[str, Any]:
|
|||||||
for row in rows
|
for row in rows
|
||||||
if row.get("coverage_state") in {"needs_fixed_seed_tests", "proven_missing_evidence"}
|
if row.get("coverage_state") in {"needs_fixed_seed_tests", "proven_missing_evidence"}
|
||||||
],
|
],
|
||||||
|
"stronger_control_cases": [
|
||||||
|
str(row.get("key"))
|
||||||
|
for row in rows
|
||||||
|
if row.get("coverage_state") == "needs_stronger_control"
|
||||||
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -256,6 +264,16 @@ def markdown_report(atlas_root: str | Path | None = None) -> str:
|
|||||||
*[f"- {key}" for key in summary["next_test_candidates"]],
|
*[f"- {key}" for key in summary["next_test_candidates"]],
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
stronger_control_rows = [row for row in coverage_rows() if row.get("coverage_state") == "needs_stronger_control"]
|
||||||
|
if stronger_control_rows:
|
||||||
|
lines.extend(["", "## Stronger Control Cases", ""])
|
||||||
|
for row in stronger_control_rows:
|
||||||
|
difficulty = row.get("difficulty") or "unrated"
|
||||||
|
priority = row.get("priority") or "unprioritized"
|
||||||
|
control_requirement = row.get("control_requirement") or "control_needed"
|
||||||
|
lines.append(
|
||||||
|
f"- {row['key']}: {difficulty}, {priority} priority, {control_requirement}"
|
||||||
|
)
|
||||||
plans = next_test_plans()
|
plans = next_test_plans()
|
||||||
if plans:
|
if plans:
|
||||||
lines.extend(["", "## Next Test Plans"])
|
lines.extend(["", "## Next Test Plans"])
|
||||||
|
|||||||
@@ -6874,6 +6874,12 @@ def smoke_krea2_pose_variant_catalog_policy() -> None:
|
|||||||
)
|
)
|
||||||
sixty_nine = krea2_pose_variant_catalog.get_variant("pov_sixty_nine_close_reversed_oral")
|
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(sixty_nine.get("status") == "unstable", "Sixty-nine route should stay unstable until text-only evidence improves")
|
||||||
|
_expect(sixty_nine.get("difficulty") == "hardest", "Sixty-nine route should be marked as the hardest atlas route")
|
||||||
|
_expect(sixty_nine.get("priority") == "low", "Sixty-nine route should be marked low priority")
|
||||||
|
_expect(
|
||||||
|
sixty_nine.get("control_requirement") == "pose_or_image_guidance_first",
|
||||||
|
"Sixty-nine route should require pose/image guidance before prompt-only tuning",
|
||||||
|
)
|
||||||
_expect(
|
_expect(
|
||||||
any("visible partner is reversed over the viewer with hips closest" in str(cue) for cue in sixty_nine.get("prompt_cues", [])),
|
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",
|
"Sixty-nine variant lost reversed-over-viewer cue",
|
||||||
@@ -6990,6 +6996,15 @@ def smoke_krea2_eval_log_policy() -> None:
|
|||||||
_expect(clean.get("observation") != "mutation should not leak", "Krea2 eval log leaked caller mutation")
|
_expect(clean.get("observation") != "mutation should not leak", "Krea2 eval log leaked caller mutation")
|
||||||
|
|
||||||
|
|
||||||
|
def smoke_krea2_prompt_guide_policy() -> None:
|
||||||
|
guide = (ROOT / "docs" / "krea2-prompt-guide.md").read_text(encoding="utf-8")
|
||||||
|
_expect("## Stronger-Control / Low-Priority Cases" in guide, "Krea2 prompt guide lost stronger-control section")
|
||||||
|
_expect("pov_sixty_nine_close_reversed_oral" in guide, "Krea2 prompt guide lost sixty-nine unstable route")
|
||||||
|
_expect("hardest" in guide and "low-priority" in guide, "Krea2 prompt guide lost hardest low-priority wording")
|
||||||
|
_expect("not a normal prompt-only fixed-seed candidate" in guide, "Krea2 prompt guide should not queue sixty-nine as normal prompt tuning")
|
||||||
|
_expect("pose/control image" in guide or "image-guided" in guide, "Krea2 prompt guide lost control-first guidance")
|
||||||
|
|
||||||
|
|
||||||
def smoke_krea2_tuning_report_policy() -> None:
|
def smoke_krea2_tuning_report_policy() -> None:
|
||||||
rows = krea2_tuning_report.coverage_rows()
|
rows = krea2_tuning_report.coverage_rows()
|
||||||
catalog_keys = krea2_pose_variant_catalog.variant_keys()
|
catalog_keys = krea2_pose_variant_catalog.variant_keys()
|
||||||
@@ -7022,6 +7037,12 @@ def smoke_krea2_tuning_report_policy() -> None:
|
|||||||
sixty_nine = by_key.get("pov_sixty_nine_close_reversed_oral") or {}
|
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("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")
|
_expect(sixty_nine.get("accepted_evidence_count") == 0, "Sixty-nine report should not have accepted evidence yet")
|
||||||
|
_expect(sixty_nine.get("difficulty") == "hardest", "Sixty-nine report lost hardest-route marker")
|
||||||
|
_expect(sixty_nine.get("priority") == "low", "Sixty-nine report lost low-priority marker")
|
||||||
|
_expect(
|
||||||
|
sixty_nine.get("control_requirement") == "pose_or_image_guidance_first",
|
||||||
|
"Sixty-nine report lost control-first marker",
|
||||||
|
)
|
||||||
spread = by_key.get("pov_spread_open_thigh_presentation") or {}
|
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("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")
|
_expect(spread.get("accepted_evidence_count") == 0, "Spread report should not have accepted evidence yet")
|
||||||
@@ -7081,6 +7102,10 @@ def smoke_krea2_tuning_report_policy() -> None:
|
|||||||
],
|
],
|
||||||
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')}",
|
||||||
)
|
)
|
||||||
|
_expect(
|
||||||
|
summary.get("stronger_control_cases") == ["pov_sixty_nine_close_reversed_oral"],
|
||||||
|
f"Krea2 tuning report stronger-control set changed: {summary.get('stronger_control_cases')}",
|
||||||
|
)
|
||||||
plans = krea2_tuning_report.next_test_plans()
|
plans = krea2_tuning_report.next_test_plans()
|
||||||
_expect(
|
_expect(
|
||||||
"pov_sixty_nine_close_reversed_oral" not in [plan.get("key") for plan in plans],
|
"pov_sixty_nine_close_reversed_oral" not in [plan.get("key") for plan in plans],
|
||||||
@@ -7304,6 +7329,10 @@ def smoke_krea2_tuning_report_policy() -> None:
|
|||||||
_expect("seed 7302" in markdown, "Krea2 tuning report markdown lost evidence seed")
|
_expect("seed 7302" in markdown, "Krea2 tuning report markdown lost evidence seed")
|
||||||
_expect("generator_patch" in markdown, "Krea2 tuning report markdown lost evidence decision")
|
_expect("generator_patch" in markdown, "Krea2 tuning report markdown lost evidence decision")
|
||||||
_expect("upright frontal boobjob geometry" in markdown, "Krea2 tuning report markdown lost evidence prompt summary")
|
_expect("upright frontal boobjob geometry" in markdown, "Krea2 tuning report markdown lost evidence prompt summary")
|
||||||
|
_expect("## Stronger Control Cases" in markdown, "Krea2 tuning report markdown lost stronger-control section")
|
||||||
|
_expect("hardest" in markdown, "Krea2 tuning report markdown lost hardest-route marker")
|
||||||
|
_expect("low priority" in markdown, "Krea2 tuning report markdown lost low-priority marker")
|
||||||
|
_expect("pose_or_image_guidance_first" in markdown, "Krea2 tuning report markdown lost control-first marker")
|
||||||
_expect("pov_ballsucking_low_head" in markdown, "Krea2 tuning report markdown lost candidate variant")
|
_expect("pov_ballsucking_low_head" in markdown, "Krea2 tuning report markdown lost candidate variant")
|
||||||
_expect("pov_footjob_frontal_sole_stroke" in markdown, "Krea2 tuning report markdown lost footjob candidate variant")
|
_expect("pov_footjob_frontal_sole_stroke" in markdown, "Krea2 tuning report markdown lost footjob candidate variant")
|
||||||
_expect("pov_fingering_reclined_open_thighs" in markdown, "Krea2 tuning report markdown lost fingering candidate variant")
|
_expect("pov_fingering_reclined_open_thighs" in markdown, "Krea2 tuning report markdown lost fingering candidate variant")
|
||||||
@@ -10333,6 +10362,7 @@ SMOKE_CASES: list[tuple[str, Callable[[], None]]] = [
|
|||||||
("krea2_pov_pose_variant_catalog", smoke_krea2_pov_pose_variant_catalog),
|
("krea2_pov_pose_variant_catalog", smoke_krea2_pov_pose_variant_catalog),
|
||||||
("krea2_pose_variant_catalog_policy", smoke_krea2_pose_variant_catalog_policy),
|
("krea2_pose_variant_catalog_policy", smoke_krea2_pose_variant_catalog_policy),
|
||||||
("krea2_eval_log_policy", smoke_krea2_eval_log_policy),
|
("krea2_eval_log_policy", smoke_krea2_eval_log_policy),
|
||||||
|
("krea2_prompt_guide_policy", smoke_krea2_prompt_guide_policy),
|
||||||
("krea2_tuning_report_policy", smoke_krea2_tuning_report_policy),
|
("krea2_tuning_report_policy", smoke_krea2_tuning_report_policy),
|
||||||
("krea_pov_penetration_route", smoke_krea_pov_penetration_route),
|
("krea_pov_penetration_route", smoke_krea_pov_penetration_route),
|
||||||
("pov_outercourse_position_routes", smoke_pov_outercourse_position_routes),
|
("pov_outercourse_position_routes", smoke_pov_outercourse_position_routes),
|
||||||
|
|||||||
Reference in New Issue
Block a user