Move hardcore position filtering policy
This commit is contained in:
@@ -77,7 +77,7 @@ Core helper ownership:
|
||||
| `generation_profile_config.py` | Generation profile presets, profile option overrides, trigger policy, expression/pose/clothing config normalization, and profile config parsing. |
|
||||
| `seed_config.py` | Seed axis salts/aliases, seed mode choices, global/axis lock JSON builders, seed config parsing, row seed math, and deterministic axis RNG construction. |
|
||||
| `location_config.py` | Location/composition preset schemas, themed location packs, custom location/composition parsing, pool merge behavior, and location/composition config parsing. |
|
||||
| `hardcore_position_config.py` | Hardcore position/action-filter choices, selected-position normalization, config JSON builders/parsers, focus-policy toggles, subcategory allow-list policy, and position-key detection. |
|
||||
| `hardcore_position_config.py` | Hardcore position/action-filter choices, selected-position normalization, config JSON builders/parsers, focus-policy toggles, subcategory allow-list policy, position-key detection, and category/template/axis filtering. |
|
||||
| `pair_options.py` | Insta/OF option schema/defaults, softcore category/outfit/pose pools, partner outfit pools, clothing-continuity labels, negatives, and hardcore cast count policy. |
|
||||
| `pair_rows.py` | Insta/OF soft/hard row creation, softcore expression override resolution, Woman A slot context application, soft outfit/pose overrides, and POV row fields. |
|
||||
| `pair_camera.py` | Insta/OF soft/hard camera route resolution, same-as-softcore camera mode, camera-detail override, camera-aware composition mutation, POV camera suppression, and synchronized row/root camera metadata. |
|
||||
@@ -126,7 +126,7 @@ These recipes identify the intended road before editing prompt text.
|
||||
| Request | Preferred node route | Critical settings | If wrong, inspect |
|
||||
| --- | --- | --- | --- |
|
||||
| Keep character/location but change only sexual pose | `Global Seed` or fixed seed config -> builder/pair | Keep `person_seed` and `scene_seed` fixed; change `pose_seed` and usually `role_seed`; for hardcore categories check `content_seed_axis` | `sexual_poses.json`, `hardcore_position_config`, `krea_actions.hardcore_action_sentence` |
|
||||
| Generate a specific hardcore oral/blowjob scene | `Hardcore Position Pool` -> `Hardcore Action Filter` -> `Insta/OF Prompt Pair` or `Prompt Builder` | Use `focus=oral_only` or disable non-oral families; keep `allow_oral=true`; constrain position pool to kneeling/standing/oral variants when needed | `sexual_poses.json` oral subcategory/templates, `_apply_hardcore_position_config_to_subcategory`, `krea_actions.hardcore_action_sentence` |
|
||||
| Generate a specific hardcore oral/blowjob scene | `Hardcore Position Pool` -> `Hardcore Action Filter` -> `Insta/OF Prompt Pair` or `Prompt Builder` | Use `focus=oral_only` or disable non-oral families; keep `allow_oral=true`; constrain position pool to kneeling/standing/oral variants when needed | `sexual_poses.json` oral subcategory/templates, `hardcore_position_config.apply_hardcore_position_config_to_subcategory`, `krea_actions.hardcore_action_sentence` |
|
||||
| Generate POV oral or POV penetration | `Man Slot` with POV presence -> `character_cast` -> pair/builder -> Krea2 formatter | POV man must be in the cast; use metadata into Krea2; normal camera directive is suppressed by POV | `krea_pov_actions.py`, `krea_pov.py`, `krea_cast.cast_prose` omit-label handling |
|
||||
| Generate porn-scene interaction beats | `Hardcore Position Pool` -> `Hardcore Action Filter` -> pair/builder | Use `focus=interaction_only` for kissing/body worship/transitions/guidance/camera/watching/aftercare, or `focus=manual_only` for fingering/clit/manual stimulation; constrain keys such as `camera_showing`, `wrist_pinning`, `fingering`, `aftercare` | `sexual_poses.json` interaction/manual subcategories, `_role_graph`, `krea_action_context.is_foreplay_text` / `krea_actions.hardcore_action_sentence` |
|
||||
| Same woman, same room, softcore and hardcore outputs | `Character Slot/Profile` -> `Insta/OF Options` -> `Insta/OF Prompt Pair` | `continuity=same_creator_same_room`; set `softcore_cast` as needed; use pair metadata into formatter | `build_insta_of_pair`, `softcore_row`, `hardcore_row`, pair metadata fields |
|
||||
@@ -325,9 +325,8 @@ Edit targets:
|
||||
`foreplay_teasing`, `manual_stimulation`, `body_worship_touching`,
|
||||
`clothing_position_transitions`, `dominant_guidance`,
|
||||
`camera_performance`, `group_coordination`, and `aftercare_cleanup`.
|
||||
- Position filtering UI/config: builders and parsers live in
|
||||
`hardcore_position_config.py`; `prompt_builder._apply_hardcore_position_config_to_subcategory`
|
||||
applies the config to category rows.
|
||||
- Position filtering UI/config and category/template/axis filter policy live in
|
||||
`hardcore_position_config.py`.
|
||||
- Krea2 action rewrite orchestration: `krea_formatter.py`.
|
||||
- Krea2 non-POV position anchors/arrangements: `krea_action_positions.py`.
|
||||
- Krea2 non-climax item/detail cleanup: `krea_action_details.py`.
|
||||
@@ -517,8 +516,8 @@ plain prompt text. When debugging, inspect these fields before editing pools.
|
||||
flowchart TD
|
||||
A[Hardcore Position Pool] --> C[hardcore_position_config]
|
||||
B[Hardcore Action Filter] --> C
|
||||
C --> D[_filter_hardcore_categories_for_position]
|
||||
C --> E[_apply_hardcore_position_config_to_subcategory]
|
||||
C --> D[hardcore_position_config.filter_hardcore_categories_for_position]
|
||||
C --> E[hardcore_position_config.apply_hardcore_position_config_to_subcategory]
|
||||
E --> F[item_templates / axes in sexual_poses.json]
|
||||
F --> G[role_graph + item + axis_values]
|
||||
G --> H[Krea2 action sentence and POV rewrite]
|
||||
@@ -831,7 +830,7 @@ pair metadata through the core Python APIs, then verifies:
|
||||
| Repeated desk/anchor in POV foreground | Coworking direction/distance/elevation helpers. |
|
||||
| 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`. |
|
||||
| Same hardcore action repeats | Hardcore filter config, `sexual_poses.json` weights, `hardcore_position_config.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_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`. |
|
||||
|
||||
Reference in New Issue
Block a user