5.0 KiB
Clothing Seed Axis Design
Goal
Allow a workflow to keep the same category, content item, pose, role, person, scene, expression, composition, and branch structure while rerolling only the clothing/outfit choices.
Current Problem
Clothing currently shares the content seed axis in several places. That means a
user cannot change clothes without also risking changes to content-driven prompt
selection. In scene pairs, this is especially confusing because a softcore branch
content seed can pick the outfit that the hardcore branch later inherits through
clothing continuity.
The previous layer-seed fix made the visible seed authoritative, but it did not
separate clothing from content. A visible content seed is still doing two jobs:
content selection and clothing selection.
Design
Add a new first-class clothing seed axis.
The clothing axis controls:
- prompt clothing mode selection, such as full, minimal, or random;
- clothing/outfit item selection for normal prompt rows;
- softcore branch outfit selection;
- pair partner outfit selection;
- scene wardrobe outfit selection where the wardrobe layer needs a seed;
- hard branch clothing continuity when it derives from the soft branch outfit.
The content axis continues to control:
- category item selection;
- content templates and item text;
- content-derived item axis values;
- pose-category content when an existing category treats the content item as pose-driven metadata.
Changing only clothing_seed should not change non-clothing prompt content.
Seed Vocabulary
Update the shared seed policy:
- Add
clothingtoSEED_LOCK_AXES. - Add a deterministic salt for
clothing. - Add aliases for
clothing_seed,outfit_seed, andwardrobe_seed. - Keep
item_seedas acontentalias because it describes content item selection, not clothing. - Add
clothingto reroll-axis choices. - Add
content_clothingfor workflows that intentionally reroll both content and clothes together. - Add
clothing_posefor workflows that keep content stable but reroll clothes, pose, and role together.
content_pose should remain content + pose + role. It should not include
clothing after this split.
Scene Layer Behavior
Update scene layer seed mappings:
wardrobedefaults to theclothingaxis.softcore_branchdefaults toclothing,pose, androleonly when no explicit reroll axis is selected.hardcore_branchremainsposeandroleby default.- Explicit reroll axes use the shared vocabulary, including
clothing,content_clothing, andclothing_pose.
This keeps the branch seed UI useful while making clothes-only rerolls obvious.
Prompt Flow
Normal prompt rows should use separate RNGs:
content_rngfor category/subcategory item and content-template choices.clothing_rngfor clothing mode and outfit choices.- Existing pose, role, person, scene, expression, and composition RNGs remain unchanged.
Scene pair rows should use separate RNGs:
- soft branch clothing/outfit selection uses the soft branch
clothingaxis; - soft branch pose uses the soft branch
poseaxis; - hard branch content behavior remains independent from soft branch clothing;
- hard branch clothing continuity reads the selected soft branch outfit, so a clothing-only reroll changes inherited clothing but leaves the hard branch pose and content seeds alone.
Compatibility
Existing workflows should continue to load.
Compatibility rules:
- Existing configs without
clothing_seedfall back to the same effective base seed behavior as before. outfit_seedshould map toclothinggoing forward.content_seedshould not control clothing onceclothing_seedoroutfit_seedis present.- The visible scene layer seed remains authoritative for all seed modes.
seed_traceshould includeclothingwhen the clothing axis is configured or emitted by row generation.
This is a behavior improvement, not a schema break.
Testing
Add smoke coverage proving:
seed_reroll_axis_choices()includesclothing,content_clothing, andclothing_pose.build_seed_lock_config_json(..., reroll_axis="clothing")changes onlyclothing_seed.build_seed_lock_config_json(..., reroll_axis="content_clothing")changes bothcontent_seedandclothing_seed.content_posedoes not changeclothing_seed.- In a scene pair, changing only the soft branch clothing seed changes the softcore outfit and inherited hard clothing state.
- The same scene pair keeps non-clothing content, pose, role, person, scene, and composition seeds stable under a clothes-only reroll.
- Legacy
outfit_seedis honored as a clothing seed.
Out Of Scope
This design does not add a second visible seed widget to the existing scene layer seed node. The node still has one visible seed field; the selected reroll axis decides what that seed controls.
This design does not rewrite all prompt category data to distinguish fashion categories from non-fashion content categories. It only separates RNG control for clothing choices that the code already treats as clothing or outfit selection.