Extract Krea action position helpers

This commit is contained in:
2026-06-26 16:06:44 +02:00
parent 1c661b3c9d
commit ce90fb7593
5 changed files with 507 additions and 459 deletions
+10 -5
View File
@@ -276,6 +276,7 @@ Edit targets:
- Position filtering UI: `build_hardcore_position_pool_json`,
`build_hardcore_action_filter_json`, `_apply_hardcore_position_config_to_subcategory`.
- Krea2 action rewrite orchestration: `krea_formatter.py`.
- Krea2 non-POV position anchors/arrangements: `krea_action_positions.py`.
- Krea2 non-POV action rewrite: `krea_actions.py`.
- Krea2 POV position rewrite: `krea_pov_actions.py`.
@@ -464,8 +465,10 @@ What each part owns:
- `prompt_builder.py`: filters which templates/axes remain available.
- `krea_formatter.py`: orchestrates the selected action rewrite into
model-readable prose.
- `krea_actions.py`: rewrites non-POV hardcore action sentences, pose anchors,
arrangements, detail dedupe, and climax cleanup.
- `krea_action_positions.py`: resolves non-POV pose anchors, body-arrangement
text, duplicate arrangement checks, and action-position phrases.
- `krea_actions.py`: rewrites non-POV hardcore action sentences, item/detail
dedupe, and climax cleanup.
- `krea_pov_actions.py`: rewrites POV variants with first-person geometry.
Current broad hardcore families:
@@ -553,6 +556,7 @@ Key Krea2 ownership:
- Cast descriptor naturalization: `krea_cast.cast_prose`,
`krea_cast.natural_label_text`.
- Action context and family predicates: `krea_action_context.py`.
- Non-POV pose anchors and arrangements: `krea_action_positions.py`.
- Non-POV hardcore action sentence: `krea_actions.hardcore_action_sentence`.
- POV labels, filtering, and camera/composition support: `krea_pov.py`.
- Detail clause splitting and density limiting: `krea_detail.py`.
@@ -716,7 +720,7 @@ pair metadata through the core Python APIs, then verifies:
| Wrong expression intensity | Character slot expression settings, `_expression_entries_for_intensity`, expression pools. |
| Expression appears when disabled | `_disable_row_expression`, formatter expression extraction. |
| Same hardcore action repeats | Hardcore filter config, `sexual_poses.json` weights, `_apply_hardcore_position_config_to_subcategory`. |
| Hardcore interaction beat falls back to penetration/oral | `sexual_poses.json` interaction subcategory, `_role_graph`, and `krea_action_context.is_foreplay_text` / `krea_actions.hardcore_pose_anchor`. |
| Hardcore interaction beat falls back to penetration/oral | `sexual_poses.json` interaction subcategory, `_role_graph`, and `krea_action_context.is_foreplay_text` / `krea_action_positions.hardcore_pose_anchor`. |
| Raw hardcore prompt position is vague | `sexual_poses.json` item templates and role graph templates. |
| Krea2 hardcore prompt position is vague | `krea_actions.hardcore_action_sentence` or `krea_pov_actions.py`. |
| Man appears described in POV | POV labels, `krea_cast.cast_prose` omit labels, `krea_pov_actions.pov_action_phrase`. |
@@ -741,8 +745,9 @@ Use these traces to narrow a problem in one pass.
3. Inspect `categories/sexual_poses.json` for the selected subcategory,
`item_templates`, `axes`, and `weight`.
4. If raw `item` differs but Krea output looks identical, inspect
`krea_action_context.py` family predicates first, then `krea_actions.py`
pose anchors, arrangements, item detail cleanup, and action sentence dispatch.
`krea_action_context.py` family predicates first, then
`krea_action_positions.py` pose anchors/arrangements and `krea_actions.py`
item detail cleanup/action sentence dispatch.
### POV position is spatially wrong