Extract Krea action family dispatch

This commit is contained in:
2026-06-26 16:26:28 +02:00
parent f6d6dfffb4
commit 0e49aed8ac
4 changed files with 254 additions and 145 deletions
+9 -8
View File
@@ -158,14 +158,16 @@ Already isolated:
outercourse, oral, penetration, toy/double-contact, and anchor dedupe paths.
- `krea_action_climax.py` owns climax-specific role/detail cleanup and aftermath
view dedupe.
- `krea_actions.py` owns non-POV hardcore action sentence dispatch.
- `krea_action_dispatch.py` owns non-POV role normalization, action-family
classification, and family-specific detail cleanup.
- `krea_actions.py` owns final non-POV hardcore action sentence assembly.
- `krea_pov_actions.py` owns POV hardcore action sentence rewriting and
first-person body geometry.
Improve later:
- make `krea_actions.hardcore_action_sentence` dispatch by action family instead
of long conditional chains;
- add metadata fields such as `action_family` / `position_family` to reduce
keyword guessing in hardcore formatter dispatch;
- add route-level smoke fixtures for representative metadata rows;
### SDXL Formatter Path
@@ -344,10 +346,9 @@ Medium-term:
## Recommended Next Passes
1. Split `krea_actions.hardcore_action_sentence` into action-family dispatch
helpers, using `krea_cast.py` as the pattern for stable import aliases and
smoke coverage.
1. Add metadata fields such as `action_family` / `position_family` to reduce
keyword guessing in hardcore filters and formatter dispatch.
2. Split `__init__.py` node classes by family after behavior is covered by smoke
checks.
3. Add metadata fields such as `action_family` / `position_family` to reduce
keyword guessing in hardcore filters and formatter dispatch.
3. Add route-level smoke fixtures for representative Krea/SDXL/caption metadata
rows.
+8 -3
View File
@@ -279,7 +279,8 @@ Edit targets:
- Krea2 non-POV position anchors/arrangements: `krea_action_positions.py`.
- Krea2 non-climax item/detail cleanup: `krea_action_details.py`.
- Krea2 climax role/detail cleanup: `krea_action_climax.py`.
- Krea2 non-POV action rewrite: `krea_actions.py`.
- Krea2 non-POV action-family routing: `krea_action_dispatch.py`.
- Krea2 non-POV action sentence assembly: `krea_actions.py`.
- Krea2 POV position rewrite: `krea_pov_actions.py`.
### Composition
@@ -474,7 +475,9 @@ What each part owns:
details.
- `krea_action_climax.py`: rewrites climax role graphs and dedupes aftermath
detail/view clauses.
- `krea_actions.py`: dispatches non-POV hardcore action sentence rewriting.
- `krea_action_dispatch.py`: normalizes non-POV role graphs, classifies action
families, and applies the matching detail cleanup.
- `krea_actions.py`: assembles the final non-POV hardcore action sentence.
- `krea_pov_actions.py`: rewrites POV variants with first-person geometry.
Current broad hardcore families:
@@ -565,6 +568,7 @@ Key Krea2 ownership:
- Non-POV pose anchors and arrangements: `krea_action_positions.py`.
- Non-climax item/detail cleanup: `krea_action_details.py`.
- Climax role/detail cleanup: `krea_action_climax.py`.
- Non-POV action-family routing: `krea_action_dispatch.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`.
@@ -756,7 +760,8 @@ Use these traces to narrow a problem in one pass.
`krea_action_context.py` family predicates first, then
`krea_action_positions.py` pose anchors/arrangements,
`krea_action_details.py` item/detail cleanup, `krea_action_climax.py`
climax cleanup, and `krea_actions.py` action sentence dispatch.
climax cleanup, `krea_action_dispatch.py` family routing, and
`krea_actions.py` action sentence assembly.
### POV position is spatially wrong