From cddc5d0a4da74d870803fe52565969cc521621f3 Mon Sep 17 00:00:00 2001 From: Ethanfel Date: Wed, 1 Jul 2026 15:59:24 +0200 Subject: [PATCH] Document clothing seed axis split --- .../2026-07-01-clothing-seed-axis-design.md | 136 ++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 docs/superpowers/specs/2026-07-01-clothing-seed-axis-design.md diff --git a/docs/superpowers/specs/2026-07-01-clothing-seed-axis-design.md b/docs/superpowers/specs/2026-07-01-clothing-seed-axis-design.md new file mode 100644 index 0000000..9c08fb6 --- /dev/null +++ b/docs/superpowers/specs/2026-07-01-clothing-seed-axis-design.md @@ -0,0 +1,136 @@ +# 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.