Files
ComfyUI-Ethanfel-Prompt-Bui…/docs/superpowers/specs/2026-07-01-clothing-seed-axis-design.md
T

137 lines
5.0 KiB
Markdown

# 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.