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

91 KiB

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:

/media/unraid/comfyui/output/CodexMCP-Atlas-Refine

Build a manifest before analysis:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

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:

/media/p5/miniforge3/bin/python tools/sxcp_mcp_client.py

Common calls:

/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:

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.