Files
ComfyUI-Ethanfel-Prompt-Bui…/docs/krea2-ab-methodology.md

1478 lines
91 KiB
Markdown

# Krea2 A/B Methodology Memory
This file is the persistent memory for SxCP Krea2 prompt A/B methodology.
Update it whenever the testing method improves.
## Current Method
Version: `2026-07-01-top-view-shaft-anchor-calibration`
1. Pull or construct the baseline from an actual SxCP/CodexMCPTest source case.
2. Keep the sampler seed fixed across the baseline and candidate.
3. Keep subject, location family, camera family, and target pose fixed unless
the experiment explicitly tests one of those axes.
4. Change one prompt variable at a time when possible, usually the visual
hierarchy for the target contact or pose.
5. Keep `sxcp_eval_out` positive-only. Do not place negative-conditioning
phrases in the visible prompt.
6. Use location-compatible anchors only. For coworking/office scenes, use chair
edge, desk edge, laptop table, glass partitions, repeated desk rows, plants,
and window depth instead of bedroom or bedding anchors.
7. Treat a manual prompt win as proof that Krea2 responds to the wording, not
proof that the SxCP generator already emits it.
8. Mirror a prompt win into the generator as a provisional improvement when
leaving a category if same-seed evidence shows it improves over baseline and
the wording is generator-safe. Keep the route `candidate` until the broader
generator-patch evidence matrix proves it.
9. When a subject-first batch preserves appearance but repeatedly misses the
atlas body plane, record it as weak-case evidence and consider stronger
control before adding more generator text.
10. Score spatial orientation against the atlas before accepting evidence,
and treat a contradictory room/background read as a rejection even when
contact or limb placement is clear. Use background cues to decide whether
the viewer or partner is high, low, standing, seated, supine, or on a
support before grading pose/contact quality.
11. For hard text-only pose families, set an exploration budget before calling
the route weak or deciding it needs stronger control. Eight prompt probes
are only an early signal. Use batched wording-axis probes and aim for about
fifty positive-only tries across meaningful axes before concluding that
prompt text cannot reliably express the pose.
12. Do not require a perfect atlas hit before carrying progress forward. After
the exploration budget, a repeatable partial that beats the baseline failure
mode can become an accepted provisional generator improvement while the
remaining miss stays documented for later seed/source expansion.
13. After patching generator wording, render one prompt produced by the actual
code path before closing the category. Manual prompt-axis wins are not
enough; the generated route can still drop the key contact hierarchy or add
limiting positive-channel wording.
14. Manual prompt-axis exploration can stay hand-written while testing a wide
range of new wording. Once a manual atlas prompt shows a promising axis,
run a generator-reproduction checkpoint before treating it as route
evidence: make the actual SxCP generator emit the closest equivalent final
Krea prompt, compare that generated prompt against the manual winner, and
record any missing hierarchy, wording order, restored detail, or
scene/camera constraint. This avoids building a strong atlas prompt that the
generator cannot reproduce.
15. Treat the final prompt that Krea receives and the rendered generator images
as the source of truth. Tests are guardrails for known failures, not proof
that the prompt will render the intended pose. If a test passes while the
rendered image or prompt audit shows drift, update the test and the method
rather than trusting the test.
16. Atlas/catalog prompt wording must use direct visual prompt sentences. Do
not send option-list wording such as `or`, `may`, `optionally`, or `either`
in pose cues, and do not append meta instructions such as `keep the visible
partner...` or generic camera-layout prose to atlas routes. Krea2 is not an
instruction-following LLM in this loop; prompt text should describe the
image, not explain a policy.
17. Do not promote generator edits from a few isolated renders unless the final
generated prompt is structurally wrong before rendering. For pose wording
changes, collect prompt/image evidence across multiple women, source cases,
and seeds when feasible, then patch only the repeated generator-safe
hierarchy. Keep early wins as prompt-guide or provisional evidence.
18. Treat atlas prompt restore as a constrained final-prompt operation, not a
free re-add of removed generator axes. Restored detail must support the
atlas hierarchy without adding a second body/camera cue, hidden garment, or
ambiguous subject. For clothing restore, keep softcore-continuity ownership
explicit: use woman-owned wording such as `the woman wears ...` for visible
clothes, keep partial-removal state when useful, and describe hidden lower
garments as out of frame instead of naming visible shorts/pants that the
atlas pose should not show. Strip raw `POV foreground clothing cue` or
`POV foreground body cue` text from strict atlas prompts because it can make
Krea2 assign clothing or body ownership to the viewer/man.
19. Use same-subject atlas refine decks before broad generator edits whenever
possible. A deck such as
`/media/unraid/comfyui/output/CodexMCP-Atlas-Refine` keeps the visible woman
constant across atlas variants, so prompt/cue changes can be scored against
pose ownership, workspace continuity, clothing visibility, and anatomy
behavior without confusing subject drift for prompt behavior.
20. After the hard-pose exploration budget is met, separate repeatable partials
from exact atlas hits. For `pov_blowjob_top_down_vertical_shaft`, 51
text-only prompt/seed outcomes preserved contact and coworking continuity
but repeatedly collapsed toward a forward/downward kneeling oral frame
instead of the flatter atlas top view. Keep `mouth directly below the
viewer's torso` plus `floor-plane-priority` as a provisional partial, and
mark the exact flatter atlas family as needing stronger control/image
guidance before more synonym-only prompt probes.
21. Before adding more target-pose words, do conflict analysis on clauses that
fight the pose. A working prompt can still be dragged away by scene,
clothing, foreground-body, camera-layout, or background-depth clauses that
imply the wrong geometry. For overhead/top-view oral in a coworking lounge,
the generic lounge tail with windows, repeated desk rows, and soft depth
fights the atlas angle; rewrite the scene as sparse floor-plan evidence
such as carpet texture and carpet tile seams before adding more `vertical`
synonyms. The refinement loop is: keep the winning action/pose hierarchy
fixed, remove or compress conflicting clauses, render, then only add back
the smallest visible scene detail that still supports the target camera.
22. Do not generalize conflict analysis into a blanket “remove details” rule.
Compare the atlas frame first and ask what it does better. If the atlas
shows a room, support surface, furniture interaction, wall, or body-contact
prop, add or rewrite those details. If the atlas shows a flat floor/ground
plane, translate the scene into floor-plane evidence. For top-view oral, the
working coworking translation is a minimal floor-plan tail such as
`carpet texture, carpet tile seams`; adding desk rows and window depth
fights the camera axis, while one cropped caster or desk foot should be
tested only after the sparse floor-plane read is stable.
23. For `pov_blowjob_top_down_vertical_shaft`, floor-plane evidence alone is
not the final rule. The atlas-22-style calibration needs the shaft/contact
line as the first visual anchor: the centered shaft runs from the lower
foreground to mouth contact, and the woman's face, eyelids, hair crown,
shoulders, upper chest, neckline or bare upper torso, and one hand stack
around that same axis. Viewer abdomen, thighs, and feet are lower-edge
frame evidence after the shaft axis is established; they should not be the
prompt's primary anchor. Translate body-proportion control into positive
visibility hierarchy, for example `the centered shaft and mouth contact
form the main vertical axis from the lower foreground to the woman's face`
plus `the woman's face, hair crown, shoulders, upper chest, and one hand
stack around the shaft-contact axis`. Avoid final-prompt phrasing such as
`hips and ass stay visually secondary` or `mostly hidden`; that is useful
as a human scoring note, but it is negative-style hierarchy inside positive
conditioning.
24. Use large image-only atlas folders as cue-expansion pools, not as automatic
generator truth. For top-view oral, the canonical curated atlas references
live under
`/media/unraid/davinci/Qwen_edit_lora/POV/dataset_v2/blowjob_top_view`,
while
`/media/unraid/davinci/Qwen_edit_lora/POV/dataset_v2/1.original/blowjob_top_view_1024`
is a supplemental raw pool with the same family and more images. The larger
pool is useful for defining repeated micro-axes: camera pitch, support-plane
type, viewer foreground amount, partner upper-body stack, hand placement,
eye direction, clothing/neckline anchors, and floor/furniture evidence. Keep
the live catalog `reference_images` curated to a small stable set, and when a
curated reference exists, prefer that canonical path in sidecar
`reference_images`. Use the supplemental raw pool before authoring sidecar
`append_cues`, especially for extra axes not present in the curated set. A
cue should either repeat across several atlas images or be tied to a specific
nearest reference image. Do not invent cue wording from a single mental model
when the atlas folders can show the allowed variation directly.
25. When a manual calibration render succeeds after several failed top-view
oral probes, compare the exact sidecar text before writing generator or
sidecar memory. The 2026-07-01 manual renders
`/media/unraid/comfyui/output/sxcp_accumulator/bwave_2/img_00135_.png`
through
`/media/unraid/comfyui/output/sxcp_accumulator/bwave_2/img_00139_.png`
improved verticality by ordering the prompt as straight-down POV, shaft
visibility, partner stack directly below the shaft, mouth contact, sparse
floor plane. This is a word-order and anchor finding, not just a background
removal finding. Future top-view oral variants should test shaft-first
cue order against any abdomen-first or room-depth wording before patching
the generator.
26. Choose sidecar prompt source by what the experiment is testing. Use
`append_cues` for small micro-position alternates that can safely sit after
the baseline prompt. Use exact `text` replacement when the winning evidence
depends on word order, removes a conflicting baseline clause, or translates
the scene tail into a different camera-compatible surface. For
`pov_blowjob_top_down_vertical_shaft`, shaft-first calibration must be an
exact-text candidate because appending shaft-axis cues after abdomen-first
and deep coworking-room wording does not faithfully simulate the manual
prompt win.
## Promotion Gates
- One clean fixed-seed A/B can be recorded as evidence for that source case.
- A prompt-guide rule needs repeated evidence across distinct subjects,
locations, or seeds, unless the generated prompt is structurally wrong before
rendering.
- A catalog variant remains candidate until the rule repeats under controlled
conditions.
- A provisional generator patch is allowed when leaving a category if the best
tested wording improves over baseline on a fixed seed. It should preserve the
selected subject, outfit, location, and camera semantics, and it must not patch
in a scene workaround that only solved one render.
- A proven/default generator patch still needs the broader evidence matrix below,
unless the generated prompt is structurally wrong before rendering.
## Generator Mirroring
After a manual A/B prompt win, do not assume the SxCP generator mirrors the
wording. Add a failing regression against the final formatter output first, then
patch the narrow route boundary that owns the wording. The regression should
assert the accepted hierarchy terms and reject the failure mode that caused the
bad render, such as scene-incompatible anchors or negative-conditioning text in
the positive prompt.
After the route patch, run a generated-route probe through `sxcp_eval_out` with
the same sampler seed when feasible. Use the actual formatter output, not a
hand-normalized prompt. If the generated route regresses compared with the
manual prompt-axis winner, record the failed generated-route image as the
baseline, tighten the route wording, and validate again before logging the
candidate as generated-route evidence.
Generator-reproduction checkpoint:
1. Keep the manual winner as the reference prompt and summarize its required
visual hierarchy.
2. Build the closest equivalent prompt through the normal SxCP nodes and Krea2
formatter.
3. Diff the final generated prompt against the manual reference for missing
pose hierarchy, changed ordering, restored details, scene anchors, camera
framing, and option/meta wording.
4. If the generated prompt cannot reproduce the manual hierarchy, fix the
generator path or record the gap before adding more image evidence.
5. Only count generated-route evidence after the final generated prompt
preserves the manual winner's essential atlas hierarchy.
For location-specific wins, split the implementation:
- the action or role graph owns the pose/contact hierarchy;
- the final Krea formatter owns scene-compatible anchor expansion because it can
see the selected scene, camera, and composition;
- existing route phrases that downstream tests rely on should be preserved
inside the stronger wording when they do not conflict with the A/B evidence.
## Atlas Detail Restore Hygiene
When re-enabling removed atlas prompt details such as clothing, face expression,
body touch, or camera-presentation text, audit the final Krea prompt before
judging the rendered image. The restore node should not undo the reason the
atlas route was strict in the first place.
- Restore details must be subordinate to the pose sentence. If a restored clause
adds another POV foreground, body-owner, camera-layout, or optional/policy
instruction, remove or rewrite it before rendering.
- Do not append raw category-axis detail into positive conditioning when a
structured route already has a safer representation. Clothing restore should
flow through the pair clothing continuity path, then through Krea cleanup, not
through raw `clothing_detail`.
- For POV clothing, separate viewer body cues from partner clothing. The normal
non-atlas foreground-clothing cue can help generic POV prompts, but strict
atlas prompts already own the foreground through the atlas pose. Strip
`POV foreground clothing cue` and `POV foreground body cue` from strict atlas
final prompts.
- Visible partner clothing needs explicit subject ownership. Prefer
`the woman wears ...` over bare fragments such as `button-down shirt ...`,
because bare clothing fragments can be assigned to the viewer/man.
- If the atlas crop hides a lower garment, keep the partial-removal semantics
without making the garment visible. For side-profile oral body-line, the useful
wording is `The woman's lower garments are pulled aside out of frame; the
woman wears the button-down shirt tied at the waist and a fitted bralette from
the same outfit`.
- For side-profile oral body-line specifically, restored clothing must not steal
the camera-owner body plane. The adult male viewer's abdomen/navel/pelvis/near
thigh remain the foreground ownership cues; clothing is a partner detail only.
## Same-Subject Atlas Refine Decks
Use same-subject generated reference folders as controlled prompt decks before
building seedable atlas cue variants. The current first deck is:
```text
/media/unraid/comfyui/output/CodexMCP-Atlas-Refine
```
Build a manifest before analysis:
```bash
python tools/krea2_atlas_refine_manifest.py --folder /media/unraid/comfyui/output/CodexMCP-Atlas-Refine --subject-id atlas_refine_same_woman_001 --print-manifest
```
Print coverage before choosing the next pose to test:
```bash
python tools/krea2_atlas_refine_manifest.py --folder /media/unraid/comfyui/output/CodexMCP-Atlas-Refine --subject-id atlas_refine_same_woman_001 --print-coverage-report
```
The coverage report classifies each atlas entry as `needs_prompt_cleanup`,
`baseline_only`, `needs_visual_score`, `ready_for_seed_selection`,
`ready_for_catalog_review`, `rejected_only`, or `unknown_variant`.
`needs_prompt_cleanup` means the prompt-noise audit found option/meta/negative
wording in the baseline prompt or sidecar variants; clean that text before
scoring, authoring more alternates, or selecting cue seeds. `baseline_only`
means the prompt/image pair is clean but has no sidecar prompt variants yet; run
MCP probes or add reviewed sidecar candidates before seed selection.
`ready_for_catalog_review` means at least one seedable append-cue variant exists
and can be exported with `--print-catalog-cue-draft`.
Print prompt-noise findings before scoring or promoting a deck:
```bash
python tools/krea2_atlas_refine_manifest.py --folder /media/unraid/comfyui/output/CodexMCP-Atlas-Refine --subject-id atlas_refine_same_woman_001 --print-prompt-noise-report
```
The prompt-noise report is read-only. It flags option-list words such as `or`,
`may`, `optionally`, and `either`, meta/policy fragments such as
`keep the visible partner`, `context stays`, `camera layout`, and leaked
`POV foreground ... cue` text, plus positive-channel negative-conditioning
phrases such as `no`, `without`, or `do not`. It also flags exact repeated
direct phrases because duplicated pose clauses often make Krea2 weight the wrong
axis. Treat findings as prompt cleanup tasks before fixed-seed evidence is
promoted. Do not auto-rewrite them into new cues; rewrite the source prompt or
sidecar text manually, then rebuild the manifest and rerun the audit. Coverage
carries the same issue counts, so a noisy entry stays `needs_prompt_cleanup`
even if it also has unscored or seedable sidecar variants.
For a file-oriented cleanup queue, print a prompt-cleanup sheet:
```bash
python tools/krea2_atlas_refine_manifest.py --folder /media/unraid/comfyui/output/CodexMCP-Atlas-Refine --subject-id atlas_refine_same_woman_001 --print-prompt-cleanup-sheet
```
The cleanup sheet groups prompt-noise issues by editable source text. Baseline
issues point at the `.txt` prompt file; sidecar variant issues point at the
same-stem `.json` sidecar, including the `prompt_variant_id` and append-cue
index when relevant. The sheet preserves `current_text`,
`current_text_sha256`, `source_prompt_sha256`, issue excerpts, and blank
`replacement_text` / `cleanup_notes` fields for manual review. Do not apply the
sheet mechanically; use it as a checklist, edit the prompt or sidecar source by
hand, rebuild the manifest, and confirm coverage no longer reports
`needs_prompt_cleanup`.
When using the sheet as an apply artifact, fill `replacement_text` manually and
validate it first:
```bash
python tools/krea2_atlas_refine_manifest.py --validate-prompt-cleanup-sheet --prompt-cleanup-sheet-json /tmp/sxcp-prompt-cleanup-sheet-filled.json
```
Validation rejects blank replacements, replacements that still contain
option/meta/negative prompt noise, unsupported contexts, missing target
metadata, stale `current_text_sha256`, stale baseline `source_prompt_sha256`,
and replacements identical to the original text. After validation, apply only
against the source folder that produced the sheet:
```bash
python tools/krea2_atlas_refine_manifest.py --apply-prompt-cleanup-sheet --prompt-cleanup-sheet-json /tmp/sxcp-prompt-cleanup-sheet-filled.json --folder /media/unraid/comfyui/output/CodexMCP-Atlas-Refine
```
Apply is validation-first and drift-aware. It updates prompt files or the
targeted sidecar prompt-variant field, preserves unrelated sidecar metadata,
and allows a repeated apply when the target already equals the reviewed
replacement. Rebuild the manifest and rerun coverage after applying.
For baseline-only entries, print sidecar scaffolds before hand-authoring cue
variants:
```bash
python tools/krea2_atlas_refine_manifest.py --folder /media/unraid/comfyui/output/CodexMCP-Atlas-Refine --subject-id atlas_refine_same_woman_001 --print-sidecar-scaffold
```
The scaffold is read-only and does not write sidecar files. It only includes
known catalog entries with no existing prompt variants, preserves the same-stem
sidecar filename, baseline seed/cue/score slots, source prompt hash, and a blank
`prompt_variant_template`. Fill the template with user-authored `append_cues` or
exact `text`; do not let the scaffold invent cue wording.
Before authoring alternates for a baseline-only pose, print a baseline score
sheet and grade the existing image/prompt pair:
```bash
python tools/krea2_atlas_refine_manifest.py --folder /media/unraid/comfyui/output/CodexMCP-Atlas-Refine --subject-id atlas_refine_same_woman_001 --print-baseline-score-sheet
```
The baseline score sheet is also read-only. It preserves prompt/image paths,
prompt hashes, seed metadata, cue axes, and score slots for each baseline entry.
`needs_visual_score` means no score fields are filled yet; `partially_scored`
means some baseline gates are filled but the preservation assessment is not
complete. Use the sheet to decide whether a baseline is already valid, whether
the first sidecar variants should be small same-scene frame changes, or whether
the pose needs stronger structural prompt/control work before seed alternates.
After manually filling baseline scores, convert the scored sheet into a
baseline score update draft:
```bash
python tools/krea2_atlas_refine_manifest.py --print-baseline-score-update-draft --baseline-score-sheet-json /tmp/sxcp-baseline-score-sheet-scored.json
```
The draft records only top-level baseline metadata: `seed_metadata`,
`cue_axes`, `score`, `score_state`, source prompt hash, and manual analysis
notes. It skips unknown or fully unscored entries and deliberately does not
carry `prompt_variants`; prompt alternates stay owned by the sidecar
promotion/seed-selection path.
Validate the baseline score draft before writing sidecars:
```bash
python tools/krea2_atlas_refine_manifest.py --validate-baseline-score-update-draft --baseline-score-update-draft-json /tmp/sxcp-baseline-score-update-draft.json
```
Validation rejects sidecar filename drift, missing prompt hashes, empty score
updates, forbidden negative-conditioning fields, and any accidental
`prompt_variants` contamination. Partial or rejected baseline scores are allowed
as evidence but reported as warnings, so partial progress can be preserved
without pretending it is seedable.
Only after validation, apply the baseline score draft:
```bash
python tools/krea2_atlas_refine_manifest.py --apply-baseline-score-update-draft --baseline-score-update-draft-json /tmp/sxcp-baseline-score-update-draft.json --folder /media/unraid/comfyui/output/CodexMCP-Atlas-Refine
```
Baseline score apply is validation-first. It writes top-level sidecar
`seed_metadata`, `cue_axes`, `score`, `baseline_score_state`,
`baseline_source_prompt_sha256`, and `baseline_analysis_notes`, while preserving
any existing `prompt_variants` exactly. Rebuild the manifest after applying;
the baseline score sheet should then rescan the same entries as
`scored_pass`, `partially_scored`, or `scored_rejected` according to the saved
baseline evidence.
The manifest is the bridge between generated artifacts and the seed/cue system.
It records each prompt/image pair, validates the inferred `variant_key` against
the catalog, preserves prompt text and a prompt hash, records missing pairs, and
reserves seed slots for `sampler_seed`, `generator_seed`, `atlas_cue_seed`,
`micro_position_seed`, and `workspace_seed`. Fill those seed slots when the
source workflow exposes them; leave them null only when the historical artifact
does not contain that metadata. Cue-selection commands may target
`generator_seed`, `atlas_cue_seed`, `micro_position_seed`, or `workspace_seed`,
but never `sampler_seed`; that slot is reserved for the actual render sampler
seed returned by the job.
Optional same-stem JSON sidecars can enrich scanned entries without changing the
prompt/image filenames. For `pov_example_00001_.txt` and
`pov_example_00001_.png`, add `pov_example_00001_.json` with `seed_metadata`,
`cue_axes`, `score`, and `notes`. The manifest keeps explicit null slots for
missing fields so unfilled seed or score data is visible instead of silently
absent.
Image-only atlas reference pools sit upstream from sidecars. First make a
labeled contact sheet, cluster the references by visible micro-axis, then choose
the nearest atlas target for each proposed cue. Store those nearest targets in a
sidecar prompt variant's `reference_images` list so the reference provenance
travels through prompt batches, result sheets, promotion reports, sidecar
updates, catalog cue drafts, and later rescans. Prefer canonical curated
references such as `blowjob_top_view/22_blowjob_top_view.png` when a matching
curated frame exists; use `1.original/...` paths for supplemental raw-pool frames
that do not have a curated counterpart. This field is still provenance, not
proof: a generated prompt/image pair must show that the same cue preserves the
current subject, workspace, clothing ownership, and prompt-noise gates before the
cue is eligible for seed selection or catalog promotion. Do not promote an
image-only reference cue directly into the generator.
Before authoring top-view oral cue variants, print a read-only reference-pool
report:
```bash
python tools/krea2_atlas_refine_manifest.py --print-reference-pool-report --variant-key pov_blowjob_top_down_vertical_shaft --reference-pool-folder 1.original/blowjob_top_view_1024
```
The report compares the canonical catalog `atlas_folders` against supplemental
raw folders by image id. Use `catalog_reference_images` and matched canonical
paths as preferred `reference_images`; use `supplemental_extra_images` to mine
extra cue axes when a raw frame has no curated counterpart.
Then print a blank cue-review sheet from the same pool:
```bash
python tools/krea2_atlas_refine_manifest.py --print-reference-cue-review-sheet --variant-key pov_blowjob_top_down_vertical_shaft --reference-pool-folder 1.original/blowjob_top_view_1024
```
Fill `observed_positive_cues`, `cue_axes`, and `review_notes` only from visual
inspection. The sheet provides `reference_images_template` for canonical
catalog refs, but leaves it blank for raw-only supplemental extras so those
images start as cue-mining evidence rather than automatic sidecar references.
After filling the review sheet, print a candidate draft:
```bash
python tools/krea2_atlas_refine_manifest.py --print-reference-cue-candidate-draft --reference-cue-review-sheet-json /tmp/sxcp-reference-cue-review-filled.json
```
The candidate draft converts reviewed canonical rows into sidecar-ready
`prompt_variant` objects with `append_cues`, `reference_images`, `cue_axes`, and
seed slots. It skips blank rows, option/meta/negative prompt-noise cues, missing
variant ids, duplicate variant ids, and raw-only supplemental rows without a
canonical reference. Copy a candidate into a same-stem sidecar only after
choosing the baseline deck it should modify, then test it through the normal MCP
batch/result-sheet/promotion path.
To attach reviewed candidates to a same-subject baseline deck for testing,
print a sidecar authoring draft:
```bash
python tools/krea2_atlas_refine_manifest.py --folder /media/unraid/comfyui/output/CodexMCP-Atlas-Refine --subject-id atlas_refine_same_woman_001 --print-reference-cue-sidecar-author-draft --reference-cue-candidate-draft-json /tmp/sxcp-reference-cue-candidate-draft.json --variant-key pov_blowjob_top_down_vertical_shaft
```
Validate and apply that draft only against the same folder:
```bash
python tools/krea2_atlas_refine_manifest.py --validate-reference-cue-sidecar-author-draft --reference-cue-sidecar-author-draft-json /tmp/sxcp-reference-cue-sidecar-author-draft.json
python tools/krea2_atlas_refine_manifest.py --apply-reference-cue-sidecar-author-draft --reference-cue-sidecar-author-draft-json /tmp/sxcp-reference-cue-sidecar-author-draft.json --folder /media/unraid/comfyui/output/CodexMCP-Atlas-Refine
```
The author draft is pre-test only. It writes unscored prompt variants into the
same-stem sidecar after checking the baseline prompt hash for drift. Rebuild the
manifest after applying; coverage should move from `baseline_only` to
`needs_visual_score`, and the next step is a fixed-seed MCP batch, not catalog
promotion.
Sidecars can also define explicit `prompt_variants` for seedable cue probes.
Each variant must provide an `id` and exactly one of `text` or `append_cues`;
the batch builder does not invent cue wording. Variant ids must be unique within
the sidecar because they are the stable identity for cue-seed selection, upsert
apply, and evidence roundtrips. If an explicit `prompt_source.prompt_variant_id`
is present, it must match the enclosing variant `id`. Use `append_cues` for small
micro-position changes that should read like another frame from the same scene,
such as a hand moving higher, feet moving farther forward, a body angle tilting,
or a workspace surface becoming more prominent. Keep every cue positive-only and
send batches through the normal `sxcp_eval_out` path:
```bash
python tools/krea2_atlas_refine_manifest.py --folder /media/unraid/comfyui/output/CodexMCP-Atlas-Refine --subject-id atlas_refine_same_woman_001 --print-batch --variant-key pov_footjob_frontal_sole_stroke --sampler-seed 123
```
Validate the printed batch with `tools/sxcp_prompt_batch.py` before using
`run-batch --run`. A sidecar prompt variant is candidate evidence only until
its returned image is scored against the atlas reference and the same-subject
baseline.
After `run-batch --run` writes a result JSON, convert the exact batch/results
pair into a visual scoring sheet before editing sidecars or generator wording:
```bash
python tools/krea2_atlas_refine_manifest.py --print-result-sheet --batch-json /tmp/sxcp-batch.json --result-json /tmp/sxcp-results.json --notes "visual scoring pending"
```
The result sheet is not an automatic judge. It preserves the fixed sampler
seed, probe order, returned image paths, exact prompt text, cue-axis metadata,
and empty score slots for manual atlas comparison. Fill those slots only after
checking the generated images against the atlas reference for pose ownership,
workspace continuity, clothing visibility, subject identity, expression/eye
control, anatomy, and prompt noise.
After the result sheet is manually scored, print a promotion report before
editing a sidecar or generator route:
```bash
python tools/krea2_atlas_refine_manifest.py --print-promotion-report --result-sheet-json /tmp/sxcp-result-sheet-scored.json
```
The promotion report is intentionally conservative. A probe is only a
`seedable_candidate` when pose ownership, workspace continuity, clothing
visibility, subject identity, and prompt noise are all scored `pass`, and the
remaining visual axes at least show progress rather than failure. Missing scores
stay `needs_visual_score`; failed preservation gates stay `rejected`. The report
also scans candidate text with the prompt-noise audit and rejects noisy text even
if the manual `prompt_noise` score was filled as `pass`.
For ready candidates, print a sidecar update draft instead of editing the
sidecar directly:
```bash
python tools/krea2_atlas_refine_manifest.py --print-sidecar-update-draft --promotion-report-json /tmp/sxcp-promotion-report.json
```
The draft uses only exact tested prompt text from `seedable_candidate` probes.
It preserves the original same-stem sidecar filename, cue axes, seed metadata,
visual score evidence, and returned image path. Stable `matrix_evidence` carried
by a result-sheet probe is preserved through the promotion report and sidecar
draft. Explicit unstable `matrix_evidence` rejects the probe before promotion,
so the sidecar draft cannot replace a matrix-proven variant with weaker
single-batch evidence. Review the draft before copying anything into a sidecar;
rejected or unscored candidates are skipped.
Validate the draft before applying any sidecar edit:
```bash
python tools/krea2_atlas_refine_manifest.py --validate-sidecar-update-draft --sidecar-update-draft-json /tmp/sxcp-sidecar-update-draft.json
```
The validation gate rejects drafts with missing image evidence, failed
preservation scores, missing cue-axis movement, duplicate prompt-variant ids,
or forbidden negative-conditioning fields. Treat a failing validation report as
a prompt/evidence issue to resolve before editing sidecars.
Only after validation passes, apply the draft to the atlas-refine folder:
```bash
python tools/krea2_atlas_refine_manifest.py --apply-sidecar-update-draft --sidecar-update-draft-json /tmp/sxcp-sidecar-update-draft.json --folder /media/unraid/comfyui/output/CodexMCP-Atlas-Refine
```
Apply is validation-first and idempotent. It upserts `prompt_variants` by id
inside the target same-stem sidecar, preserves unrelated sidecar fields, rejects
ambiguous existing `prompt_variants` lists with missing or duplicate ids, and
does not touch rejected or unscored candidates.
After applying, rebuild the manifest and batch from the same folder as a
roundtrip check. The applied sidecar should rescan with the exact tested prompt
text, cue axes, seed metadata, visual evidence, and score evidence; the next
`--print-batch` output should regenerate the same tested prompt variant by id.
For matrix-proven sidecar variants, stable `matrix_evidence` stays attached to
the normal batch probe and the result sheet built from that batch.
For generator-style single-variant selection, use the cue seed selector rather
than relying on sidecar order:
```bash
python tools/krea2_atlas_refine_manifest.py --folder /media/unraid/comfyui/output/CodexMCP-Atlas-Refine --subject-id atlas_refine_same_woman_001 --print-seed-selection --variant-key pov_footjob_frontal_sole_stroke --selection-seed 202 --seed-slot atlas_cue_seed
```
The selector is deterministic for the same seed and only chooses sidecar
variants with seedable visual evidence. Eligible variants are sorted by
`prompt_variant_id` before the seed is applied, so reordering a sidecar JSON file
does not change what a cue seed means. Unscored or rejected variants are listed
as ineligible instead of entering the seed pool. If a selected sidecar variant
has stable `matrix_evidence`, the selector keeps that matrix proof attached to
the selected candidate. Variants with no matrix evidence still use single-image
promotion evidence, but variants with explicit unstable matrix evidence are
ineligible until retested or corrected. Downstream reuse does not trust
`stable: true` by itself: malformed stable matrix evidence, such as duplicated
declared sampler seeds, non-matching matrix jobs, or cue-seed metadata that no
longer matches the matrix selection seed, is treated as unstable and kept out of
the seed pool.
To render the selected alternate frame through the normal MCP batch helper, use
the selected-batch exporter. It emits the baseline and selected candidate only:
```bash
python tools/krea2_atlas_refine_manifest.py --folder /media/unraid/comfyui/output/CodexMCP-Atlas-Refine --subject-id atlas_refine_same_woman_001 --print-seed-selected-batch --variant-key pov_footjob_frontal_sole_stroke --selection-seed 202 --sampler-seed 101 --seed-slot atlas_cue_seed
```
Then validate/run it with `tools/sxcp_prompt_batch.py` as usual. The candidate
probe carries the selected cue seed in the requested seed slot plus the sidecar
evidence that justified the variant. Probe `seed_metadata.sampler_seed` is the
actual sampler seed for that render job; cue, micro-position, generator, and
workspace seed slots remain prompt-variant provenance. Do not use
`sampler_seed` as `--seed-slot`; the tooling rejects it so the cue seed cannot
overwrite the render seed. Matrix-proven variants also keep their full stable
`matrix_evidence` on the selected probe.
For repeatability checks across several sampler seeds and cue seeds, print a
seed matrix:
```bash
python tools/krea2_atlas_refine_manifest.py --folder /media/unraid/comfyui/output/CodexMCP-Atlas-Refine --subject-id atlas_refine_same_woman_001 --print-seed-matrix --variant-key pov_footjob_frontal_sole_stroke --selection-seeds 202,203 --sampler-seeds 101,102 --seed-slot atlas_cue_seed
```
The matrix is read-only and sampler-major. Each job embeds a normal
seed-selected prompt batch with the baseline and selected candidate only, plus
the selected prompt variant id, exact candidate prompt text, cue seed, sampler
seed, cue axes, and evidence provenance. Use it to queue controlled repeats
where sampler seed changes image stochasticity and `atlas_cue_seed` changes the
selected alternate frame. Sampler seed lists and cue seed lists must contain
distinct values; duplicate seeds are rejected because they inflate apparent
repeatability without adding new evidence. A matrix with only one unique sampler
seed can still be inspected, but it cannot become stable sidecar evidence; stable
proof requires at least two unique sampler seeds before manual hard-pose
thresholds are considered.
After matrix jobs return images, create one matrix result sheet instead of
manually merging per-job notes:
```bash
python tools/krea2_atlas_refine_manifest.py --print-seed-matrix-result-sheet --seed-matrix-json /tmp/sxcp-seed-matrix.json --seed-matrix-results-json /tmp/sxcp-seed-matrix-results.json --notes "matrix scoring pending"
```
The matrix result sheet matches returned results by matrix job id, then reuses
the normal result-sheet format inside each job. It preserves sampler seed, cue
seed, selected prompt variant id, exact candidate prompt text, returned image
path, and empty score slots for manual atlas scoring. Missing or extra job ids
are errors because they break matrix comparability. Duplicate matrix job ids are
also rejected before result matching, since one returned image must not stand in
for two sampler/cue slots.
After manually scoring the matrix result sheet, print the matrix promotion
report:
```bash
python tools/krea2_atlas_refine_manifest.py --print-seed-matrix-promotion-report --seed-matrix-result-sheet-json /tmp/sxcp-seed-matrix-result-sheet-scored.json
```
The promotion report applies the same preservation gates as a single result
sheet, then groups jobs by selected prompt variant and cue seed. A group is
stable only when every declared sampler seed in that group is present, at least
two unique sampler seeds are covered, and every covered job is a
`seedable_candidate`; failed jobs keep their blockers, such as subject identity
or workspace continuity failures, attached to the group, omitted sampler seeds
add `missing_sampler_coverage`, and one-sampler groups add
`insufficient_sampler_coverage`. The declared `sampler_seeds` and
`selection_seeds` lists must not contain duplicates, because repeated
declarations can inflate apparent coverage without adding a new render or cue
seed. If `selection_seeds` is present, every job's `selection_seed` must be in
that declared cue-seed set. If `sampler_seeds` is present, every job's
`sampler_seed` must be in that declared render-seed set, and a selected-variant /
cue-seed group may contain each sampler seed only once. Promotion also rechecks
that each matrix result-sheet job has a unique id, so stale or hand-edited sheets
cannot inflate stable evidence by duplicating a job. The selected prompt variant
id recorded on the matrix job must also match the scored candidate prompt
variant id; a mismatch means the sheet no longer proves the selected alternate.
Every job's `seed_slot` must match the matrix result sheet's `seed_slot`, so
atlas-cue evidence cannot be mixed with workspace, generator, or micro-position
evidence in one stable group.
Jobs in the same selected-variant/cue-seed group must also keep the same
`variant_key`, `source_entry_id`, and `source_stem`, so evidence from another
pose family or atlas artifact cannot be folded into a stable sidecar candidate.
They must also keep the same exact candidate prompt text across sampler jobs;
the promotion report records a prompt-text hash for the group, and prompt-text
drift under the same variant id is rejected because it no longer proves one
repeatable wording.
Treat stable groups as repeatability evidence for a sidecar/catalog cue; treat
unstable groups as wording, coverage, or control work before promotion.
For stable groups, print a matrix sidecar update draft before editing sidecars:
```bash
python tools/krea2_atlas_refine_manifest.py --print-matrix-sidecar-update-draft --seed-matrix-promotion-report-json /tmp/sxcp-seed-matrix-promotion-report.json
```
The draft emits only stable groups. It preserves the same-stem sidecar filename,
the exact selected prompt variant text, prompt source provenance, representative
single-image evidence for compatibility, and `matrix_evidence` containing all
passing sampler seeds, returned image paths, visual scores, cue seed, and job
ids. Stable groups fail closed if any listed job id is missing from the promotion
report, so a hand-edited report cannot write sidecar evidence for jobs it does
not carry. A stable group may not repeat a `job_id`, because one returned image
must not count as multiple matrix samples. Each referenced job must still belong
to the stable group's identity: same selected prompt variant, cue seed, seed
slot, pose `variant_key`, `source_entry_id`, `source_stem`, and exact candidate
prompt text. Stable groups
also fail closed when their declared `sampler_seeds` do not match the sampler
seeds on their listed `job_ids`, so a draft cannot inflate repeatability
evidence by claiming an unreferenced render seed. Their `job_count`,
`promotion_ready_count`, and `blocked_count` must also match the referenced
jobs; emitted matrix evidence derives these counts from `job_ids` instead of
trusting editable group summaries. Unstable cue groups are listed as skipped
with their blockers and must not be copied into sidecars.
Even if a hand-edited promotion report marks a group stable, matrix sidecar draft
generation rejects groups whose referenced `job_ids` cover fewer than two unique
sampler seeds.
Validate a matrix draft with the matrix-specific gate before applying it:
```bash
python tools/krea2_atlas_refine_manifest.py --validate-matrix-sidecar-update-draft --matrix-sidecar-update-draft-json /tmp/sxcp-matrix-sidecar-update-draft.json
```
This gate rejects unstable matrix evidence, failed per-sampler visual scores,
missing or insufficient sampler coverage, forbidden negative-conditioning fields,
and mismatched cue seed metadata: the prompt variant's
`seed_metadata[matrix_evidence.seed_slot]` must match
`matrix_evidence.selection_seed`. It also rejects duplicated matrix evidence job
ids or sampler seeds, duplicated declared matrix sampler seeds, stable evidence
with fewer than two unique sampler seeds, and matrix evidence rows whose `turn`
is missing or not an integer. It also
checks the representative single-image evidence used for compatibility with the
normal seed selector, including requiring an integer `evidence.turn`. That
representative evidence must match the
`matrix_evidence.jobs` row for its `evidence.seed`, including image path, turn,
and visual score.
Only after validation passes, apply the matrix draft to the atlas-refine folder:
```bash
python tools/krea2_atlas_refine_manifest.py --apply-matrix-sidecar-update-draft --matrix-sidecar-update-draft-json /tmp/sxcp-matrix-sidecar-update-draft.json --folder /media/unraid/comfyui/output/CodexMCP-Atlas-Refine
```
Matrix apply is validation-first and idempotent. It upserts prompt variants by
id, preserves unrelated sidecar fields, and keeps the full `matrix_evidence` so
later rescans still know which cue seed and sampler seeds proved the alternate
frame repeatable.
When a selected batch returns images, convert it with `--print-result-sheet`
like any other batch. The result sheet preserves the seed-selection report at
the sheet level and the selected prompt variant id on the candidate probe, so
manual visual scoring remains tied to the exact cue seed and sidecar alternate.
If the selected probe carried stable `matrix_evidence`, the result sheet keeps
that matrix proof beside the new image path and empty score slots.
For the generator node path, `atlas_cue_seed` on `SxCP Krea2 Pose Variant` and
the family-specific `SxCP Krea2 POV ... Filter` nodes selects among explicit
catalog `prompt_variant_cues` for the selected atlas variant. This is not the
sampling seed and it does not invent prompt wording. Use `-1` when the broader
generator pose seed should continue choosing cue-set alternates. Use a fixed
`atlas_cue_seed` when testing the same catalog alternate across subjects,
locations, or sampler seeds. The selected index is stored in
`krea2_prompt_variant_indices`, preserved through row building, and shown in the
node summary as `cue_indices=variant:index`.
To bridge scored sidecar alternates back toward the generator catalog, preserve
`append_cues` provenance through the refine loop. A full prompt win can remain a
sidecar `text` candidate, but only an explicit append-cue delta should become a
reviewable catalog `prompt_variant_cues` candidate. Print that review draft with:
```bash
python tools/krea2_atlas_refine_manifest.py --folder /media/unraid/comfyui/output/CodexMCP-Atlas-Refine --subject-id atlas_refine_same_woman_001 --print-catalog-cue-draft --variant-key pov_footjob_frontal_sole_stroke
```
The catalog cue draft is read-only. It skips unscored, rejected, or exact-text
only sidecar variants and emits only seedable append-cue candidates with visual
evidence, cue axes, seed metadata, and the exact tested prompt hash. Stable
matrix evidence is preserved on catalog candidates; explicit unstable matrix
or malformed stable matrix evidence is skipped and listed with an
`unstable_matrix_evidence` blocker. Review the draft manually before editing
`categories/krea2_pov_pose_variants.json`; do not infer catalog cue wording from
a whole prompt diff.
Use the manifest entries as baseline frames, not as proven generator fixes. For
each variant, score the current image/prompt against:
- atlas pose and contact ownership;
- same-subject identity preservation;
- workspace lounge consistency and surface relationship;
- clothing visibility and subject ownership;
- face/eye/expression retention when the face is visible;
- anatomy/proportion sanity;
- prompt noise, duplicate cues, and ambiguous ownership.
Only add seedable cue alternates after the baseline frame is understood. Store
alternates by axis, such as contact depth, hand position, foot position, body
angle, camera height, workspace surface, clothing visibility, expression/eye
detail, and anatomy shape detail. A seed change should feel like selecting
another frame from the same scene rather than random prompt drift.
## MCP Command Memory
Use the checked helper instead of ad hoc Python snippets for bridge calls. The
approved command prefix is:
```bash
/media/p5/miniforge3/bin/python tools/sxcp_mcp_client.py
```
Common calls:
```bash
/media/p5/miniforge3/bin/python tools/sxcp_mcp_client.py list-tools
/media/p5/miniforge3/bin/python tools/sxcp_mcp_client.py call-tool comfy_pull --arguments-json '{"channel":"sxcp_eval_in"}'
/media/p5/miniforge3/bin/python tools/sxcp_mcp_client.py call-tool comfy_push --arguments-json '{"channel":"sxcp_eval_out","seed":5656565656,"text":"PROMPT_ONLY_POSITIVE_CONDITIONING"}'
```
For batched prompt-axis search, prepare a JSON batch and use the offline command
renderer before touching the bridge manually:
```bash
python tools/sxcp_prompt_batch.py validate --batch-json /tmp/sxcp-batch.json
python tools/sxcp_prompt_batch.py print-push-commands --batch-json /tmp/sxcp-batch.json
python tools/sxcp_prompt_batch.py print-result-template --batch-json /tmp/sxcp-batch.json
python tools/sxcp_prompt_batch.py run-batch --batch-json /tmp/sxcp-batch.json --result-json /tmp/sxcp-results.json --previous-turn 80 --run
python tools/sxcp_prompt_batch.py validate-results --batch-json /tmp/sxcp-batch.json --result-json /tmp/sxcp-results.json
python tools/sxcp_prompt_batch.py print-eval-entry-draft --batch-json /tmp/sxcp-batch.json --result-json /tmp/sxcp-results.json --variant-key pov_example_variant --baseline-image /absolute/baseline.png --candidate-id controlled_subject_first
```
Use `run-batch --run` for normal batch execution. It pushes one positive prompt,
polls `sxcp_eval_in` until the turn advances and an absolute PNG appears with
the fixed sampler seed, writes the filled result JSON, then sends the next
prompt. Omit `--run` for a dry-run command preview. Run `validate-results` after
the batch and before drafting evidence. It checks that every probe returned a
new ordered turn, an absolute PNG image path, and the same sampler seed as the
batch. This keeps batched prompt search as image-presence collection first and
bulk analysis second. The batch helper validates without stripping atlas
metadata such as cue axes, seed metadata, selection data, evidence, and stable
`matrix_evidence`.
Before drafting evidence, compare atlas references and generated images for
spatial orientation, not only limb/contact similarity. First decide the
atlas's surface and camera-height relationship, then check whether the
generated background supports the same read. Use the background as a
camera-height witness: ceiling, upper walls, and high partition lines usually
support a low viewer looking upward; floor, carpet, table tops, platform edges,
or furniture behind the body can reveal a higher camera, seated support, or a
different surface. If the atlas target has the viewer flat on his back or the
partner mounted over him, do not accept a candidate only because contact is
clear; the room geometry must also support that flat/low read. Reject the
candidate before generator mirroring when the background says the bodies are on
a different surface or at a different height than the atlas.
`print-eval-entry-draft` rejects `geometry_only` candidates by default. Use
`--allow-geometry-only` only when the entry is explicitly labeled as
non-controlled prompt-axis evidence rather than subject/look-controlled A/B
evidence.
Keep `sxcp_eval_out` prompt-only and positive-only. Do not use
`sxcp_eval_negative_out` for Krea2 tuning.
## Generator-Patch Evidence Matrix
Do prompt and image exploration before editing production generator wording. A
normal pose-wording generator patch needs all of this evidence first:
- at least three distinct source cases with different visible subjects;
- at least two sampler seeds, unless the source prompt is structurally wrong
before rendering;
- location-family coverage when the proposed wording changes scene anchors;
- one baseline and one candidate per source case, with subject, location family,
camera family, and sampler seed fixed inside each pair;
- positive-only candidate prompts, with no negative-conditioning phrases in the
positive prompt.
A generated-route probe that works before the full matrix is useful evidence.
If it is the best tested improvement when leaving the category, it can become a
`provisional_generator_patch` with final prompt regression coverage. It should
not become a proven `generator_patch` decision until the matrix repeats and the
final generated prompt is regression-tested.
## Hard-Pose Exploration Budget
Use this budget for atlas poses where early prompt-only results repeatedly miss
the core spatial read.
- Define the failure threshold before the run. The default threshold is about
fifty positive-only prompt tries across distinct wording axes before declaring
the pose text-insufficient or moving it to a stronger-control bucket.
- Run the search in batches, usually six to twelve prompts at a time. Send each
prompt through `sxcp_eval_out`, wait for the image path, then analyze the
batch together instead of overreacting to one render.
- Keep a short axis ledger for each batch: intended wording axis, seed, source
subject, best image, repeated failure mode, and words that literalized or
harmed the result.
- Treat a small failed batch as direction, not a conclusion. If a batch shows a
repeated failure such as head height, camera height, viewer/partner elevation,
or background-plane mismatch, the next batch should vary that axis directly.
- Stop early only for a strong positive result that is worth repeating on a
second source or seed, or for a hard technical blocker. A weak but improving
result should feed the next wording batch rather than ending the category.
- If the threshold run finds a repeatable partial that is materially better
than baseline, accept the partial target explicitly and mirror only that
generator-safe improvement. Keep the route candidate and mark the evidence as
needing expansion when the full atlas target is still unsolved.
## Current Fingering Test Pattern
The prior bedding-based fingering prompt is invalid as a general rule because
it solved a lower-foreground artifact by adding bedroom context to an office
scene. The corrected test pattern keeps the coworking location intact:
- baseline: generic POV fingering/manual-contact wording from the same source
case;
- candidate: foreground hand first, open-thigh geometry second, visible woman
face/torso third, office chair and coworking depth fourth;
- anchors: black office chair seat/arms, desk edge, laptop table corners, glass
partitions, repeated desk rows, plants, tall-window depth;
- rejection trigger: any result that fixes contact by changing the scene family
instead of improving the pose hierarchy.
## Improvement Log
- `2026-07-01`: Added large image-only atlas folders to the cue-expansion
method after inspecting the canonical
`/media/unraid/davinci/Qwen_edit_lora/POV/dataset_v2/blowjob_top_view`
folder and the 27-image supplemental raw pool at
`/media/unraid/davinci/Qwen_edit_lora/POV/dataset_v2/1.original/blowjob_top_view_1024`.
The curated folder remains the preferred `reference_images` source when a
matching frame exists; the supplemental pool defines extra allowed micro-axes
before sidecar authoring. Cue wording still needs fixed-seed generated
evidence before sidecar, catalog, or generator promotion.
- `2026-07-01`: Added atlas-22 image-to-prompt calibration for
`pov_blowjob_top_down_vertical_shaft` after manual renders
`/media/unraid/comfyui/output/sxcp_accumulator/bwave_2/img_00100_.png` and
`/media/unraid/comfyui/output/sxcp_accumulator/bwave_2/img_00101_.png`
produced the strongest verticality so far. The retained rule is not “remove
background”; it is floor/support-plane scene translation plus positive
upper-body-stack hierarchy. Viewer abdomen/thigh cues should remain lower-edge
anchors, while face, hair crown, shoulders, upper chest or neckline, and hand
carry the partner geometry. Keep phrases like `hips and ass stay visually
secondary` as human scoring notes, not final positive prompt text.
- `2026-07-01`: Corrected the top-view oral anchor after manual sidecar renders
`/media/unraid/comfyui/output/sxcp_accumulator/bwave_2/img_00135_.png`,
`/media/unraid/comfyui/output/sxcp_accumulator/bwave_2/img_00136_.png`,
`/media/unraid/comfyui/output/sxcp_accumulator/bwave_2/img_00137_.png`, and
`/media/unraid/comfyui/output/sxcp_accumulator/bwave_2/img_00139_.png`.
The strongest same-seed verticality came from making the centered shaft and
mouth contact the primary axis, then stacking the woman's face, hair crown,
shoulders, upper chest, and hand around it. Abdomen/thigh/feet wording belongs
after that as lower-frame evidence. Sparse floor-plane wording remains useful
because deep coworking-room tails fight the overhead angle.
- `2026-07-01`: Added exact-text reference cue candidates for order-sensitive
atlas tests. The reference cue review path can now carry
`prompt_variant_template.text` through candidate draft, sidecar authoring, and
prompt-batch export as `prompt_source.kind = text`. Use this for
shaft-first/top-view oral calibration and other cases where append-cues would
leave the older conflicting baseline hierarchy in front of the tested wording.
- `2026-07-01`: Added explicit sidecar prompt-variant batches for
same-subject atlas refine decks. `krea2_atlas_refine_manifest.py` now keeps
sidecar `prompt_variants` and can print an `sxcp_prompt_batch`-compatible
positive-only probe batch for one catalog `variant_key`. Cue text must come
from the sidecar as exact `text` or `append_cues`; the batch builder may
combine and preserve seed/cue metadata, but it must not create new pose
wording by itself.
- `2026-07-01`: Added atlas result-sheet generation after prompt batches return
images through the MCP loop. The sheet keeps batch/result order, sampler seed,
prompt text, image paths, cue axes, and unfilled score slots together so
visual analysis can be written against the exact generated artifacts before
sidecar promotion or generator patches.
- `2026-07-01`: Added conservative promotion reports for scored atlas result
sheets. Reports recover the sidecar prompt variant id, keep cue/seed metadata,
and classify candidates as `seedable_candidate`, `needs_visual_score`, or
`rejected` using preservation gates for pose ownership, workspace continuity,
clothing visibility, subject identity, and prompt noise. The report does not
auto-edit sidecars or generator wording.
- `2026-07-01`: Added sidecar update drafts for seedable atlas candidates. The
draft emits reviewable `prompt_variants` grouped by original same-stem sidecar
filename, uses only exact tested prompt text, and carries cue axes, seed
metadata, image evidence, and visual scores forward. It deliberately skips
rejected or unscored candidates and does not write sidecar files.
- `2026-07-01`: Added sidecar update draft validation before any sidecar edit.
The validator rejects drafts with missing cue-axis movement, missing image
evidence, failed preservation scores, duplicate prompt-variant ids, or
forbidden negative-conditioning fields, keeping sidecar promotion tied to
exact scored artifacts rather than hand-cleaned prompt text.
- `2026-07-01`: Added validation-first sidecar draft apply. The apply command
writes reviewed `prompt_variants` into same-stem sidecar JSON files, upserts
by variant id so repeated applies do not duplicate variants, and preserves
unrelated sidecar metadata.
- `2026-07-01`: Added applied-sidecar roundtrip evidence preservation. Manifest
scanning now keeps prompt-variant `evidence` from sidecars and generated
prompt batches carry that evidence forward, so a promoted seedable cue remains
tied to the exact tested prompt, image path, and visual score evidence after
it is written to the sidecar.
- `2026-07-01`: Added deterministic atlas cue-seed selection for applied
sidecar variants. `--print-seed-selection` chooses a stable prompt variant for
a seed slot such as `atlas_cue_seed`, but only from variants whose evidence
passes the seedable-candidate preservation gates. Unproven sidecar variants
are reported as ineligible so seed selection does not silently use weak cues.
- `2026-07-01`: Cue-seed selection now sorts eligible candidates by
`prompt_variant_id` before indexing by seed. Reordering sidecar JSON no longer
changes which alternate frame a given cue seed selects.
- `2026-07-01`: Manifest ingestion now rejects duplicate sidecar
`prompt_variants[].id` values before selection or batching, keeping cue-seed
identity and sidecar upserts unambiguous.
- `2026-07-01`: Manifest ingestion now also rejects sidecar variants whose
explicit `prompt_source.prompt_variant_id` does not match the enclosing
variant `id`, so provenance cannot point at a different cue.
- `2026-07-01`: Sidecar update validation now enforces the same
`prompt_source.prompt_variant_id` identity rule for normal and matrix drafts
before apply writes durable sidecar state.
- `2026-07-01`: Sidecar apply now also rejects ambiguous existing
`prompt_variants` lists before upsert, so apply cannot silently preserve or
rewrite duplicate prompt-variant ids.
- `2026-07-01`: Added seed-selected prompt batch export. The exporter turns a
deterministic cue-seed selection into an `sxcp_prompt_batch`-compatible JSON
with baseline plus the selected candidate only, preserving exact prompt text,
selected seed-slot metadata, and evidence provenance for MCP evaluation.
- `2026-07-01`: Prompt batches now stamp the actual render sampler seed into
every probe's `seed_metadata.sampler_seed`, including matrix jobs with sampler
overrides, while preserving the other seed slots as cue/provenance metadata.
- `2026-07-01`: Cue-selection seed slots now explicitly reject `sampler_seed`
in seed selection and matrix sidecar validation. The sampler seed remains the
render seed; cue, generator, micro-position, and workspace slots carry prompt
alternate provenance.
- `2026-07-01`: Added seed-matrix export for atlas alternates. The matrix builds
normal seed-selected batches for every sampler-seed / cue-seed pair, keeping
sampler stochasticity and `atlas_cue_seed` selection separate while preserving
exact selected prompt text and visual evidence in each job.
- `2026-07-01`: Added seed-matrix result sheets. Completed matrix jobs can now
be converted into one scoring artifact that preserves each job id, sampler
seed, cue seed, selected variant, exact prompt text, returned image path, and
empty score slots, while rejecting duplicate, missing, or extra matrix result
ids.
- `2026-07-01`: Added seed-matrix promotion reports. Scored matrix jobs are
aggregated with the same preservation gates as single-result promotion and
grouped by selected prompt variant plus cue seed, marking groups stable only
when every sampler seed passes. Promotion now rejects duplicate or missing
result-sheet job ids, duplicate declared sampler or cue seeds, jobs outside
declared sampler/cue seed sets, duplicate sampler jobs inside one cue group,
selected/candidate prompt-variant id mismatches, job-level seed-slot drift, and
variant/source-entry/stem drift before grouping stable evidence.
- `2026-07-01`: Added matrix sidecar update drafts for stable cue groups.
`--print-matrix-sidecar-update-draft` skips unstable groups and emits reviewed
sidecar prompt-variant updates with representative evidence plus full
`matrix_evidence` across passing sampler seeds. Stable groups now fail closed
if any referenced promotion-report job id is missing.
- `2026-07-01`: Added matrix sidecar validation and apply. Stable matrix drafts
now have `--validate-matrix-sidecar-update-draft` and
`--apply-matrix-sidecar-update-draft`, preserving full sampler/cue evidence
through idempotent sidecar upserts instead of relying on manual copy-paste.
- `2026-07-01`: Preserved seed-selection metadata through selected-batch result
sheets. After MCP returns images for a selected batch, the result sheet keeps
the sheet-level selection report and candidate-level selected prompt variant
id, preventing later visual scores from losing the cue seed that produced the
frame.
- `2026-07-01`: Propagated stable matrix evidence through seed selection,
selected-batch export, and selected-batch result sheets, so a matrix-proven
sidecar alternate keeps its cue seed, sampler seeds, job ids, image paths, and
score evidence attached during later single-frame retests.
- `2026-07-01`: Added a seed-selection gate for explicit unstable matrix
evidence. Legacy single-image variants remain selectable, but a variant that
carries `matrix_evidence` must have `stable: true` before it can enter the cue
seed pool.
- `2026-07-01`: Extended the same matrix-evidence gate to catalog cue drafts and
coverage. Stable matrix proof is preserved on generator-catalog cue candidates;
explicit unstable matrix evidence blocks catalog-review readiness.
- `2026-07-01`: Preserved stable matrix evidence through normal prompt-batch
exports and their result sheets, so regular all-variant retests keep the same
repeatability proof as seed-selected retests.
- `2026-07-01`: Made `tools/sxcp_prompt_batch.py` metadata-preserving when it
loads batches. Validation and runner paths keep atlas cue axes, seed metadata,
selection data, evidence, and stable matrix evidence available to downstream
scoring tools.
- `2026-07-01`: Preserved stable matrix evidence through normal promotion
reports and sidecar update drafts, preventing regular single-batch retests from
overwriting a matrix-proven sidecar variant with a metadata-poorer copy.
- `2026-07-01`: Blocked explicit unstable matrix evidence in normal promotion
reports. A result-sheet probe carrying `matrix_evidence.stable: false` is
rejected with `unstable_matrix_evidence` and skipped by sidecar update drafts.
- `2026-07-01`: Connected catalog atlas cue seeds to the generator node path.
`atlas_cue_seed` on Krea2 pose/filter nodes now records deterministic
`krea2_prompt_variant_indices` for explicit catalog `prompt_variant_cues`,
and prompt row assembly preserves those indices instead of overwriting them
with the broader pose seed. This makes catalog cue alternates reproducible as
same-scene frame changes while keeping sampler seed and cue seed separate.
- `2026-07-01`: Preserved append-cue provenance through atlas-refine promotion
and added a read-only catalog cue draft. Batch probes, result sheets,
promotion reports, and applied sidecars now keep `prompt_source`, so
`--print-catalog-cue-draft` can propose catalog `prompt_variant_cues` only
from scored seedable append-cue deltas instead of inventing alternates from a
full prompt.
- `2026-07-01`: Added an atlas-refine coverage report for live decks. The report
counts baseline-only entries, unscored sidecar variants, seedable candidates,
rejected variants, and catalog-cue-ready append-cue candidates, making the
next MCP/scoring action explicit before changing generator/catalog wording.
- `2026-07-01`: Added read-only sidecar scaffolds for baseline-only atlas
entries. `--print-sidecar-scaffold` emits same-stem sidecar filenames,
baseline metadata slots, source prompt hashes, and a blank prompt-variant
template so user-authored cue variants can be added without inventing wording
or writing files automatically.
- `2026-07-01`: Added a read-only baseline score sheet for same-subject atlas
decks. `--print-baseline-score-sheet` exports every baseline prompt/image
pair with score slots and score state, separating fully unscored baselines
from partially scored ones before sidecar variants or catalog cue alternates
are promoted.
- `2026-07-01`: Added validation-first baseline score sidecar updates.
Manually scored baseline sheets can now produce a baseline score update draft,
validate it, and apply top-level `score`, seed, cue-axis, prompt-hash, and
analysis-note metadata back into same-stem sidecars without carrying or
modifying `prompt_variants`. Partial baseline progress is preserved as
warning-level evidence instead of being promoted as a seedable alternate.
- `2026-07-01`: Added a read-only atlas prompt-noise report. The report scans
baseline prompts and sidecar prompt-variant text/cues for option-list words,
meta/policy instructions, leaked POV foreground cue labels, and
positive-channel negative-conditioning phrases before those prompts become
fixed-seed evidence.
- `2026-07-01`: Integrated prompt-noise findings into atlas coverage. A known
entry with noisy baseline or sidecar prompt text now reports
`needs_prompt_cleanup` before `baseline_only`, `needs_visual_score`, or
seed-selection states, so noisy prompts cannot silently advance as repeatable
seed/cue evidence.
- `2026-07-01`: Added a manual prompt-cleanup sheet for atlas prompt-noise
findings. `--print-prompt-cleanup-sheet` groups issues by editable source
text, points baseline issues to prompt files and sidecar issues to
same-stem JSON prompt variants, and leaves `replacement_text` blank so cleanup
remains human-reviewed rather than generated by the tooling.
- `2026-07-01`: Added validation-first prompt-cleanup apply. Filled cleanup
sheets can now be validated for nonblank/noise-free manual replacements and
applied to prompt files or targeted sidecar variant text/cues while preserving
unrelated sidecar metadata and rejecting drift.
- `2026-07-01`: Added `current_text_sha256` to prompt-cleanup sheet items and
validation. Manual cleanup artifacts now prove their editable source text was
not altered inside the sheet before replacement text is applied.
- `2026-07-01`: Added `source_prompt_sha256` to prompt-cleanup sheet items and
validation. Manual cleanup artifacts now stay tied to the exact atlas baseline
prompt identity used by batch, sidecar, and promotion evidence.
- `2026-07-01`: Seed matrices now reject duplicate sampler or cue seeds before
jobs are emitted, so stable matrix evidence cannot be inflated by repeated
copies of the same generated condition.
- `2026-07-01`: Seed-matrix promotion now requires each stable cue group to cover
every declared sampler seed. Edited or incomplete matrix result sheets report
`missing_sampler_coverage` instead of promoting partial evidence.
- `2026-07-01`: Stable matrix evidence now requires at least two unique sampler
seeds. One-sampler matrices remain inspectable but report
`insufficient_sampler_coverage`, and sidecar validation/draft generation reject
hand-edited stable evidence below that repeatability floor.
- `2026-07-01`: Matrix sidecar drafts now verify stable groups' declared
`sampler_seeds` against their referenced `job_ids`, so hand-edited promotion
reports cannot write sidecar evidence that claims unreferenced render seeds.
- `2026-07-01`: Matrix sidecar drafts now reject stable groups whose
`job_count`, `promotion_ready_count`, or `blocked_count` drift from their
referenced jobs, and emitted matrix evidence uses job-derived counts.
- `2026-07-01`: Matrix sidecar drafts now reject stable groups with duplicated
`job_ids`, so one returned matrix image cannot be counted as multiple
repeatability samples.
- `2026-07-01`: Matrix sidecar drafts now reject stable groups whose referenced
jobs drift from the group's selected prompt variant, cue seed, seed slot, pose
variant, or source sidecar identity.
- `2026-07-01`: Matrix sidecar validation now rejects duplicated
`matrix_evidence.jobs` ids and duplicated per-job sampler seeds, so a manually
edited sidecar draft cannot count one evidence row twice.
- `2026-07-01`: Matrix sidecar validation now rejects duplicated declared
`matrix_evidence.sampler_seeds`, keeping declared render-seed coverage aligned
with the unique matrix evidence rows.
- `2026-07-01`: Matrix sidecar validation now rejects cue seed drift between
`seed_metadata[matrix_evidence.seed_slot]` and
`matrix_evidence.selection_seed`.
- `2026-07-01`: Matrix sidecar validation now requires representative
single-image `evidence` to match the `matrix_evidence.jobs` row for its
sampler seed, keeping normal seed-selector compatibility evidence tied to the
matrix proof.
- `2026-07-01`: Downstream seed selection and catalog cue drafts now treat
malformed stable `matrix_evidence` as unstable, so `stable: true` alone cannot
reintroduce hand-edited matrix proof after sidecar rescan.
- `2026-07-01`: Downstream matrix evidence reuse now also requires
`seed_metadata[matrix_evidence.seed_slot]` to match
`matrix_evidence.selection_seed`, so cue-seed metadata drift cannot enter seed
selection after sidecar rescan.
- `2026-07-01`: Matrix sidecar validation and downstream stable-evidence reuse
now reject matrix evidence job rows whose `turn` is missing or not an integer.
- `2026-07-01`: Matrix sidecar validation now rejects representative
single-image `evidence.turn` values that are missing or not integers before
comparing them to matrix evidence rows.
- `2026-07-01`: Extended prompt-noise detection to exact repeated direct
phrases. Duplicate pose clauses now surface as `duplicate_phrase` cleanup
issues before they can be scored, promoted, or used for seed selection.
- `2026-07-01`: Added a promotion-time prompt-noise gate. Result-sheet
candidates carrying option/meta/negative/duplicate prompt noise are rejected
with `prompt_noise_issue` even when manual visual scores mark prompt noise as
pass.
- `2026-07-01`: Added same-subject atlas refine deck ingestion after
`/media/unraid/comfyui/output/CodexMCP-Atlas-Refine` was prepared with one
prompt/image pair per atlas variant for a stable subject. Future seed/cue
tuning should first build a manifest with
`tools/krea2_atlas_refine_manifest.py`, confirm every prompt/image pair maps
to a catalog `variant_key`, and use the manifest's seed slots to distinguish
sampler, generator, atlas-cue, micro-position, and workspace-surface changes.
This makes cue seeds behave like alternate frames from the same scene rather
than uncontrolled prompt drift.
- `2026-07-01`: Added explicit `--print-manifest` support to the atlas-refine
CLI. The default no-mode output still prints the manifest, but scripts and
notes can now request that artifact by name like the other report modes.
- `2026-07-01`: Added atlas detail-restore hygiene after side-profile oral
clothing restore preserved the shirt/bralette but emitted ownerless wording
and earlier leaked `POV foreground clothing cue` into strict atlas prompts.
Future atlas restores must audit the final Krea prompt, strip raw foreground
clothing/body cue clauses, keep restored clothing explicitly partner-owned,
and preserve partial-removal semantics without making hidden lower garments
visible. For side-profile oral body-line, use `the woman wears ...` for
visible clothes and keep lower garments `pulled aside out of frame` so the
adult male viewer's abdomen/navel/pelvis/near thigh remain the only
foreground body-owner cues.
- `2026-06-30`: Added side-camera/result-label separation after ballsucking
seed `5757575757` produced attractive low side-camera oral views while still
collapsing the requested contact object onto the shaft/glans. Future scoring
should record that as side-view oral evidence and keep target-contact evidence
separate.
- `2026-06-30`: Added generated-route validation discipline after footjob turn
`183` kept large foreground soles but hid the shaft/contact that manual probes
had preserved. Future provisional generator patches should render the exact
final Krea prompt once after the code change; if shared route wording adds
limiting positive-channel language, clean it before sending the validation
prompt.
- `2026-06-30`: Added a hard-pose exploration budget after ballsucking wording
tests produced only eight early probes before the first weak-case note. Future
hard text-only poses should use batched wording-axis search and aim for about
fifty positive-only tries before concluding the pose needs stronger control.
- `2026-06-30`: Added partial-acceptance discipline after ballsucking produced
repeatable tongue/lips-on-testicles results that beat the shaft/glans
baseline but did not fully solve mouth-wrapped contact. Future hard-pose exits
should preserve repeatable progress as a provisional generator patch while
keeping the remaining miss in the expansion queue.
- `2026-06-30`: Added ballsucking target-object refinement after sampler seed
`9797979797` repeated the `scrotal skin is the nearest mouth surface` branch
on turns `288` and `293`. Score target-object ownership separately from the
side-low camera family: a route can preserve face/thigh geometry while still
drifting to shaft/base contact. Avoid promoting balls-first center-object
wording when it creates multi-subject or body-layout artifacts.
- `2026-06-30`: Added ballsucking generated-route validation after sampler seed
`9898989898` repeated the patched scrotal-skin route on turns `296` and
`297`. Validation can accept a provisional target-object improvement while
still keeping the pose queued when the remaining miss is full mouth-wrapped
testicle contact.
- `2026-06-30`: Added ballsucking fresh weak-case evidence after sampler seed
`5959595959` tested lip-oval, sideways mouth pocket, and chin-pelvis upward
seal wording across three women. The batch preserved low-pelvis/cheek-thigh
geometry in places, but every branch returned to shaft/glans collapse or
generic oral contact. Do not retry those axes as generator defaults; the next
search should change the target-object control strategy rather than adding
more mouth-shape synonyms.
- `2026-06-30`: Added ballsucking occlusion weak-case evidence after sampler
seed `6060606060` tested foreground occlusion, under-scrotum tongue shelf,
and hand-guided scrotum wording across three women. The generated route
remained the best partial while those axes became shaft-centered or
hand/shaft-dominant. Do not retry occlusion or hand-support synonyms as
generator defaults; the next useful move is a different target-object strategy
or stronger control.
- `2026-06-30`: Added ballsucking mouth-axis mixed-case evidence after sampler
seed `6161616161` tested exact mouth-sucking, single-testicle, hanging balls
below shaft, side-mouth wrap, and chin-pelvis lower-mouth wording across
three women. The generated-route controls stayed the best repeated partials
on two subjects, side-mouth and chin-pelvis variants produced isolated useful
partials, and the rest drifted back to shaft/glans contact. Record isolated
partials as axis hints, but do not patch generator wording unless a branch
repeats across subjects or beats the generated-route controls.
- `2026-06-30`: Added ballsucking pelvis-valley weak-case evidence after
sampler seed `7171717171` tested flat pelvis-valley, thigh tunnel,
pubic-hair mouth-line, low-cushion chin-anchor, and pelvis-edge target-first
wording across three women. The flat pelvis-valley branch repeated a strong
body-plane correction on three subjects, matching the atlas viewer-flat
thigh-wall read better, but it stayed shaft-centered. Score body-plane
orientation and target-object contact separately; do not patch a route when
it improves orientation while regressing the target.
- `2026-06-30`: Stopped the ballsucking text-only loop after sampler seed
`7272727272` combined `flat-valley scrotal-skin` target wording with the
prior side-low route across three women. The hybrid repeated the body-plane
hint on turns `368`, `374`, and `380`, but the target stayed shaft-centered,
while side-low flat-valley variants only gave look hints. Preserve the
current side-low scrotal-skin partial, do not patch the hybrid axes, and move
future full-target work toward stronger pose/control evidence rather than
more positive-prompt synonyms.
- `2026-06-30`: Promoted blowjob side-profile POV after sampler seed
`5858585858` produced a three-woman generated-route repeat on turns `298`,
`301`, and `304`. When the current generated route repeats across multiple
subjects on a fresh seed and alternate branches do not beat it cleanly, mark
the route proven instead of continuing to queue it. Keep attractive
side-camera-style self-body crop results as a separate look branch when they
risk drifting toward external side framing.
- `2026-06-29`: Added the multisource/generator-safe method after an overfit
single-character coworking test produced a visually usable but invalid
bedding foreground. Future A/B runs must test at least two source cases before
promoting wording that is meant to become a durable guide or generator rule.
- `2026-06-29`: Added generator mirroring discipline after the accepted
fingering wording proved Krea2 behavior but not generator output. Future
mirroring changes need a red-green regression at final Krea formatter output,
not just a guide entry.
- `2026-06-29`: Tightened generator-patch promotion after the fingering
generated-route probe looked good but had too little image coverage. Future
pose-wording generator edits need a broader seed, subject, and location matrix
before production route code changes.
- `2026-06-29`: Added semantic-axis discipline after source 52 fingering tests.
If a candidate succeeds by changing ownership, viewpoint, location family, or
role semantics, record it as a weak-case or prompt note unless that semantic
change is the intended generator behavior. Do not count it as direct evidence
for the original route even when the image is visually cleaner.
- `2026-06-29`: Added provisional generator-patch discipline after the user
clarified that leaving a category should still carry forward same-seed progress
over baseline. Future category exits should patch the generator with the best
generator-safe improvement, record it as `provisional_generator_patch`, and
keep the catalog route as `candidate` until repeated evidence proves it.
- `2026-06-29`: Applied the category-exit rule to spread/open-thigh presentation
after two source subjects improved on the same sampler seed. For setup poses
that are not structurally broken before rendering, prefer at least two source
subjects before mirroring a provisional generator patch, and keep the
observation explicit about remaining weak points such as insufficient V-frame
width or outfit closure.
- `2026-06-29`: Applied the same category-exit rule to blowjob top-view after
two source subjects improved on sampler seed `4242424242`. When the baseline is already usable,
record the improvement narrowly: name the axis that got better, keep the route
candidate, and avoid overstating the finding as proven until another seed
repeats it.
- `2026-06-29`: Corrected blowjob top-view criteria after atlas review and a
same-seed source-`46` probe showed that vertical shaft alignment alone can
still render as frontal/eye-height oral. Future top-view evidence must show
steep overhead camera geometry: viewer abdomen at the lower edge, camera
looking down from above the viewer chest/abdomen, and the woman's hair crown,
shoulders, and hands visible from above.
- `2026-06-29`: Refined blowjob top-view prompt-axis search after the user
rejected horizontally biased probes. Run several prompt-only probes before
editing the generator, wait for `sxcp_eval_in` to advance to the new turn, and
compare each image against the atlas verticality criteria. The useful axis is
`nadir-angle` or `bird's-eye` plus standing male POV, nearby floor plane
dominating the image, the woman directly below between the viewer's feet, and
top-down office anchors. Avoid `plumb-line` and `map` in generator prompts
because Krea2 can literalize them as drawn graphics.
- `2026-06-29`: For quick wording-axis search, prefer a batched prompt-probe
loop before analysis-heavy iteration. Prepare several positive-only alternate
prompts that isolate likely wording axes, send them one at a time through
`sxcp_eval_out` with the same sampler seed, pull only until each new
`sxcp_eval_in` turn and image path exists, then inspect the returned images as
a batch. Use the bulk comparison to pick the best axis, identify literalized
or harmful words, and only then update the generator, guide, catalog, or eval
log.
- `2026-06-29`: Preserve prompt-order controls when testing anything beyond
rough pose-axis discovery. Prompts that start with pose geometry and omit or
move the subject/look block can reduce female-look adherence, so treat those
runs as geometry-only probes. Durable A/B prompts should keep the original
subject/look description first, then the pose hierarchy, then location and
style/background anchors, unless the test is explicitly about prompt-order
sensitivity.
- `2026-06-29`: Added result-validation discipline to the batched prompt helper.
After sending a batch, fill the result template from `sxcp_eval_in`, run
`validate-results`, and only then draft evidence. The validation step proves
each probe returned an ordered turn, an absolute PNG artifact, and the fixed
sampler seed before bulk analysis or log-entry drafting.
- `2026-06-29`: Added `run-batch` automation to the batched prompt helper. It
removes manual push/pull copy-paste from normal A/B runs while keeping the same
gates: positive-only prompts, fixed sampler seed, turn advancement, absolute
PNG image path, and `validate-results` before evidence drafting.
- `2026-06-29`: Split missionary subcases after turns `77`-`84`. Turns `76` and
`80` are valid angled/cushion missionary results, not failures. The flatter
atlas examples need a different positive axis: woman flat across an elevated
table/platform, viewer standing or braced at the foot edge, and viewer feet,
shins, or side-dropping legs placed below the support edge. Patch this only
into the raised-edge/edge-supported route; keep generic missionary available
for angled valid views.
- `2026-06-29`: Folded-missionary tuning on seed `8989898989` used two
subject-first batches before code changes. Turns `85`-`88` showed that
compact knee-block and vertical-thigh-column wording can produce the folded
high-leg geometry, but the shaft/contact disappears when knees and feet lead
the hierarchy. Turns `89`-`92` then tested contact-first variants; turn `89`
was accepted because it placed the viewer lower abdomen and large centered
shaft/contact before the compact folded-knee block. This confirms the
method: use the first batch to identify the failed axis, run a targeted
second batch, then mirror only the accepted generator-safe hierarchy as a
provisional patch.
- `2026-06-29`: Frontal cowgirl on seed `8989898989` used a baseline-plus-
variants batch instead of comparing against a previous category. Turn `93`
was a valid generic cowgirl baseline, so turn `95`'s wide horizontal thigh
bridge improvement became a prompt-guide rule rather than a generator patch.
When the baseline already hits the pose, record the useful atlas refinement
and leave the generator unchanged unless repeated evidence shows a systemic
weakness.
- `2026-06-29`: Cowgirl-alt on seed `8989898989` exposed a spatial-orientation
blind spot. Turns `97`-`100` had readable contact and squat-like knees, but
the background still read as a platform/high-camera setup. After rechecking
the atlas, turns `101`-`104` tested flat-supine viewer wording with ceiling
and upper-room cues; turn `104` was accepted. Future pose analysis must
compare atlas and generated room geometry before accepting an image.
- `2026-06-29`: Reverse cowgirl on seed `8989898989` showed that a correct
semantic label such as `facing away` can be ignored when the visual hierarchy
still resembles frontal cowgirl. Future back-facing straddle tests should
score facing direction before contact quality and should name the back, hips,
and ass as the nearest largest shapes before viewer-leg and contact details.
Treat over-shoulder glances as secondary refinements only after the
back-facing straddle is already locked.
- `2026-06-29`: Reverse-cowgirl-alt on seed `8989898989` confirmed that atlas
sibling folders can need separate generator routes even when the baseline is
already valid. Normal reverse cowgirl is close back/hip dominant; reverse-alt
is upright seated with vertical back/shoulders and viewer hands or thighs
forming the lower frame. Keep those prompt hierarchies separate instead of
merging all back-facing woman-on-top evidence into one route.
- `2026-06-29`: Added non-target-viewpoint discipline after blowjob side-profile
oral produced an attractive side-camera result on seed `5656565656`. If a
render is visually useful but reads as a different camera family, record it as
a weak case for a future route and do not mirror it into the current POV
generator path.
- `2026-06-29`: Added MCP command memory after repeated context loss around the
bridge workflow. Future A/B calls should use the checked helper command
`/media/p5/miniforge3/bin/python tools/sxcp_mcp_client.py ...`, with
`comfy_push` to `sxcp_eval_out` for prompt-only positive conditioning and
`comfy_pull` from `sxcp_eval_in` for returned prompt/image/seed payloads.
- `2026-06-29`: Added side-profile oral ownership discipline after source `46`
improved with explicit adult-male foreground ownership while source `47`
rejected a related `body-axis` cue by transferring the body surface to the
woman. Future side-profile tests should name the foreground owner repeatedly
and verify that the woman's body stays lateral before considering any
generator mirroring.
- `2026-06-30`: Promoted the side-profile oral lateral-edge body-line axis
after sampler seed `9753197531` repeated it across two visible women. Pure
male-body-axis wording can expose the male as a photographed subject or let
Krea2 transfer the central body surface away from the intended first-person
view. Future generator patches should combine adult-male foreground ownership
with explicit lateral entry from the left edge, mouth at the male abdomen
line, and hand under the lips; keep the route provisional until another
seed/source expansion repeats it.
- `2026-06-30`: Added side-profile oral generated-route contact validation
after turn `206` kept the male body-line geometry but let the mouth float
above the shaft while the hand became the contact anchor. Turn `207` improved
after adding lips-touching and mouth-to-shaft-contact priority. Future
generated-route validation for oral side-profile should score both viewpoint
ownership and which body part actually anchors the contact.
- `2026-06-30`: Added the side-profile oral lower-right torso anchor after
sampler seed `9595959595` repeated it on turns `279` and `283` across two
visible women. The useful wording makes the adult male viewer's own torso
start at the lower edge and run diagonally into the lower-right foreground,
with navel, abdomen hair, pelvis, and near thigh marking the camera owner's
body. Prefer this over generic body-axis wording, which can expose the male
as a photographed side subject or transfer the axis onto the woman.
- `2026-06-30`: Added side-profile oral generated-route validation after
sampler seed `9696969696` repeated the patched route on turns `284` and
`285`. Count generated-route validation separately from prompt-axis search:
it proves the formatter can carry the new wording, while promotion still
requires broader source/seed evidence.
- `2026-06-30`: Promoted normal frontal cowgirl from guide-only to provisional
generator patch after seed `2828282828` repeated the wide-thigh bridge axis
across two visible women. When the baseline is already valid, a generator
patch is still appropriate if a later seed repeats a narrow atlas refinement
that improves geometry without harming subject/look, contact, or setting.
Generated-route turn `216` validated the patched formatter route with viewer
hands on outer thighs, wide foreground thigh bridge, upright torso, centered
contact, and coworking depth. Keep the route candidate until another
source/seed repeats the refinement.
- `2026-06-29`: Applied the category-exit rule to blowjob laying frontal after
source `46` and source `50` improved on sampler seed `6767676767`. When
baselines are already strong, preserve the exact improved axis: wide V-frame and low-horizontal torso hierarchy, while noting residual high-hip posture and
keeping the generator patch provisional until another seed repeats it.
- `2026-06-29`: Applied the category-exit rule to blowjob sitting upright after
source `46` and source `50` improved on sampler seed `7878787878`. When a
baseline preserves the seated pose but floats the face above the contact
point, prefer low-mouth seated hierarchy over generic `mouth aligned` wording:
face lowered to the exact center contact point, open mouth covering the
centered tip, and hands directly at the base. Record outfit looseness/drift as
residual risk and keep the generator patch provisional until another seed
repeats it.