Extract Krea clothing cleanup

This commit is contained in:
2026-06-26 15:31:09 +02:00
parent 92469daf03
commit 031223255d
5 changed files with 115 additions and 66 deletions
+4 -3
View File
@@ -137,7 +137,6 @@ Keep here:
- Krea prose style;
- hardcore action sentence rewriting;
- POV sentence rewriting;
- clothing naturalization;
- camera-scene preservation;
- fallback text parsing.
@@ -145,11 +144,13 @@ Already isolated:
- `krea_cast.py` owns cast descriptor parsing, cast prose, label joining, and
natural label replacement for formatter routes.
- `krea_clothing.py` owns clothing-state cleanup and action-aware body-access
wording for formatter routes.
Improve later:
- split semantic blocks into modules:
`krea_actions.py`, `krea_pov.py`, `krea_clothing.py`;
`krea_actions.py`, `krea_pov.py`;
- add route-level smoke fixtures for representative metadata rows;
- make `_hardcore_action_sentence` dispatch by action family instead of long
conditional chains.
@@ -330,7 +331,7 @@ Medium-term:
## Recommended Next Passes
1. Split Krea action/POV/clothing helpers into separate modules, using
1. Split Krea action/POV helpers into separate modules, using
`krea_cast.py` as the pattern for stable import aliases and smoke coverage.
2. Split `__init__.py` node classes by family after behavior is covered by smoke
checks.
+6 -5
View File
@@ -545,10 +545,11 @@ Important POV rule:
Key Krea2 ownership:
- Cast descriptor naturalization: `_cast_prose`, `_natural_label_text`.
- Cast descriptor naturalization: `krea_cast.cast_prose`,
`krea_cast.natural_label_text`.
- Hardcore action sentence: `_hardcore_action_sentence`.
- POV hardcore sentence: `_pov_hardcore_pose_sentence`, `_pov_action_phrase`.
- Clothing state cleanup: `_natural_clothing_state`.
- Clothing state cleanup: `krea_clothing.natural_clothing_state`.
- Camera scene preservation: `_camera_scene_phrase`.
Krea2 field consumption:
@@ -558,7 +559,7 @@ Krea2 field consumption:
| Normal single row | `subject_type`, `item`, `pose`, `scene_text`, `expression`, `composition`, `camera_*`, style fields | `_normal_row_to_krea` |
| Normal configured cast/hardcore row | `cast_descriptor_text`, `women_count`, `men_count`, `source_role_graph`, `role_graph`, `item`, `item_axis_values`, `source_composition`, `pov_character_labels` | `_normal_row_to_krea`, `_hardcore_action_sentence`, `_pov_action_phrase` |
| Insta/OF pair softcore | `shared_descriptor`, `softcore_row`, `softcore_partner_styling`, options, soft camera fields | `_insta_pair_to_krea` |
| Insta/OF pair hardcore | `hardcore_row`, `shared_cast_descriptors`, `hardcore_clothing_state`, `hardcore_detail_density`, hard camera fields, POV labels | `_insta_pair_to_krea`, `_hardcore_action_sentence`, `_pov_action_phrase`, `_natural_clothing_state` |
| Insta/OF pair hardcore | `hardcore_row`, `shared_cast_descriptors`, `hardcore_clothing_state`, `hardcore_detail_density`, hard camera fields, POV labels | `_insta_pair_to_krea`, `_hardcore_action_sentence`, `_pov_action_phrase`, `krea_clothing.natural_clothing_state` |
| Plain text fallback | `source_text` only | `_fallback_text_to_krea` |
If metadata is connected and `method` says `text(fallback)`, the formatter did
@@ -700,7 +701,7 @@ pair metadata through the core Python APIs, then verifies:
| --- | --- |
| Wrong main category/subcategory frequency | Category node config, `load_category_library`, category JSON weights. |
| Wrong outfit/clothing item | Relevant category JSON, `INSTA_OF_SOFTCORE_OUTFITS`, `SxCP Character Clothing`. |
| Nude/clothing state confusing Krea2 | `build_insta_of_pair` clothing state helpers, then `_natural_clothing_state`. |
| Nude/clothing state confusing Krea2 | `build_insta_of_pair` clothing state helpers, then `krea_clothing.natural_clothing_state`. |
| Wrong location | `categories/location_pools.json`, category `scene_pool`, `_scene_pool`. |
| Location good but camera/location layout wrong | `_camera_scene_directive_for_context`, coworking adapter functions. |
| Repeated desk/anchor in POV foreground | Coworking direction/distance/elevation helpers. |
@@ -763,7 +764,7 @@ Use these traces to narrow a problem in one pass.
1. Check pair root `hardcore_clothing_state`.
2. Check hard row `item` and `source_role_graph` for access flags.
3. Character slot `hardcore_clothing` overrides pair fallback clothing.
4. For Krea wording, inspect `_natural_clothing_state`.
4. For Krea wording, inspect `krea_clothing.natural_clothing_state`.
5. For generation wording, inspect `_insta_of_hardcore_clothing_state`,
`_hardcore_row_access_flags`, and `character_hardcore_clothing_values`.