# 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 `clothing` to `SEED_LOCK_AXES`. - Add a deterministic salt for `clothing`. - Add aliases for `clothing_seed`, `outfit_seed`, and `wardrobe_seed`. - Keep `item_seed` as a `content` alias because it describes content item selection, not clothing. - Add `clothing` to reroll-axis choices. - Add `content_clothing` for workflows that intentionally reroll both content and clothes together. - Add `clothing_pose` for 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: - `wardrobe` defaults to the `clothing` axis. - `softcore_branch` defaults to `clothing`, `pose`, and `role` only when no explicit reroll axis is selected. - `hardcore_branch` remains `pose` and `role` by default. - Explicit reroll axes use the shared vocabulary, including `clothing`, `content_clothing`, and `clothing_pose`. This keeps the branch seed UI useful while making clothes-only rerolls obvious. ## Prompt Flow Normal prompt rows should use separate RNGs: - `content_rng` for category/subcategory item and content-template choices. - `clothing_rng` for 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 `clothing` axis; - soft branch pose uses the soft branch `pose` axis; - 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_seed` fall back to the same effective base seed behavior as before. - `outfit_seed` should map to `clothing` going forward. - `content_seed` should not control clothing once `clothing_seed` or `outfit_seed` is present. - The visible scene layer seed remains authoritative for all seed modes. - `seed_trace` should include `clothing` when 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()` includes `clothing`, `content_clothing`, and `clothing_pose`. - `build_seed_lock_config_json(..., reroll_axis="clothing")` changes only `clothing_seed`. - `build_seed_lock_config_json(..., reroll_axis="content_clothing")` changes both `content_seed` and `clothing_seed`. - `content_pose` does not change `clothing_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_seed` is 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.